add PECO Timer & Task
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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 );
|
||||||
|
Reference in New Issue
Block a user