add PECO Timer & Task

This commit is contained in:
Noah Piqué
2021-11-17 15:25:31 +01:00
parent cb3449f487
commit d4516f83d2
3 changed files with 54 additions and 18 deletions

View File

@ -195,7 +195,7 @@ BOOL MAIN_boInitializeModule( VOID )
boOK &= ((m_pstEventID = osEventFlagsNew( &stEventAttribute )) == NULL) ? FALSE : TRUE; boOK &= ((m_pstEventID = osEventFlagsNew( &stEventAttribute )) == NULL) ? FALSE : TRUE;
boOK &= ((m_pstThreadID = osThreadNew( vMainTask, NULL, &stTaskAttribute )) == 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_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 ); /*boOK &= VARH_boRegisterRangeCheck( VARH_eVoltageRefEn, VARH_boBooleanVarCheck, NULL );
@ -340,7 +340,7 @@ PRIVATE VOID vMainTask( PVOID arg )
} }
if( u32Flags & EVENT_TIMER_UPDATE ) if( u32Flags & EVENT_TIMER_UPDATE )
{ {
//DIPO_vToggleOutput(DIPO_eLED); DIPO_vToggleOutput(DIPO_eLED);
} }
} }

View File

@ -50,7 +50,9 @@
// Description: Definition of local constants (visible by this module only). // 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 // Section: MACROS
@ -81,6 +83,8 @@
//================================================================================================= //=================================================================================================
LOCAL osThreadId_t m_pstThreadID = NULL; LOCAL osThreadId_t m_pstThreadID = NULL;
LOCAL osTimerId_t m_pstUpdateTimer = NULL;
LOCAL osEventFlagsId_t m_pstEventID = NULL;
BOOL boEnableOutput = FALSE; BOOL boEnableOutput = FALSE;
@ -103,6 +107,23 @@ LOCAL CONST osThreadAttr_t stTaskAttribute =
0, // reserved (must be 0) 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) // Section: LOCAL FUNCTIONS (PROTOTYPES)
// Description: Definition of local functions (visible by this module only). // 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 ); PRIVATE VOID PECO_vTask( PVOID arg );
BOOL boSetPeltierVoltage( S16 Voltage ); BOOL boSetPeltierVoltage( S16 Voltage );
PRIVATE VOID vEventCallback( PVOID pvData );
//================================================================================================= //=================================================================================================
// Section: EXTERNAL FUNCTIONS // Section: EXTERNAL FUNCTIONS
@ -142,9 +164,13 @@ BOOL PECO_boInitializeModule( VOID )
BOOL boOK = TRUE; BOOL boOK = TRUE;
//boOK &= ((m_pstThreadID = osThreadNew( PECO_vTask, NULL, &stTaskAttribute )) == NULL ) ? FALSE : 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); boSetPeltierVoltage(0);
boOK &= (osTimerStart( m_pstUpdateTimer, 1000 ) == osOK ) ? TRUE : FALSE;
return( boOK ); return( boOK );
} }
@ -197,22 +223,25 @@ BOOL PECO_isEnabled( VOID ){
//------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------
VOID PECO_vTask( PVOID arg ) VOID PECO_vTask( PVOID arg )
{ {
/*PECO_Enable(TRUE); UNUSED( arg );
U32 u32Flags;
while ( TRUE ) while ( TRUE )
{ {
boSetPeltierVoltage(1); u32Flags = osEventFlagsWait( m_pstEventID, EVENT_FLAGS_ALL, osFlagsWaitAny, osWaitForever );
osDelay(5000);
boSetPeltierVoltage(0); if( u32Flags & EVENT_TIMER_UPDATE )
osDelay(5000); {
boSetPeltierVoltage(-1);
osDelay(5000);
boSetPeltierVoltage(0);
osDelay(5000);
}
}*/ }
} }
@ -228,11 +257,20 @@ BOOL boSetPeltierVoltage( S16 Voltage ){
if( Voltage > 14000 ) Voltage = 14000; if( Voltage > 14000 ) Voltage = 14000;
if( Voltage < -8000 ) Voltage = -8000; if( Voltage < -8000 ) Voltage = -8000;
//Voltage -= 0.6; // Offset (hoffentlich nicht mehr)
boOK &= ANPO_boSetVoltage( ((((FLOAT)Voltage)/1000) + 20.088) / 34.103 ); boOK &= ANPO_boSetVoltage( ((((FLOAT)Voltage)/1000) + 20.088) / 34.103 );
return( boOK ); return( boOK );
} }
//-------------------------------------------------------------------------------------------------
// Function: vEventCallback
// Description: Callback for events
// Parameters: None
// Returns: None
//-------------------------------------------------------------------------------------------------
PRIVATE VOID vEventCallback( PVOID pvData )
{
osEventFlagsSet( m_pstEventID, (U32)pvData );
}

View File

@ -245,9 +245,7 @@ PRIVATE VOID vTempTask( PVOID arg )
if( boOK ) if( boOK )
{ {
osMutexAcquire( m_pstMutexID, osWaitForever ); osMutexAcquire( m_pstMutexID, osWaitForever );
DIPO_vSetOutput(DIPO_eLED);
m_flTempData[ADCD_eHot] = flConvertADCData( u16ADC_data[ADCD_eHot] ); m_flTempData[ADCD_eHot] = flConvertADCData( u16ADC_data[ADCD_eHot] );
DIPO_vResetOutput(DIPO_eLED);
//temp = flConvertADCData( u16ADC_data[ADCD_eHot] ); // for debugging //temp = flConvertADCData( u16ADC_data[ADCD_eHot] ); // for debugging
//VARH_vSetVariableData( VARH_eTempHeatSink + u8Channel, (VARH_UVariable)(FLOAT)m_dbTempData[u8Channel] ); //VARH_vSetVariableData( VARH_eTempHeatSink + u8Channel, (VARH_UVariable)(FLOAT)m_dbTempData[u8Channel] );
osMutexRelease( m_pstMutexID ); osMutexRelease( m_pstMutexID );