[AVR单片机] 将ATMEGA128的定时器1TCNT1软件清零,PWM输出异常。。。。

[复制链接]
 楼主| hm_315 发表于 2014-8-29 11:38 | 显示全部楼层 |阅读模式
本帖最后由 hm_315 于 2014-8-29 12:03 编辑

如题,由于设计需要,在外部中断3的中断服务程序中,我会将定时器1的技术器TCNT1清零,实现简单的锁相功能。

定时器1初始化:
上升沿匹配置位,下降沿匹配清零;
选择为相位和频率修正模式,TOP值由ICR指定;
但是定时器1的所有中断都没有使能!
  1. void PWM_Init(void)
  2. {
  3.     //端口输出在上升匹配时置位,在下降匹配时清零
  4.     //同时配合TCCR1B选择工作方式为相频修正PWM,TOP值由ICR1指定。
  5.     //OCR1A/B/C值在BOTTOM时更新,TOV溢出在BOTTOM处
  6.    
  7.     TCCR1A=0xFC;    //1111 1100
  8.     //无预分频,配合TCCR1B选择工作方式为相频修正PWM。
  9.     TCCR1B=0x11;    //0001 0001
  10.     TCCR1C=0x00;
  11.     TCNT1=0x0000;
  12.    

  13.     TIMSK=0x00;
  14.     ETIMSK=0x00;
  15.    
  16.     ICR1=1000;
  17. }

外部中断3的中断服务函数(上升沿):
  1. ISR(SIG_INTERRUPT3)
  2. {
  3.     uchar sreg;                                                                              //保存全局中断寄存器
  4.     sreg=SREG;

  5.      TCNT1=0x0000;
  6.       
  7.     SREG=sreg;                                                                                            //还原全局中断寄存器
  8. }

但是这时就出现了问题,只要外部中断工作,将TCNT1清零,定时器T1的输出引脚上(OC1A/OC1B/OC1C)上就会出现波形(T1所有中断都没有使能,连中断函数都没有写!),波形的时间也为时间中断时间,这里是125us。。。。

很奇怪啊,大家有没有遇到这样的问题呢?求解啊
 楼主| hm_315 发表于 2014-8-29 12:03 | 显示全部楼层
@airwill    版主求解。。。
wangch_sh 发表于 2014-8-29 13:22 | 显示全部楼层
PWM波用到定时器1了吧?
 楼主| hm_315 发表于 2014-8-29 15:12 | 显示全部楼层
wangch_sh 发表于 2014-8-29 13:22
PWM波用到定时器1了吧?

恩,是的,PWM用到了定时器1。定时器1的设置如上面所述的代码所示。我上电就初始化定时器1,但是整个程序都没有响应定时器的中断(下溢中断、匹配中断等),但是它的那个计数器TCNT1是一直在递增然后递减。我期待的功能是在我外面的中断响应时,则将定时器1的计数器TCNT1置零,那么发出的PWM波就和外部同步。然后后面就遇到上面的问题。
airwill 发表于 2014-8-29 19:37 | 显示全部楼层
所以啊, 我很不建议随意在软件中修改 TCNT, 以及禁止定时器的操作.
因为多次在一些单片机中发现, 这类操作会触发一些奇怪的中断或标志. 而且这些特性往往手册没有说清楚.

比如仅仅提到, 初始化定时器后, 要清除一次中断标志, 再开启中断允许位, 至于什么原因导致的, 却没有描述.
 楼主| hm_315 发表于 2014-9-1 09:23 | 显示全部楼层
airwill 发表于 2014-8-29 19:37
所以啊, 我很不建议随意在软件中修改 TCNT, 以及禁止定时器的操作.
因为多次在一些单片机中发现, 这类操作 ...

哦,原来单片机还有这样的问题,真是始料未及啊。。
我按照你第3段的提示,就是先关中断,清标志位,使能中断,还是依旧出现问题。
今天我尝试下,将PWM的生成方式改为“在TOP中断更新,在BOTTOM中断下溢中断”,暂时还没有出现之前的问题。不知道后面的工作能不能行,但是还是谢谢版主了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

35

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

10

主题

35

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部