我很难理解输入捕获的概念,以及如何编写一个简单的代码来测量转速表的PWM,例如通过AVR中的输入捕获和定时器……
发布于 2016-07-04 05:36:49
输入捕获只是给外部事件一个时间戳。对于PWM,这些事件是上升沿和下降沿。
启用后,ATMEGA的计时器开始随时钟递增。无论何时发生事件,它都会将该时刻的定时器值复制到输入捕获寄存器,并产生一个中断。在中断服务例程中,您的程序应该读取此寄存器并解释这些值,以计算占空比或其他值。
在此ISR中,您还必须重新配置定时器寄存器以查找备用边沿,因为PWM具有交替边沿。我给出了一个粗略的ATMEGA16L寄存器配置,您可以在数据表中找到完整的详细信息。
TCCR1B - bit6设置为上升,重置为下降。必须在ISR中切换
TCCR1B -用于设置时钟预分频器的位0、1、2
TIMSK - bit5启用输入捕获中断
TIMSK -计算所需的bit0定时器溢出中断启用
https://stackoverflow.com/questions/38168926
复制相似问题