第一次上论坛能够得到回复,很高兴!
我不知道你用的是何种单片机,我喜欢用PIC和C8051,但我想原理是一样的.一般在单片机中会有所谓的输入捕捉功能,它有一个自由运行的定时器和一个同样宽度的寄存器,在输入脉冲的跳变沿触发下,会将此时定时器中的计数值"瞬时"保存到上述的那个寄存器中.那么我们在用输入捕捉功能测量PWM正脉宽时,首先会设定用正跳沿触发中断,在此ISR中用一个变量保存寄存器中的值v_p,然后设定为负跳沿;接着当PWM信号为下跳沿触发中断时,在此ISR中用另一个变量保存寄存器中的值v_n,则pulse_width = v_n - v_p,然后又设定为正跳沿触发中断即可.当然,也可在没有正负跳变沿选择时,在跳变引发的ISR中读取PWM脉冲高低电平做判断即可,一样的.
注意:
1.PWM脉冲宽度一般在20ms左右,要注意定时器的最大计时范围.
2.可以加入一个简单的抗干扰功能于程序中.
这样解释不知可不可以,若有错误,请一定告之,共同学习,让我们在有一个共同爱好的地方能得解惑,能有提高! |