[AVR单片机] GCCAVR无法进入定时中断

[复制链接]
3278|3
 楼主| sdu_yqc 发表于 2011-8-5 15:14 | 显示全部楼层 |阅读模式
不知道为什么进入不了溢出中断,中断也打开了,经试验发现,中断标志也被置1了,但是就是没执行溢出中断子程序。为什么呢?
  1. void timer1_init()
  2. {
  3.     TCCR1A = 0x00;
  4. TCCR1B=_BV(ICNC1)|_BV(ICES1);  //输入捕获噪音消除,上升沿触发捕获
  5. TCCR1B|=0X04;  //256分频
  6.         TCNT1H=0X0B;//定时1s
  7.         TCNT1L=0XDB;
  8. TIMSK=_BV(TICIE1)|_BV(TOIE1);  //输入捕获、溢出中断使能
  9.         SREG|=0X80; //sei();
  10. }

  11. void main()
  12. {
  13.         uchar i;
  14.         DDRA=0XFF;PORTA=0X00;
  15.         DDRB=0XF0;PORTB=0XF0;
  16.         timer1_init();
  17.         ACSR=_BV(ACIC);  //比较器初始化,输入捕获使能
  18.         while(1)
  19.         {
  20.             if(a!=0)
  21.                 {
  22.                 a=0;
  23.                 for(i=4;i>0;i--)
  24.                 {
  25.                 Display_Buffer[i-1]=f%10;
  26.                     f/=10;
  27.                 }
  28.                 Show_FRQ_ON_DSY();
  29.                 }
  30.         }               
  31. }

  32. ISR(TIMER1_CAPT_vect)
  33. {
  34.     freq++;
  35. }

  36. ISR(TIMER1_OVF_vect)
  37. {
  38.     TCNT1H=0X0B;
  39.         TCNT1L=0XDB;
  40. f=freq;
  41.         a=1;
  42.         freq=0;
  43. }
 楼主| sdu_yqc 发表于 2011-8-18 20:22 | 显示全部楼层
捕获中断改为比较器中断,测量信号频率问题解决。。
qin552011373 发表于 2011-8-22 14:02 | 显示全部楼层
学习了
jamin.x 发表于 2011-9-28 16:29 | 显示全部楼层
你用输入捕获中断,那么输入捕获源了? 你用模拟比较器又是怎么让它一直不断进入比较中断的了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

140

帖子

1

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