16位的定时器,设置定时器计数模式位MC为10 continuous mode,连续计数到0xFFFF
那我在某两次捕获到信号(同上升或同下降沿)之间,怎么算这个脉冲的周期?
比如第一次捕获时计数值为T1=0xFF00,然后计数到0xFFFF再重新计数,第二次捕获的计数值为T2=0x00FF,比第一次捕获的值小,
那要怎么相减得到间隔?多加一个0xFFFF再减?间隔=T2+0xFFFF-T1?那中间定时器计数重置多次,计数过了很多个0xFFFF呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
16位的定时器,设置定时器计数模式位MC为10 continuous mode,连续计数到0xFFFF
那我在某两次捕获到信号(同上升或同下降沿)之间,怎么算这个脉冲的周期?
比如第一次捕获时计数值为T1=0xFF00,然后计数到0xFFFF再重新计数,第二次捕获的计数值为T2=0x00FF,比第一次捕获的值小,
那要怎么相减得到间隔?多加一个0xFFFF再减?间隔=T2+0xFFFF-T1?那中间定时器计数重置多次,计数过了很多个0xFFFF呢?
您好:
这个问题可以这样解决,您可以参考一下:
以MSP430FR2XX4XX系列为例:
同时开启捕获中断(CCIE)和溢出中断(TAIE).如果您使用的捕获通道为CH1(CH0和TAIE处于不同中断中,CH1和TAIE处于同一中断中),进入中断服务程序后先查看TAIV的值判断是溢出中断还是捕获中断,如果是捕获中断要定义一个变量来标识是脉冲的开始还是脉冲的结束,如何是脉冲的开始要几下此时TAxCCR1中的值假如为x1,如果是在脉冲开始后出现溢出中断要设一个变量计算在下次捕获来临之前经历的所有溢出事件n次,如果捕获到脉冲结束信号记下此时的TAxCCR1中的值x2,然后既可以计算出脉冲的周期了T=(x2-x1+0xffff*n)*(1/定时器时钟频率).
希望可以帮助到您,感谢您的评价。