FPGA通过SRIO的门铃通知6678进行中断处理,出现的问题是:如果相邻门铃之间的时间间隔较大,则6678能够进入门铃中断,如果相邻门铃之间的时间时间较小(大约600us),则6678不能进入门铃中断。请问,门铃间隔不变的前提下(大约600us),如何让6678能够响应门铃中断?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
FPGA通过SRIO的门铃通知6678进行中断处理,出现的问题是:如果相邻门铃之间的时间间隔较大,则6678能够进入门铃中断,如果相邻门铃之间的时间时间较小(大约600us),则6678不能进入门铃中断。请问,门铃间隔不变的前提下(大约600us),如何让6678能够响应门铃中断?
利用论坛中提供的例程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进行重新赋值,现象还是同上。
求助大家帮忙分析一下。
利用论坛中提供的例程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进行重新赋值,现象还是同上。
求助大家帮忙分析一下。