仅使用一个计数器,以20%的占空比生成输出

时间:2018-03-12 16:38:30

标签: microcontroller avr pwm atmega16

如果我没有PWM模块,如何在引脚1上产生占空比输出(20%),在引脚2上输出占空比(80) 使用一个计数器并中断不轮询。

2 个答案:

答案 0 :(得分:3)

配置定时器以定期中断。定时器周期应为所需信号周期的1/100(或1/10或1/5)。增加计时器中断处理程序中的计数器。当计数器达到最大值100(或10或5)时,将计数器值重置为零。当计数器值达到最大计数器值的20%或80%时,切换相应的引脚。并在计数器值复位为0时切换引脚。

答案 1 :(得分:0)

如果您有AVR,并且可以选择引脚,则可以在没有中断的情况下获得此行为。您只需配置其中一个定时器即可在比较模式下使用计时和清除定时器。您可以设置哪个寄存器是比较时的清零定时器,以及COMPA和COMPB寄存器的波形生成模式。我建议使用ICR作为时基(通过比较寄存器清零),然后使用两个COMP寄存器生成波形,方法是将WGM位置1以清除复位时的输出,并设置比较匹配时的输出。然后,您可以将COMPn寄存器设置为ICR寄存器的任何部分,以在OCxn引脚上实现所需的任何占空比。