电工基础

电工基础知识_电工技术-电工最常见电路

普通的IO口为什么可以模拟PWM信号

时间:2019-08-17 15:57来源:未知 作者:admin 点击:
通过单片机定时器中断实现软件模拟而非硬件模块实现的pwm。 具体的流程如下: 1.根据产品功能分析需要的pwm功能的频率,以及占空比可以调节的档位数。 比如对led进行调光,为了让人

通过单片机定时器中断实现软件模拟而非硬件模块实现的pwm。

具体的流程如下:

1.根据产品功能分析需要的pwm功能的频率,以及占空比可以调节的档位数。

比如对led进行调光,为了让人眼不感觉到闪烁,我们选择100Hz的频率,根据功能我们要提供10档的亮度调节。

2.根据公式pwm/档位数得到定时器的中断频率,以1中提到的例子,定时器中断周期=1/100/10s=1ms。

3.将定时器的中断周期设置为2所计算出的周期,定义两个全局变量,一个对中断次数进行计数。

在定时器中断中,计算变量a++,当变量大于等于档位数时,变量a清零,同时io口置高,当变量a大于变量b时,io口置低。

需要注意的是,输出的占空比会抖动,原因是程序中断保护现场花费的时间每次进出中断都有偏差,主程序为了做变量访问互斥可能会关闭中断,这里也会导致偏差,另外当有多个中断时,特别是同级以及更高优先级的中断不能打断,当定时器中断到来时,必须要等待其他同优先级正在执行的中断执行完成,也会导致偏差。

所以必须计算所有这些导致的偏差,特别要注意要把所有同优先级以及更高优先级的中断的执行时间,评估总的偏差是否会影响功能,比如led会不会闪烁。

(责任编辑:admin)
织梦二维码生成器
相关文章
------分隔线----------------------------