TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C6678中DOORBELL中断的问题

我用FPGA循环向DSP发送doorbell。

调试时DOORBELL0_ICSR寄存器值为0x1。

我对DOORBELL0_ICRR0的设置是0x76543210,DOORBELL0_ICRR1:0xFEDCBA98,也就是将ICSR的bitx映射到INTDSTx,如ICSR的bit0映射到INTDST0。

我又通过CPINTC和INTC配置了中断服务程序ISR,只要DOORBELL0_ICSR的值为0x1,就会唤醒ISR,执行ISR中的代码。

以上过程已经确定没有问题。

通过对文档的阅读,知道了在ISR中最后必须清除ICSR的值,并且由于我使用的是INTDST0(包含在INTDST0-INTDST15中),所以需要在SRIO初始化和ISR最后对InterruptPacing值进行设置。因此我的ISR程序如下:

static void read_isr_handler (void* handle)
{
	printf("enter the readISR!!!\n");
	
	// Get the status of doorbell interrupts for port 0
	CSL_SRIO_GetDoorbellPendingInterrupt (hSrio, 0, &doorbellStatus);
	CSL_SRIO_SetInterruptPacing (hSrio, 0, 0xFFFFFFFF);
	
	// Clear the Door Bell Pending Interrupts.CSL_SRIO_ClearDoorbellPendingInterrupt (hSrio, 0, doorbellStatus);
	
}

症状:

只能进入一次ISR(中断服务程序)。

问题:我的配置哪里有问题?

 
user4712072:

中断0-3是保留吧,配置4之后的

yonghao hai:

回复 user4712072:

你的意思是INTDST0-3是保留的吗?我应该配置INTDST4-15或者INTDST16-23是吧。

我对您的意思理解对不对呢?

user4712072:

回复 yonghao hai:

说错了,貌似INTDST16-23是门铃中断

user4712072:

回复 yonghao hai:

我说错了,手册上说的是INTDST16-23是门铃中断,我也是用的这里面的

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6678中DOORBELL中断的问题
分享到: 更多 (0)