NIOS 外部中断问题?
我调节触摸屏时,把IO设成IN 电平中断 。调试时显示 context 值为0但注_册成功,断电后5S 再上电,可以进入一次中断,但只能是一次.以后就挂了,是什么原因. 清除标志位? 进入中断后,就在这循环,哪里错了?这个是下降沿中断。 用电平中断现象也差不多。//*******************************************************/
// 功 能:触摸屏中断服务
//*******************************************************/
void IRQ_touchpanel(void* context, alt_u32 id)
{
delayms(100);
IRQC=IRQC+1;
startADS7843(); //启动SPI
WriteADS7843(0x90); //送控制字 10010000 即用差分方式读X坐
wait(10);
IOWR_ALTERA_AVALON_PIO_DATA(TDCLK_BASE,1);//DCLK=1;
wait(10);
IOWR_ALTERA_AVALON_PIO_DATA(TDCLK_BASE,0);//DCLK=0;
wait(10);
XP=ReadADS7843();
WriteADS7843(0xD0); //送控制字 11010000 即用差分方式读Y坐
wait(10);
IOWR_ALTERA_AVALON_PIO_DATA(TDCLK_BASE,1);//DCLK=1;
wait(10);
IOWR_ALTERA_AVALON_PIO_DATA(TDCLK_BASE,0);//DCLK=0;
wait(10);
YP=ReadADS7843();
IOWR_ALTERA_AVALON_PIO_DATA(TCS_BASE,1);//开ADS7843片选
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(TPENIRQ_IRQ, 0x00); // 清中断捕获寄存器
while(IORD(TPENIRQ_BASE,0)==0);
GUI_printf8_8(4,50,0,COLOR_SILVERY,0," IRQC=%08d\n",IRQC);//显示中断次数
}
/*******************************************************/
//中断注_册
/*******************************************************/
void IRQ_init(void)
{
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(TPENIRQ_BASE, 1); //开启触摸屏的中断
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(TPENIRQ_IRQ, 0); // 清中断捕获寄存器
alt_irq_register(TPENIRQ_IRQ, NULL, IRQ_touchpanel);//注_册中断服务子程序
} 我已经调好了,过几天我博文分享。 mark mark 回复【2楼】40130064
-----------------------------------------------------------------------
楼主你好,我也有同样的问题,不知道你是怎样解决的?? 回复【5楼】chun2495 宙斯
-----------------------------------------------------------------------
不知道mark是什么意思啊? mark 学习 博客在哪儿 IOWR_ALTERA_AVALON_PIO_DATA(TCS_BASE,1);//开ADS7843片选
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(TPENIRQ_IRQ, 0x00); // 清中断捕获寄存器
while(IORD(TPENIRQ_BASE,0)==0);
GUI_printf8_8(4,50,0,COLOR_SILVERY,0," IRQC=%08d\n",IRQC);//显示中断次数
是不是printf, 还是IOWR_ALTERA_AVALON_PIO_EDGE_CAP(TPENIRQ_IRQ, 0x01);
页:
[1]