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

TMS320F28388D: CLA软件触发中断延时

Part Number:TMS320F28388D

我用测试C28核和CLA并行处理时(进行同样的代码),发现软件采用CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_1)启动TASK1时,并没有立即进入CLA_tas(),延时了1us才进入task。

__interrupt void Cla1Task1 ( void )
{////Local Variables//// num = 0;GPIO_writePin(78,1);
//GpioDataRegs.GPBSET.bit.GPIO33 = 1;int xTblIdx; //integer valued Table indexfloat A0,A1,A2; //Table coefficientsfloat *entry;float result;int i;////Preprocessing////__mdebugstop();xTblIdx = fVal * TABLE_SIZE_M_1; //convert table index to u16-bitsxTblIdx = xTblIdx * 3; //Table is ordered as 3 32-bit coefficients, the//index points to these triplets, hence the *3*sizeof(float)
//entry = &CLAasinTable[xTblIdx];
//A0 = *entry++;
//A1 = *entry++;
//A2 = *entry;
//result = A0 + fVal*(A1 + A2*fVal);
//
////
////Post processing
////
//if(fVal < 0)
//{
//result = - result;
//}xTblIdx = xTblIdx * 3333;xTblIdx = xTblIdx * 3234 + xTblIdx * 367 ;fResult = xTblIdx;
//GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1;GPIO_writePin(78,0);
}
void main(void)
{//// Intialize device clock and peripherals//Device_init();//// Initialize GPIO and configure the GPIO pin as a push-pull output//GPIO_setPadConfig(78, GPIO_PIN_TYPE_STD);GPIO_setPinConfig(GPIO_78_GPIO78);GPIO_setDirectionMode(78, GPIO_DIR_MODE_OUT);GPIO_setMasterCore(78, GPIO_CORE_CPU1_CLA1);GPIO_setDirectionMode(80, GPIO_DIR_MODE_OUT);GPIO_setPinConfig(80);//// Disable pin locks and enable internal pullups.////Device_initGPIO(); //skipped for this example//// Initialize PIE and clear PIE registers. Disables CPU interrupts//Interrupt_initModule();//// Initialize the PIE vector table with pointers to the shell Interrupt// Service Routines (ISR).//Interrupt_initVectorTable();//// Configure the CLA memory spaces first followed by// the CLA task vectors//CLA_configClaMemory();CLA_initCpu1Cla1();//// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)//EINT;ERTM;//// Run the test////CLA_runTest();for(;;){int xTblIdx1; //integer valued Table indexfloat result1;int i;GPIO_writePin(80,1);CLA_forceTasks(CLA1_BASE,CLA_TASKFLAG_1);xTblIdx1 = fVal * TABLE_SIZE_M_1; //convert table index to u16-bitsxTblIdx1 = xTblIdx1 * 3; //Table is ordered as 3 32-bit coefficients, the//index points to these triplets, hence the *3*sizeof(float)xTblIdx1 = xTblIdx1 * 3333;xTblIdx1 = xTblIdx1 * 3234 + xTblIdx1 * 367 ;fResult = xTblIdx1;GPIO_writePin(80,0);DEVICE_DELAY_US(50);}
}

测试发现GPIO78引脚都是再GPIO80拉高后1us才被拉高,而且主函数执行时间才750ns,而CLA执行了4.2us,

蓝色为CPIO80,红色为GPIO78.

按我的理解,CLA跟CPU应该是并行处理,触发AICK1,进入TASK1执行代码,CPU继续继续z主程序代码,然后等待task完成,但实测并没有得到这个结果。

Green Deng:

你好,问题已经收到,我会咨询一下CLA方面的专家之后回复你,还请耐心等待

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28388D: CLA软件触发中断延时
分享到: 更多 (0)