static void DSPMonitorTask(MailType *MailPtr) { switch (MailPtr->Primitive) { case INITTASK: { char *ptr; ptr = StringPrint(StatusString, "DSP[0x"); ptr = StrPrintHexWord(ptr, DSP_SEGMENT_SIZE); ptr = StringPrint(ptr, "] = [0x"); ptr = StrPrintHexAddr(ptr, (unsigned long) &DSPCodeAndRamArea[0]); ptr = StringPrint(ptr, "] -> [0x"); ptr = StrPrintHexAddr(ptr, (unsigned long) &DSPCodeAndRamArea[DSP_SEGMENT_SIZE - 1]); ptr = StringPrint(ptr, "]"); PrintStatus(0, StatusString); /* OSStartTimer(DSPMONITORTIMER, 100);*/ } break; case 0x2a: { } break; case TIMEOUT: { char* ptr = StringPrint(StatusString, "DSP tick["); ptr = StrPrintHexWord(ptr, dsp_interrupt_counter); ptr = StringPrint(ptr, "]"); __disable_interrupt(); dsp_interrupt_counter = 0; __enable_interrupt(); PrintStatus(0, StatusString); OSStartTimer(DSPMONITORTIMER, 100); } break; } }
/*===================================================================================================================== * Parameters: void * * Return: void * * Description: *===================================================================================================================*/ void FSIO_Task(void) { switch(CardState) { //------------------------------------------------------------------------------------------------------------------ case cInitState: OSStartTimer(&CardInitTimer); CardState = eCardWaitState; _DioWritePin(cDioPin_SD_CardLed, 1); break; //------------------------------------------------------------------------------------------------------------------ case eCardInitialize: // card is inserted, initialize card if(cFalse != MDD_MediaDetect()) { if (cFalse != FSInit()) { // init OK _set_sd_card_present(1); _DioWritePin(cDioPin_SD_CardLed, 0); // load device configuration Devconfig_LoadConfig(); App_Statemachine_SD_CardCallback(cCallbackCtrlOK); CardState = eCardInserted; } else { // init error _set_sd_card_present(0); _DioWritePin(cDioPin_SD_CardLed, 1); CardState = eCardNotPresent; } } else { _set_sd_card_present(0); CardState = eCardNotPresent; } break; //----------------------------------------------------------------------------------------------------------------- case eCardInserted: if(cDioCardInsertsed != _DioReadPinFiltered(cDioPin_SD_CardPresent)) { _set_sd_card_present(0); _DioWritePin(cDioPin_SD_CardLed, 1); App_Statemachine_SD_CardCallback(cCallbackCtrlNOK); CardState = eCardNotPresent; } break; //------------------------------------------------------------------------------------------------------------------- case eCardNotPresent: // wait card inserted if(cDioCardInsertsed == _DioReadPinFiltered(cDioPin_SD_CardPresent)) { CardState = eCardInitialize; } break; //------------------------------------------------------------------------------------------------------------------ case eCardWaitState: if(cFalse != OSIsTimerElapsed(&CardInitTimer, cFSIO_DioInitTime_ms/(cOsTimerTickUs/1000UL))) { // wait some time before start polling card state CardState = eCardNotPresent; } break; //------------------------------------------------------------------------------------------------------------------- default: _assert(cFalse); CardState = eCardNotPresent; break; } }