void SYS_Initialize ( void* data ) { /* Core Processor Initialization */ SYS_CLK_Initialize( NULL ); sysObj.sysDevcon = SYS_DEVCON_Initialize(SYS_DEVCON_INDEX_0, (SYS_MODULE_INIT*)&sysDevconInit); SYS_DEVCON_PerformanceConfig(SYS_CLK_SystemFrequencyGet()); SYS_DEVCON_JTAGDisable(); SYS_PORTS_Initialize(); /* Initialize Drivers */ /*Initialize TMR0 */ DRV_TMR0_Initialize(); DRV_USART0_Initialize(); DRV_USART1_Initialize(); DRV_USART2_Initialize(); /* Initialize System Services */ SYS_INT_Initialize(); /* Initialize Middleware */ initDebugU(); /* Initialize the Application */ COMMUNICATION_Initialize(); MOTOR_Initialize(); SENSORCOMMUNICATION_Initialize(); }
void SYS_Initialize ( void* data ) { /* Core Processor Initialization */ SYS_CLK_Initialize( NULL ); sysObj.sysDevcon = SYS_DEVCON_Initialize(SYS_DEVCON_INDEX_0, (SYS_MODULE_INIT*)&sysDevconInit); SYS_DEVCON_PerformanceConfig(SYS_CLK_SystemFrequencyGet()); SYS_DEVCON_JTAGDisable(); SYS_PORTS_Initialize(); /* Initialize Drivers */ /*Initialize TMR0 */ DRV_TMR0_Initialize(); /*Initialize TMR1 */ DRV_TMR1_Initialize(); /*Initialize TMR2 */ DRV_TMR2_Initialize(); /*Initialize TMR3 */ DRV_TMR3_Initialize(); DRV_USART0_Initialize(); DRV_USART1_Initialize(); /*Initialize OC0 */ DRV_OC0_Initialize(); /*Initialize OC1 */ DRV_OC1_Initialize(); /* Initialize System Services */ SYS_INT_Initialize(); /*Setup the INT_SOURCE_EXTERNAL_1 and Enable it*/ SYS_INT_VectorPrioritySet(INT_VECTOR_INT1, INT_PRIORITY_LEVEL1); SYS_INT_VectorSubprioritySet(INT_VECTOR_INT1, INT_SUBPRIORITY_LEVEL0); SYS_INT_ExternalInterruptTriggerSet(INT_EXTERNAL_INT_SOURCE1,INT_EDGE_TRIGGER_RISING); SYS_INT_SourceEnable(INT_SOURCE_EXTERNAL_1); /*Setup the INT_SOURCE_EXTERNAL_2 and Enable it*/ SYS_INT_VectorPrioritySet(INT_VECTOR_INT2, INT_PRIORITY_LEVEL1); SYS_INT_VectorSubprioritySet(INT_VECTOR_INT2, INT_SUBPRIORITY_LEVEL0); SYS_INT_ExternalInterruptTriggerSet(INT_EXTERNAL_INT_SOURCE2,INT_EDGE_TRIGGER_RISING); SYS_INT_SourceEnable(INT_SOURCE_EXTERNAL_2); /* Initialize Middleware */ initDebugU(); /* Initialize the Application */ COMMUNICATION_Initialize(); MOTOR_Initialize(); }
// Main program int main(void) { // Initialize modules COMMON_Initialize(); SIGNAL_Initialize(); MEASUREMENT_Initialize(); MOTOR_Initialize(); TASK_Initialize(); MEMORY_Initialize(); COMMUNICATION_Initialize(); //LOGGING_Initialize(); // Activate measurements MEASUREMENT_ActivateAnalogConverter(); MEASUREMENT_ActivatePositionSensor(); // Wait for stabilized measurements COMMON_Delay(5); // Calibrate controller temperature sensor if (MEMORY_CheckFlag(FLAG_TEMPERATURE_SENSOR_CALIBRATION)) { // Reset flag for controller temperature sensor calibration MEMORY_ResetFlag(FLAG_TEMPERATURE_SENSOR_CALIBRATION); // Calibrate controller temperature sensor MEASUREMENT_CalibrateTemperatureSensor(); } // Initialize state observer and control OBSERVER_Initialize(); TRAJECTORY_GENERATION_Initialize(); CONTROL_Initialize(); // Activate signal SIGNAL_Activate(); // Activate task management TASK_Activate(); // Activate watchdog timer COMMON_ActivateWatchdog(); // Clear communication status register COMMUNICATION_ClearStatusRegister(); while (1) { // Observer task if (TASK_CheckTask(TASK_OBSERVER)) { // Update estimation OBSERVER_UpdateEstimation(); // Reset observer task TASK_ResetTask(TASK_OBSERVER); } // Control task if (TASK_CheckTask(TASK_CONTROL)) { // Update control signal CONTROL_UpdateControlSignal(); // Reset control task TASK_ResetTask(TASK_CONTROL); } // Signal task if (TASK_CheckTask(TASK_SIGNAL)) { // Update signal SIGNAL_Update(); // Reset signal task TASK_ResetTask(TASK_SIGNAL); } // Logging update task if (TASK_CheckTask(TASK_LOGGING_UPDATE)) { // Update logging values /*LOGGING_UpdateEndurance(); if (MEMORY_CheckError(ERROR_CURRENT_LIMIT)) { LOGGING_UpdateOvercurrentTime(); } if (MEMORY_CheckError(ERROR_MOTOR_TEMPERATURE_LIMIT)) { LOGGING_UpdateOvertemperatureTime(); }*/ // Reset logging update task TASK_ResetTask(TASK_LOGGING_UPDATE); } // Logging saving task if (TASK_CheckTask(TASK_LOGGING_SAVING) && (EEPROM0_GetStatus() != EEPROM_BUSY)) { // Save logging values //LOGGING_Save(); // Reset logging saving task TASK_ResetTask(TASK_LOGGING_SAVING); } // Status return delay timer if (TASK_CheckTimer(TIMER_STATUS_RETURN_DELAY)) { // Process end of status return delay COMMUNICATION_ProcessStatusReturnDelay(); // Reset status return delay timer TASK_ResetTimer(TIMER_STATUS_RETURN_DELAY); } // Reception timeout timer if (TASK_CheckTimer(TIMER_RECEPTION_TIMEOUT)) { // Process reception timeout COMMUNICATION_ProcessReceptionTimeout(); // Reset reception timeout timer TASK_ResetTimer(TIMER_RECEPTION_TIMEOUT); } // Synchronized read timeout timer if (TASK_CheckTimer(TIMER_SYNCHRONIZED_READ_TIMEOUT)) { // Process synchronized read timeout COMMUNICATION_PROTOCOL_ProcessSynchronizedReadTimeout(); // Reset synchronized read timeout timer TASK_ResetTimer(TIMER_SYNCHRONIZED_READ_TIMEOUT); } // Process communication packets if (COMMUNICATION_CheckPacketStatus() == COMMUNICATION_PROCESS) { // Process communication packet COMMUNICATION_PROTOCOL_ProcessPacket(); } // Reload watchdog timer COMMON_ReloadWatchdog(); } }