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_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);
}
}

View File

@ -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 );
}
@ -198,21 +224,24 @@ 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 );
}

View File

@ -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 );