测频率作为免抄表系统的一部分,实现水表用水量的监测。今天的代码实现对转速传感器送来PWM信号的频率进行测量。而频率与水管中水速成正比,加上已知的水管直径,便可知当前用户用水水速及总用水量。
如图,这是在CCS下仿真时捕获到的值:
程序运行的过程是:将定时器的捕获模式等相关寄存器配置完后,开启定时器为连续计数模式,进入
LMP0且开启总中断,当PWM信号的上升沿到来时被定时器捕获,并记下当前定时器计数值,比较前后两
次上升沿到来的计数值之差便可以计算出被捕获的频率值(前提是知道自己设置的定时器时钟频率)。捕
获20次上升沿信号之后,MCU进入死循环反复点亮LED2
但是,对于水表来说,水速为0(即没有PWM信号时),水表应该是深度睡眠状态,需要通过外部中断唤醒,之后才
启动定时器,这样可进一步降低功耗,由于这部分代码不难,就只提供上面捕获PWM的代码了。
本文来自论坛,点击查看完整帖子内容。