这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [求助]8260的IRQ3中断问题

共3条 1/1 1 跳转至

[求助]8260的IRQ3中断问题

菜鸟
2006-12-16 17:10:46     打赏

8260的irq3上拉接高电平,此脚接一个开关到地,当按开关按地时,怎么进不了中断呀?我用提下降沿触发。

程序如下:

void Irq3InterruptSeverWork(void)
{
UINT32 immrVal;// = vxImmrGet();
immrVal = vxImmrGet();

intDisable((int)(VOIDFUNCPTR *)21);//关闭
*M8260_SIPNR_H(immrVal) |= (0x00001000);/*写1清中断标示,19位 清中断标示, 0在前,31在后面*/
logMsg("irq3 sever works\n", 0,0,0,0,0,0,0,0,0,0);
intEnable((int)(VOIDFUNCPTR *)21);
return;
}

void Irq3InterruptSeverInit(void)
{
UINT32 uiIntVec;
UINT32 immrVal = vxImmrGet();
int temp;
intDisable((int)(VOIDFUNCPTR *)21);//中断向量21 先屏蔽
/* irq3相关的设置 */
*M8260_SIEXR(immrVal) |= (0x00001000);/*19位 EDI3设置成1,表示 电平从高到底时,下降沿触发 0在前,31在后面*/
/*M8260_SIUMCR(immrVal) 45位清0,表示 DBB/IRQ3 PIN 使用 IRQ3,在syslib.c中可以实现*/
*M8260_SIPNR_H(immrVal) |= (0x00001000);/*写1清中断标示,19位 清中断标示, 0在前,31在后面*/

uiIntVec=(UINT32)(INUM_TO_IVEC(21));
if(intConnect((VOIDFUNCPTR *)uiIntVec,Irq3InterruptSeverWork,NULL)==ERROR)//和中断服务程序挂钩
{
printf("connect interrupt error!\n");
}

*M8260_SIMR_H(immrVal) |= (0x00001000);/*19位 mask irq33设置成1,表示此中断使能,可以使用, 0在前,31在后面*/
//这里要关闭中断寄存器

//中断 开启
logMsg("irq3 init \n", 0,0,0,0,0,0,0,0,0,0);
intEnable((int)(VOIDFUNCPTR *)21);

return;
}

请各位帮我看一下,谢谢!

[align=right][color=#000066][此贴子已经被作者于2006-12-16 9:11:26编辑过][/color][/align]



关键词: 求助     中断     问题    

菜鸟
2006-12-19 21:08:00     打赏
2楼
先检测8260的irq3上的是否确有下降沿发生。开启中断应放在调用Irq3InterruptSeverWork之前吧。建议用电平触发。下降沿有时会因时序控制不好而检测不到。

菜鸟
2006-12-20 21:34:00     打赏
3楼
电平触发试过了,也不行,我换成了irq5,改了上面程序相应 的位设置,就可以了,我怀疑是pcb板有问题,irq3没有引出来。现在用irq5就完全正常了。

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]