AVR单片机中,如果不用PWM,那么如果控制定时器输出一个脉冲和一串脉冲,怎么控制定时器输出脉冲的频率。
是不是产生中断的频率越高,定时器发脉冲的频率也就高呢?那么当比较匹配后是自动切换电平呢,还是必须由软件来改变电平...
是不是产生中断的频率越高,定时器发脉冲的频率也就高呢?
那么当比较匹配后是自动切换电平呢,还是必须由软件来改变电平 展开
那么当比较匹配后是自动切换电平呢,还是必须由软件来改变电平 展开
3个回答
展开全部
1.当定时中断到来时,可以对某个I/O进行置位或者清零来达到输出脉冲的目的。
如:
10ms的定时中断,当第一次中断来时,在PA0上输出高电平;
第二次中断时,在PA0上输出低电平;
这样就可以输出频率一定,占空比也一定的脉冲串或者单片脉冲(如检测某个状态,当符合时,才输出高/低电平)。
我们可以看到,这样做可能很麻烦,特别是在占空比或者周期要时刻改变的情况下,就更复杂了,要不断的去检测某些状态值,再根据这些值去进行相应的设置。
如果使用PWM,如快速PWM模式,就能很方便的进行更改周期和占空比。
选用哪种方式,当然要看具体实现什么目的了。
2.对于产生中断的频率越高,脉冲频率也会相应的增高(特殊情况除外)。
3.这里以快速PWM模式为例说明:
在模式14的条件下,即WGM13:0=1110,其输入捕捉寄存器当做为TOP值(即当TCNT1的值和此值一样时,则TCNT1返回到0x0000)。比较寄存器用于改变占空比,当TCNT1与此值比较匹配时,则输出引脚上电平发生跳变,达到改变占空比的目的。
改变TOP 就会改变频率,改变比较匹配值,则改变占空比。
补充回答:
1.定时器每次溢出后,其值返回到0x00(8位定时器),所以,如果你的初值不是0x00,就必须由软件重新赋初值。
2.在PWM模式下与我们所用定时器是不一样的,比较匹配后,根据设置来对输出电平进行切换。对于捕捉值,只是定时计数寄存器计数到此值时,则返回到0x0000,即使此时还没有到0xFFFF(捕捉值小于0xFFFF)。
意思是说,这个可以不用手动设置初值,但是如果你想改变周期或者占空比什么的,就得改变这些值了。
以上说明都是以快速PWM为例进行说明的,其它方式可能不一样。
设置好后,由硬件自动切换,不需软件来操作。
如:
10ms的定时中断,当第一次中断来时,在PA0上输出高电平;
第二次中断时,在PA0上输出低电平;
这样就可以输出频率一定,占空比也一定的脉冲串或者单片脉冲(如检测某个状态,当符合时,才输出高/低电平)。
我们可以看到,这样做可能很麻烦,特别是在占空比或者周期要时刻改变的情况下,就更复杂了,要不断的去检测某些状态值,再根据这些值去进行相应的设置。
如果使用PWM,如快速PWM模式,就能很方便的进行更改周期和占空比。
选用哪种方式,当然要看具体实现什么目的了。
2.对于产生中断的频率越高,脉冲频率也会相应的增高(特殊情况除外)。
3.这里以快速PWM模式为例说明:
在模式14的条件下,即WGM13:0=1110,其输入捕捉寄存器当做为TOP值(即当TCNT1的值和此值一样时,则TCNT1返回到0x0000)。比较寄存器用于改变占空比,当TCNT1与此值比较匹配时,则输出引脚上电平发生跳变,达到改变占空比的目的。
改变TOP 就会改变频率,改变比较匹配值,则改变占空比。
补充回答:
1.定时器每次溢出后,其值返回到0x00(8位定时器),所以,如果你的初值不是0x00,就必须由软件重新赋初值。
2.在PWM模式下与我们所用定时器是不一样的,比较匹配后,根据设置来对输出电平进行切换。对于捕捉值,只是定时计数寄存器计数到此值时,则返回到0x0000,即使此时还没有到0xFFFF(捕捉值小于0xFFFF)。
意思是说,这个可以不用手动设置初值,但是如果你想改变周期或者占空比什么的,就得改变这些值了。
以上说明都是以快速PWM为例进行说明的,其它方式可能不一样。
设置好后,由硬件自动切换,不需软件来操作。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询