int main() { RTCtime_t time; RTCdate_t date; clk::initialize(); initializeGpio(); initializePeripheral(); initializeSystemTimer(); time.hour = 18; time.min = 0; time.sec = 0; RTC::setTime(time); date.year = 13; date.month = rtcmonth::OCTOBER; date.mday = rtcday::MONDAY; RTC::setDate(date); while (true) { RTC::getTime(&time); RTC::getDate(&date); printf("Time is: %2d:%2d:%2d\n\r",time.hour, time.min, time.sec); printf("Date is: 20%d:%2d:%2d\n\r",date.year, date.month, date.mday); loop(); } }
/* * State Machine Processing */ void ImplBMS(void) { //------------------------------------ // Gestion du fonctionnement de la machine a État switch (m_state) { case InitPeripheral: { statusCmp = 0; bufferMoy = 0; initializePeripheral(); setState(InitBQ); break; } case InitBQ: { initBranchData(&branch0, 0); // Met les valeurs à zéro assignAddress(&branch0); // Assigne les address au device status(&branch0); // Mise à jour des registres de status des devices setInitialConfig(&branch0); // Assigne la configuration initiale resetBranchFault(&branch0); // Reset des fautes resetBranchAlert(&branch0); // Reset des alertes status(&branch0); // Mise à jour des status /*LP_PARAMS newLongPolling; HDW_MAPPING *gVUE32_Ress; gVUE32_Ress = gHardwareMapBMS[INDEX_BMS]; newLongPolling.ucSizeData = gVUE32_Ress[i].ucDataSize newLongPolling.hasLifeTime = LONG_POLLING_WITHOUT_LIFE_TIME; newLongPolling.ucDestinataire = 0; newLongPolling.ucResourceId = E_ID_BMS_BOARD_TEMP; newLongPolling.unDelay = 100; newLongPolling.ucMsgType = VUE32_TYPE_SETVALUE;*/ setState(Monitor); //Enables the core to handle any pending interrupt requests asm volatile ("ei"); // Everything is ok so light the yellow LEDS for 1 sec unsigned char io_ctrl; readRegister(branch0.id,branch0.deviceTable[0].address,IO_CONTROL,1,&io_ctrl); io_ctrl = (io_ctrl | 0x40); writeRegister(branch0.id,BROADCAST_ADDRESS,IO_CONTROL,io_ctrl); unsigned int unSmallDelay = uiTimeStamp + 1000; while ( unSmallDelay > uiTimeStamp); io_ctrl = (io_ctrl & 0xBF); writeRegister(branch0.id,BROADCAST_ADDRESS,IO_CONTROL,io_ctrl); break; } case Monitor: { EVERY_X_MS(2000) LED1 ^= 1; monitor(); END_OF_EVERY break; } case Balance: { EVERY_X_MS(500) LED1 ^= 1; balance(); END_OF_EVERY break; } case InitSleep: { sleepBranch(&branch0); //Met les BQ dans le mode sleep setState(Sleep); break; } case Sleep: { break; } case WakeUp: { wakeUpBranch(&branch0); //Réinitialise les BQ après le mode sleep setState(InitBQ); break; } case Sieste: { break; } case WaitStabiliseTension: { if (waitStabiliseTension() == 1) setState(Balance); break; } case ProblemDetected: { if (problemDetected() == 1) setState(Monitor); break; } case WaitStabiliseTemp: { if (waitStabiliseTemp() == 1) setState(Balance); break; } case Test: { openCloseAllIO(); break; } default: break; } if ( m_state == ProblemDetected) { EVERY_X_MS(2000) unsigned char io_ctrl; readRegister(branch0.id,branch0.deviceTable[0].address,IO_CONTROL,1,&io_ctrl); if ( io_ctrl & 0x40 ) io_ctrl = (io_ctrl & 0xBF); else io_ctrl = (io_ctrl | 0x40); writeRegister(branch0.id,BROADCAST_ADDRESS,IO_CONTROL,io_ctrl); END_OF_EVERY }