求助: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);
}
百思不得姐,请大家帮忙。
中断程序中是否加ETIFR|=BIT(4);都是一样的
莫非是拿仿真器在调试?都是有钱的娃
1. M103模式是不是勾掉了;
2. 怎么得来“一直进中断”这个判断的?莫非是仿真器看到的?
断点时,定时器可能不会停的
3. ICCAVR v7.22 + AvrStudio v4.12 跑这个程序没问题, 就是用的仿真器啊。 103没有选,单步运行的时候一开总中断就跳到中断函数那里。 我用的iccavr7.22和avrstudio4.19 用 M128L + JTAGICE 试了一遍,贴出来的代码没有故障:0.5Hz 闪烁正常,中断断点也不是一直进(2s后再次进入)。
估计是其他的故障耦合过来的,比如断点太多了、数组溢出、意外修改 T/C3 配置等等 确实是其他故障造成的。
T/C0输出脉冲,CTC模式的,不需要中断,结果开了中断,由于TC0没有分频,所以一开总中断就进T/C0匹配中断。
但是T/C0中断没有写,就掉到T/C3A中断了
页:
[1]