huangxiaolpbany 发表于 2017-7-23 22:35:57

求助:MEGA128不停进T/C3中断

T/C3用作指示灯,1s闪一次。
初始化如下:
   //Run Flag
        //T=14745600/(2*1024*(14399+1))=0.5Hz
   TCCR3A=0x00;
        TCCR3B=0X0D;
        TCCR3C=0x00;
        OCR3A=0x383F;//14399
   ETIMSK|=BIT(4);               
       

   
   SREG|=BIT(7);

一旦执行完开总中断后,不停进入中断程序
中断程序定义:
#pragma interrupt_handler Tim3CompA1s:27

中断程序:
void Tim3CompA1s()
{       
   ETIFR|=BIT(4);
   if(homing_step1)
        {
           homing_cycle++;
                if(homing_cycle==Home_Cycle_Time)
                {
                   homing_step1=0;
                }
        }
        PORTA^=BIT(4);
}

百思不得姐,请大家帮忙。

huangxiaolpbany 发表于 2017-7-23 22:38:53

中断程序中是否加ETIFR|=BIT(4);都是一样的

t3486784401 发表于 2017-7-24 00:48:08

莫非是拿仿真器在调试?都是有钱的娃

1. M103模式是不是勾掉了;

2. 怎么得来“一直进中断”这个判断的?莫非是仿真器看到的?
断点时,定时器可能不会停的

3. ICCAVR v7.22 + AvrStudio v4.12 跑这个程序没问题,

huangxiaolpbany 发表于 2017-7-24 05:41:15

就是用的仿真器啊。

huangxiaolpbany 发表于 2017-7-24 05:42:27

103没有选,单步运行的时候一开总中断就跳到中断函数那里。

huangxiaolpbany 发表于 2017-7-24 08:38:34

我用的iccavr7.22和avrstudio4.19

t3486784401 发表于 2017-7-24 16:36:03

用 M128L + JTAGICE 试了一遍,贴出来的代码没有故障:0.5Hz 闪烁正常,中断断点也不是一直进(2s后再次进入)。

估计是其他的故障耦合过来的,比如断点太多了、数组溢出、意外修改 T/C3 配置等等

huangxiaolpbany 发表于 2017-7-25 19:49:00

确实是其他故障造成的。
T/C0输出脉冲,CTC模式的,不需要中断,结果开了中断,由于TC0没有分频,所以一开总中断就进T/C0匹配中断。
但是T/C0中断没有写,就掉到T/C3A中断了
页: [1]
查看完整版本: 求助:MEGA128不停进T/C3中断