FPGA通过SRIO的门铃通知6678进行中断处理,出现的问题是:如果相邻门铃之间的时间间隔较大,则6678能够进入门铃中断,如果相邻门铃之间的时间时间较小(大约600us),则6678不能进入门铃中断。请问,门铃间隔不变的前提下(大约600us),如何让6678能够响应门铃中断?
Shine:
请问中断函数处理占用时间是多少?中断断服务程序占用时间较长的话,在Doorbell间隔比较小的情况下会造成doorbell丢包。避免在中断服务程序用用printf这些打印语句。
user1212849:
回复 Shine:
中断处理函数的就是清除中断标志,其他什么都没有做。我用INTST_16–23,没有用0-15
user1212849:
利用论坛中提供的例程K1_STK_v1.1,实现FPGA发送门铃给6678。如果门铃的间隔为600us,则6678不能够进入门铃中断,如果间隔为50ms,6678能够进入门铃中断。门铃中断服务程序中,只进行了清门铃中断标志。
doorbell= gpSRIO_regs->DOORBELL_ICSR_ICCR[1].RIO_DOORBELL_ICSR;
//clear doorbell interrupt gpSRIO_regs->DOORBELL_ICSR_ICCR[1].RIO_DOORBELL_ICCR= doorbell;
后来发现一个文章说可以设置RIO_INTDST_RATE_CNT,我在程序中修改了RIO_INTDST_RATE使能寄存器和RIO_INTDST_RATE_CNT=0,
/*enable interrupt rate control*/ gpSRIO_regs->RIO_INTDST_RATE_DIS= 0x0; for(i= 0; i< 16; i++) { gpSRIO_regs->RIO_INTDST_RATE_CNT[i]= 0; },
并且在中断服务程序中也对RIO_INTDST_RATE_CNT进行重新赋值,现象还是同上。
求助大家帮忙分析一下。
user1212849:
利用论坛中提供的例程K1_STK_v1.1,实现FPGA发送门铃给6678。如果门铃的间隔为600us,则6678不能够进入门铃中断,如果间隔为50ms,6678能够进入门铃中断。门铃中断服务程序中,只进行了清门铃中断标志。
doorbell= gpSRIO_regs->DOORBELL_ICSR_ICCR[1].RIO_DOORBELL_ICSR;
//clear doorbell interruptgpSRIO_regs->DOORBELL_ICSR_ICCR[1].RIO_DOORBELL_ICCR= doorbell;
后来发现一个文章说可以设置RIO_INTDST_RATE_CNT,我在程序中修改了RIO_INTDST_RATE使能寄存器和RIO_INTDST_RATE_CNT=0,
/*enable interrupt rate control*/gpSRIO_regs->RIO_INTDST_RATE_DIS= 0x0;for(i= 0; i< 16; i++){gpSRIO_regs->RIO_INTDST_RATE_CNT[i]= 0;},
并且在中断服务程序中也对RIO_INTDST_RATE_CNT进行重新赋值,现象还是同上。
求助大家帮忙分析一下。