diff --git a/Core/Application/MAIN_MainApplication.c b/Core/Application/MAIN_MainApplication.c index 62bce69..156f1ae 100644 --- a/Core/Application/MAIN_MainApplication.c +++ b/Core/Application/MAIN_MainApplication.c @@ -195,7 +195,7 @@ BOOL MAIN_boInitializeModule( VOID ) boOK &= ((m_pstEventID = osEventFlagsNew( &stEventAttribute )) == NULL) ? FALSE : TRUE; boOK &= ((m_pstThreadID = osThreadNew( vMainTask, NULL, &stTaskAttribute )) == NULL ) ? FALSE : TRUE; boOK &= ((m_pstCANRxMsgQueueID = osMessageQueueNew( MSG_QUEUE_SIZE, sizeof(CAND_Message), &stCANRxMsgQueueAttribute ) ) == NULL ) ? FALSE : TRUE; - boOK &= (m_pstUpdateTimer = osTimerNew( vEventCallback, osTimerPeriodic, (PVOID)EVENT_TIMER_UPDATE, &stTimerAttribute )) != NULL ? TRUE : FALSE; + boOK &= (m_pstUpdateTimer = osTimerNew( vEventCallback, osTimerPeriodic, (PVOID)EVENT_TIMER_UPDATE, &stTimerAttribute )) == NULL ? FALSE : TRUE; /*boOK &= VARH_boRegisterRangeCheck( VARH_eVoltageRefEn, VARH_boBooleanVarCheck, NULL ); @@ -340,7 +340,7 @@ PRIVATE VOID vMainTask( PVOID arg ) } if( u32Flags & EVENT_TIMER_UPDATE ) { - //DIPO_vToggleOutput(DIPO_eLED); + DIPO_vToggleOutput(DIPO_eLED); } } diff --git a/Core/Drivers/PECO_PeltierController.c b/Core/Drivers/PECO_PeltierController.c index 23fe80e..a0010a5 100644 --- a/Core/Drivers/PECO_PeltierController.c +++ b/Core/Drivers/PECO_PeltierController.c @@ -50,7 +50,9 @@ // Description: Definition of local constants (visible by this module only). //================================================================================================= +#define EVENT_TIMER_UPDATE ((U32)(1<<0)) +#define EVENT_FLAGS_ALL ( EVENT_TIMER_UPDATE ) //================================================================================================= // Section: MACROS @@ -81,6 +83,8 @@ //================================================================================================= LOCAL osThreadId_t m_pstThreadID = NULL; +LOCAL osTimerId_t m_pstUpdateTimer = NULL; +LOCAL osEventFlagsId_t m_pstEventID = NULL; BOOL boEnableOutput = FALSE; @@ -103,6 +107,23 @@ LOCAL CONST osThreadAttr_t stTaskAttribute = 0, // reserved (must be 0) }; +LOCAL CONST osTimerAttr_t stTimerAttribute = +{ + "PECO_UpdateTimer", // name of the timer + 0, // attribute bits + NULL, // memory for control block + 0, // size of provided memory for control block +}; + +LOCAL CONST osEventFlagsAttr_t stEventAttribute = +{ + "PECO_Event_Flags", // name of the event flags + 0, // attribute bits + NULL, // memory for control block + 0, // size of provided memory for control block +}; + + //================================================================================================= // Section: LOCAL FUNCTIONS (PROTOTYPES) // Description: Definition of local functions (visible by this module only). @@ -110,6 +131,7 @@ LOCAL CONST osThreadAttr_t stTaskAttribute = PRIVATE VOID PECO_vTask( PVOID arg ); BOOL boSetPeltierVoltage( S16 Voltage ); +PRIVATE VOID vEventCallback( PVOID pvData ); //================================================================================================= // Section: EXTERNAL FUNCTIONS @@ -142,9 +164,13 @@ BOOL PECO_boInitializeModule( VOID ) BOOL boOK = TRUE; //boOK &= ((m_pstThreadID = osThreadNew( PECO_vTask, NULL, &stTaskAttribute )) == NULL ) ? FALSE : TRUE; + boOK &= ((m_pstEventID = osEventFlagsNew( &stEventAttribute )) == NULL) ? FALSE : TRUE; + boOK &= (m_pstUpdateTimer = osTimerNew( vEventCallback, osTimerPeriodic, (PVOID)EVENT_TIMER_UPDATE, &stTimerAttribute )) == NULL ? FALSE : TRUE; boSetPeltierVoltage(0); + boOK &= (osTimerStart( m_pstUpdateTimer, 1000 ) == osOK ) ? TRUE : FALSE; + return( boOK ); } @@ -197,22 +223,25 @@ BOOL PECO_isEnabled( VOID ){ //------------------------------------------------------------------------------------------------- VOID PECO_vTask( PVOID arg ) { - - /*PECO_Enable(TRUE); + + UNUSED( arg ); + U32 u32Flags; while ( TRUE ) { - - boSetPeltierVoltage(1); - osDelay(5000); - boSetPeltierVoltage(0); - osDelay(5000); - boSetPeltierVoltage(-1); - osDelay(5000); - boSetPeltierVoltage(0); - osDelay(5000); + + u32Flags = osEventFlagsWait( m_pstEventID, EVENT_FLAGS_ALL, osFlagsWaitAny, osWaitForever ); + + if( u32Flags & EVENT_TIMER_UPDATE ) + { + + + + + } + - }*/ + } } @@ -228,11 +257,20 @@ BOOL boSetPeltierVoltage( S16 Voltage ){ if( Voltage > 14000 ) Voltage = 14000; if( Voltage < -8000 ) Voltage = -8000; - //Voltage -= 0.6; // Offset (hoffentlich nicht mehr) - boOK &= ANPO_boSetVoltage( ((((FLOAT)Voltage)/1000) + 20.088) / 34.103 ); return( boOK ); } +//------------------------------------------------------------------------------------------------- +// Function: vEventCallback +// Description: Callback for events +// Parameters: None +// Returns: None +//------------------------------------------------------------------------------------------------- +PRIVATE VOID vEventCallback( PVOID pvData ) +{ + osEventFlagsSet( m_pstEventID, (U32)pvData ); +} + diff --git a/Core/Drivers/TEMP_Temperature.c b/Core/Drivers/TEMP_Temperature.c index cd90724..e07fbb6 100644 --- a/Core/Drivers/TEMP_Temperature.c +++ b/Core/Drivers/TEMP_Temperature.c @@ -245,9 +245,7 @@ PRIVATE VOID vTempTask( PVOID arg ) if( boOK ) { osMutexAcquire( m_pstMutexID, osWaitForever ); - DIPO_vSetOutput(DIPO_eLED); m_flTempData[ADCD_eHot] = flConvertADCData( u16ADC_data[ADCD_eHot] ); - DIPO_vResetOutput(DIPO_eLED); //temp = flConvertADCData( u16ADC_data[ADCD_eHot] ); // for debugging //VARH_vSetVariableData( VARH_eTempHeatSink + u8Channel, (VARH_UVariable)(FLOAT)m_dbTempData[u8Channel] ); osMutexRelease( m_pstMutexID );