|
楼主 |
发表于 2014-5-23 02:34:38
|
显示全部楼层
用M051测量PWM,最正确、最简单、最好的就是用它的 PWM捕捉功能,用定时器0和外部中断不是正确的方法(就是用AVR或STC51也不能采用)。
下面是M051的一段说明,由于你的PWM波频率太高,所以用M051是不能实现的。
The maximum captured frequency that PWM can capture is confined by the capture interrupt latency. When capture interrupt occurred, software will do at least three steps, they are: Read PIIRx to get interrupt source and Read PWM_CRLx/PWM_CFLx(x=0 and 3) to get capture value and finally write 1 to clear PIIRx. If interrupt latency will take time T0 to finish, the capture signal mustn’t transition during this interval (T0). In this case, the maximum capture frequency will be 1/T0. For example:
HCLK = 50 MHz, PWM_CLK = 25 MHz, Interrupt latency is 900 ns
So the maximum capture frequency will is 1/900ns ≈ 1000 kHz
也就是说,M051测量PWM波的极限频率是1M, (1us) ,主要是执行中断服务的时间的限制。这种应用是考验工程师真正水平的,要考虑中断的最优化,执行时间最短,还要考虑系统作其它事情(计算、转换、显示等等)。一般的工程师就是采用PWM捕捉功能能实现精确测量100K的PWM波算不错的了。很多的童鞋从根本上还是基础知识不扎实,没有真正了解和掌握定时器的正确应用方法,就是有PWM捕捉功能也用不了,用不好。
非常好的一个题目,与我的“频率测量”的题目是同工异曲,是“频率测量”的扩展题目。建议有兴趣的讨论如何用MCU来测量PWM波。
|
|