这几天,我们在用F28069做从端SPI通讯测试时,发现带SYSBIOS操作系统时中断代码效率很低的问题,以至于CPU大部分时间都在处理SPI接收中断!但相同的代码在不带SYSBIOS的例程中却效率很高。
我们在F2806XISO-CONTROLCARDR0开发板上做了ADC中断测试,同样也发现带SYSBIOS操作系统时中断代码效率很低。
以下是带SYSBIOS操作系统时的中断代码。在进中断时,置高GPIO30,中断退出前,拉低GPIO30,通过示波器观察得出处理时间约3.4uS;
interrupt void adc_isr(void)
{
INT16U tmp16;
GpioDataRegs.GPASET.bit.GPIO30 = 1;
tmp16 = AdcResult.ADCRESULT0;
tmp16 = AdcResult.ADCRESULT1;
tmp16 = AdcResult.ADCRESULT2;
tmp16 = AdcResult.ADCRESULT3;
tmp16 = AdcResult.ADCRESULT4;
tmp16 = AdcResult.ADCRESULT5;
tmp16 = AdcResult.ADCRESULT6;
tmp16 = AdcResult.ADCRESULT7;
tmp16 = AdcResult.ADCRESULT8;
tmp16 = AdcResult.ADCRESULT9;
tmp16 = AdcResult.ADCRESULT10;
tmp16 = AdcResult.ADCRESULT11;
AdcRegs.ADCINTFLGCLR.bit.ADCINT8 = 1; //Clear ADCINT1 flag reinitialize for next SOC
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10; // Acknowledge interrupt to PIE
GpioDataRegs.GPACLEAR.bit.GPIO30 = 1;
return;
}
不带SYSBIOS操作系统时,通过示波器观察得出以上相同代码处理时间仅约0.6uS。
不知各位有没有碰到过类似问题,如果方便的话,可能通过QQ:359473028或359473028@qq.com联系我,我把我的工程发过来!工程太大,不能当作附件添加!谢谢!