I was currently using the MRR_Lab_07 and wanted to see if it's possible to implement dynamic chirp configuration and change the Data Path at runtime.
I see that the Data Path is set once during initialization in the main function with the following function call:
/* Populate the chirp configuration in the DSS for all the data path objects. */ MmwDemo_dataPathConfigPopulate(&gMrrDSSMCB.dataPathObj[0]);
After this call, all other elements related to the data path, such as the DataPath object and EDMA, are initialized in the main function itself. Finally, BIOS_start() is called in the main function, effectively meaning that execution never returns back to main. However, I want to change the chirp parameters dynamically like this:
void MmwDemo_dataPathConfigPopulate(MmwDemo_DSS_DataPathObj* obj) { #ifdef SUBFRAME_CONF_MRR_SRR MmwDemo_populateMRR(obj, 0); //MmwDemo_populateSRR(obj+1, 1); #else #ifdef SUBFRAME_CONF_MRR switch(g_u8_ChirpMode) { case 0: count0++; MmwDemo_populateSRR(obj, 0); break; case 1: count1++; memset((void *) obj, 0, sizeof(MmwDemo_DSS_DataPathObj)); MmwDemo_populateMRR(obj, 0); break; default: countdefault++; MmwDemo_populateMRR(obj, 0); break; } #endif #ifdef SUBFRAME_CONF_USRR MmwDemo_populateUSRR(obj, 0); #endif #endif }
An if-else condition within the dss_main.c
file, inside the mmwaveTask
, determines which chirp mode to use. If I call the MmwDemo_dataPathConfigPopulate
function inside this task, what steps should be followed after this function call? It's quite obvious that since the data path is changing, I need to call all the necessary steps to correctly reconfigure the data path.
If I just call this function and do not call anything else, I get this exception:
Internal exception: IERR=0x10
And if I try to mimic the other steps followed in the main()
function after this function call, I am still getting the error.
So, what steps should be taken after this function call to correctly reconfigure the data path without any errors?