ADC Temp error handling, rename temps
This commit is contained in:
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -7,7 +7,7 @@
|
||||
},
|
||||
"cortex-debug.armToolchainPath": "c:\\Users\\pique_n\\AppData\\Roaming\\Code\\User\\globalStorage\\bmd.stm32-for-vscode\\@xpack-dev-tools\\arm-none-eabi-gcc\\11.3.1-1.1.2\\.content\\bin",
|
||||
"cortex-debug.openocdPath": "C:\\USERS\\PIQUE_N\\APPDATA\\ROAMING\\CODE\\USER\\GLOBALSTORAGE\\BMD.STM32-FOR-VSCODE\\@XPACK-DEV-TOOLS\\OPENOCD\\0.11.0-5.1\\.CONTENT\\BIN\\OPENOCD.EXE",
|
||||
"cortex-debug.variableUseNaturalFormat": true,
|
||||
"cortex-debug.variableUseNaturalFormat": false,
|
||||
"stm32-for-vscode.openOCDPath": "C:\\USERS\\PIQUE_N\\APPDATA\\ROAMING\\CODE\\USER\\GLOBALSTORAGE\\BMD.STM32-FOR-VSCODE\\@XPACK-DEV-TOOLS\\OPENOCD\\0.11.0-5.1\\.CONTENT\\BIN\\OPENOCD.EXE",
|
||||
"stm32-for-vscode.makePath": "C:\\USERS\\PIQUE_N\\APPDATA\\ROAMING\\CODE\\USER\\GLOBALSTORAGE\\BMD.STM32-FOR-VSCODE\\@XPACK-DEV-TOOLS\\WINDOWS-BUILD-TOOLS\\4.3.0-1.1\\.CONTENT\\BIN\\MAKE.EXE",
|
||||
"stm32-for-vscode.armToolchainPath": "c:\\Users\\pique_n\\AppData\\Roaming\\Code\\User\\globalStorage\\bmd.stm32-for-vscode\\@xpack-dev-tools\\arm-none-eabi-gcc\\11.3.1-1.1.2\\.content\\bin"
|
||||
|
@ -232,7 +232,7 @@ VOID vTask( PVOID arg )
|
||||
if ( VARH_u32GetVariableData( VARH_eMode ) == PECO_eConstTemp )
|
||||
{
|
||||
// TODO: check the measurements, everything ok?
|
||||
|
||||
/** @todo check power good pin */
|
||||
|
||||
// PID Regelung
|
||||
|
||||
@ -242,7 +242,7 @@ VOID vTask( PVOID arg )
|
||||
FLOAT max = VARH_flGetVariableData( VARH_ePID_Max );
|
||||
FLOAT min = VARH_flGetVariableData( VARH_ePID_Min );
|
||||
|
||||
FLOAT Tnow = VARH_flGetVariableData( VARH_eTemp_C );
|
||||
FLOAT Tnow = VARH_flGetVariableData( VARH_eTemp_Module );
|
||||
FLOAT Tset = VARH_flGetVariableData( VARH_ePID_Temp );
|
||||
|
||||
// -error
|
||||
|
@ -82,8 +82,8 @@ LOCAL CONST VARH_StVarInfo m_astVarInfo[VARH_eNumberOfVariables] =
|
||||
{ VARH_FLAGINFO_FLASH | VARH_FLAGINFO_FLOAT, (VARH_UVariable)10.0f, (VARH_UVariable)0.0f, (VARH_UVariable)12.0f }, // VARH_ePID_Max
|
||||
{ VARH_FLAGINFO_FLASH | VARH_FLAGINFO_FLOAT, (VARH_UVariable)-2.0f, (VARH_UVariable)-2.0f, (VARH_UVariable)0.0f }, // VARH_ePID_Min
|
||||
|
||||
{ VARH_FLAGINFO_READONLY | VARH_FLAGINFO_FLOAT, (VARH_UVariable)0.0f, (VARH_UVariable)-60.0f, (VARH_UVariable)100.0f }, // VARH_eTemp_H
|
||||
{ VARH_FLAGINFO_READONLY | VARH_FLAGINFO_FLOAT, (VARH_UVariable)0.0f, (VARH_UVariable)-60.0f, (VARH_UVariable)100.0f }, // VARH_eTemp_C
|
||||
{ VARH_FLAGINFO_READONLY | VARH_FLAGINFO_FLOAT, (VARH_UVariable)0.0f, (VARH_UVariable)-60.0f, (VARH_UVariable)100.0f }, // VARH_eTemp_Water
|
||||
{ VARH_FLAGINFO_READONLY | VARH_FLAGINFO_FLOAT, (VARH_UVariable)0.0f, (VARH_UVariable)-60.0f, (VARH_UVariable)100.0f }, // VARH_eTemp_Module
|
||||
{ VARH_FLAGINFO_READONLY | VARH_FLAGINFO_FLOAT, (VARH_UVariable)0.0f, (VARH_UVariable)-50.0f, (VARH_UVariable)70.0f }, // VARH_eTemp_Diff
|
||||
|
||||
{ VARH_FLAGINFO_READONLY | VARH_FLAGINFO_FLOAT, (VARH_UVariable)0.0f, (VARH_UVariable)-5.0f, (VARH_UVariable)14.0f }, // VARH_ePeltier_U
|
||||
|
@ -76,8 +76,8 @@ typedef enum
|
||||
VARH_ePID_Max,
|
||||
VARH_ePID_Min,
|
||||
|
||||
VARH_eTemp_H,
|
||||
VARH_eTemp_C,
|
||||
VARH_eTemp_Water,
|
||||
VARH_eTemp_Module,
|
||||
VARH_eTemp_Diff,
|
||||
|
||||
VARH_ePeltier_U,
|
||||
|
@ -35,7 +35,6 @@
|
||||
// Drivers
|
||||
#include "SPID_SpiDriver.h"
|
||||
#include "DIPO_DigitalPorts.h"
|
||||
//#include "EXTI_ExtiHandler.h"
|
||||
|
||||
// Application
|
||||
//#include "../Application/ELOG_ErrorLogger.h"
|
||||
@ -80,13 +79,6 @@
|
||||
#define CONFIG_FILT50HZ (1<<0)
|
||||
#define CONFIG_FILT60HZ (0<<0)
|
||||
|
||||
#define FAULT_HIGHTHRESH 0x80
|
||||
#define FAULT_LOWTHRESH 0x40
|
||||
#define FAULT_REFINLOW 0x20
|
||||
#define FAULT_REFINHIGH 0x10
|
||||
#define FAULT_RTDINLOW 0x08
|
||||
#define FAULT_OVUV 0x04
|
||||
|
||||
#define CONFIG (U8)(CONFIG_VBIAS_ON | CONFIG_MODE_OFF | CONFIG_24WIRE | CONFIG_FILT60HZ) // enable Vbias; autoconvert off; 4-wire; 60Hz;
|
||||
|
||||
#define EVENT_ENABLE ((U32)(1<<0))
|
||||
@ -204,30 +196,14 @@ BOOL ADCD_boInitializeModule( VOID )
|
||||
osMutexAcquire( m_pstMutexID, osWaitForever );
|
||||
|
||||
// Conifg ADC Cold
|
||||
DIPO_vSetOutput( DIPO_eCS_C );
|
||||
DIPO_vSetOutput( DIPO_eCS_Module );
|
||||
boOK &= boWriteReg( REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE );
|
||||
DIPO_vResetOutput( DIPO_eCS_C );
|
||||
|
||||
DIPO_vSetOutput( DIPO_eCS_C );
|
||||
boOK &= boWriteReg( REG_HIGH_FAULT_MSB, (U16)0x5b12 , TRUE );
|
||||
DIPO_vResetOutput( DIPO_eCS_C );
|
||||
|
||||
DIPO_vSetOutput( DIPO_eCS_C );
|
||||
boOK &= boWriteReg( REG_LOW_FAULT_MSB, (U16)0x2690 , TRUE );
|
||||
DIPO_vResetOutput( DIPO_eCS_C );
|
||||
DIPO_vResetOutput( DIPO_eCS_Module );
|
||||
|
||||
// Config ADC Hot
|
||||
DIPO_vSetOutput( DIPO_eCS_H );
|
||||
DIPO_vSetOutput( DIPO_eCS_Water );
|
||||
boOK &= boWriteReg( REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE );
|
||||
DIPO_vResetOutput( DIPO_eCS_H );
|
||||
|
||||
DIPO_vSetOutput( DIPO_eCS_H );
|
||||
boOK &= boWriteReg( REG_HIGH_FAULT_MSB, (U16)0x5b12 , TRUE );
|
||||
DIPO_vResetOutput( DIPO_eCS_H );
|
||||
|
||||
DIPO_vSetOutput( DIPO_eCS_H );
|
||||
boOK &= boWriteReg( REG_LOW_FAULT_MSB, (U16)0x2690 , TRUE );
|
||||
DIPO_vResetOutput( DIPO_eCS_H );
|
||||
DIPO_vResetOutput( DIPO_eCS_Water );
|
||||
|
||||
osMutexRelease( m_pstMutexID );
|
||||
|
||||
@ -246,10 +222,10 @@ BOOL ADCD_boReadData( ADCD_EnTemps eChannel, PU8 pu8Error, PU16 pu16Data )
|
||||
*pu8Error = 0; // reset error state
|
||||
U16 u16Data = 0;
|
||||
|
||||
DIPO_EnDigitalOutput CS = DIPO_eCS_H;
|
||||
DIPO_EnDigitalOutput CS = DIPO_eCS_Water;
|
||||
|
||||
if( eChannel == ADCD_eHot ) CS = DIPO_eCS_H;
|
||||
else if ( eChannel == ADCD_eCold ) CS = DIPO_eCS_C;
|
||||
if( eChannel == ADCD_eWater ) CS = DIPO_eCS_Water;
|
||||
else if ( eChannel == ADCD_eModule ) CS = DIPO_eCS_Module;
|
||||
|
||||
osMutexAcquire( m_pstMutexID, osWaitForever );
|
||||
DIPO_vSetOutput( CS );
|
||||
@ -257,7 +233,7 @@ BOOL ADCD_boReadData( ADCD_EnTemps eChannel, PU8 pu8Error, PU16 pu16Data )
|
||||
DIPO_vResetOutput( CS );
|
||||
osMutexRelease( m_pstMutexID );
|
||||
|
||||
osDelay(55);
|
||||
osDelay(100);
|
||||
|
||||
osMutexAcquire( m_pstMutexID, osWaitForever );
|
||||
DIPO_vSetOutput( CS );
|
||||
@ -268,31 +244,27 @@ BOOL ADCD_boReadData( ADCD_EnTemps eChannel, PU8 pu8Error, PU16 pu16Data )
|
||||
if( !boOK )
|
||||
{
|
||||
*pu8Error |= ADCD_SPI_FAILURE;
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if( ( u16Data & 0x00 ) == 0x01 )
|
||||
if( ( u16Data & 0x0001 ) == 0x0001 )
|
||||
{
|
||||
*pu8Error |= ADCD_STATUS_DATA_ERROR;
|
||||
|
||||
|
||||
osMutexAcquire( m_pstMutexID, osWaitForever );
|
||||
|
||||
DIPO_vSetOutput( CS );
|
||||
boOK &= boReadReg( REG_FAULT_STATUS, &u16Data, FALSE );
|
||||
boOK &= boReadReg( REG_FAULT_STATUS, (PU16)pu8Error, FALSE );
|
||||
DIPO_vResetOutput( CS );
|
||||
|
||||
DIPO_vSetOutput( CS );
|
||||
boOK &= boWriteReg( REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE );
|
||||
DIPO_vResetOutput( CS );
|
||||
|
||||
DIPO_vSetOutput( CS );
|
||||
boOK &= boReadReg( REG_HIGH_FAULT_MSB, &u16Data, TRUE );
|
||||
DIPO_vResetOutput( CS );
|
||||
|
||||
osMutexRelease( m_pstMutexID );
|
||||
|
||||
*pu8Error |= u16Data & 0xFC;
|
||||
return 0;
|
||||
*pu8Error |= ADCD_STATUS_DATA_ERROR;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u16Data = u16Data >> 1;
|
||||
|
@ -38,10 +38,15 @@ extern "C" {
|
||||
// Description: Definition of global constants (visible by all modules).
|
||||
//=================================================================================================
|
||||
|
||||
#define ADCD_STATUS_DATA_ERROR (1<<0)
|
||||
#define ADCD_SPI_FAILURE (1<<1)
|
||||
#define ADCD_STATUS_DATA_ERROR 0x01
|
||||
#define ADCD_SPI_FAILURE 0x02
|
||||
|
||||
//typedef VOID (*ADCD_pfnCallback)( PVOID pvCallbackArgument );
|
||||
#define ADCD_FAULT_HIGHTHRESH 0x80
|
||||
#define ADCD_FAULT_LOWTHRESH 0x40
|
||||
#define ADCD_FAULT_REFINLOW 0x20
|
||||
#define ADCD_FAULT_REFINHIGH 0x10
|
||||
#define ADCD_FAULT_RTDINLOW 0x08
|
||||
#define ADCD_FAULT_OVUV 0x04
|
||||
|
||||
//=================================================================================================
|
||||
// Section: MACROS
|
||||
@ -55,8 +60,8 @@ extern "C" {
|
||||
//=================================================================================================
|
||||
|
||||
typedef enum {
|
||||
ADCD_eHot = 0,
|
||||
ADCD_eCold = 1,
|
||||
ADCD_eWater = 0,
|
||||
ADCD_eModule = 1,
|
||||
|
||||
ADCD_eNumberOfTemps // Must be last
|
||||
}ADCD_EnTemps;
|
||||
@ -85,7 +90,6 @@ typedef enum {
|
||||
//=================================================================================================
|
||||
|
||||
BOOL ADCD_boInitializeModule( VOID );
|
||||
//BOOL ADCD_boConfig( BOOL boFast, ADCD_pfnCallback pfnDataReadyCallback, PVOID pvCallbackArg );
|
||||
BOOL ADCD_boReadData( ADCD_EnTemps eChannel, PU8 pu8Error, PU16 pu16Data );
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -109,8 +109,8 @@ LOCAL CONST StDigitalIO m_astInputs[DIPO_eInNumberOfInputs] =
|
||||
LOCAL CONST StDigitalIO m_astOutputs[DIPO_eOutNumberOfOutputs] =
|
||||
{
|
||||
|
||||
{ GPIOB, { GPIO_PIN_6, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, TRUE, FALSE }, // 00 DIPO_eCS_C
|
||||
{ GPIOB, { GPIO_PIN_5, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, TRUE, FALSE }, // 01 DIPO_eCS_H
|
||||
{ GPIOB, { GPIO_PIN_6, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, TRUE, FALSE }, // 00 DIPO_eCS_Module
|
||||
{ GPIOB, { GPIO_PIN_5, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, TRUE, FALSE }, // 01 DIPO_eCS_Water
|
||||
{ GPIOC, { GPIO_PIN_14, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 02 DIPO_eLED
|
||||
{ GPIOA, { GPIO_PIN_8, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_MEDIUM, 0 }, FALSE, TRUE }, // 03 DIPO_eEN
|
||||
|
||||
|
@ -78,8 +78,8 @@ typedef enum
|
||||
typedef enum
|
||||
{
|
||||
|
||||
DIPO_eCS_C = 0, // 00 Chip Select Cold
|
||||
DIPO_eCS_H = 1, // 01 Chip Select Hot
|
||||
DIPO_eCS_Module = 0, // 00 Chip Select Module
|
||||
DIPO_eCS_Water = 1, // 01 Chip Select Water
|
||||
|
||||
DIPO_eLED = 2, // 02 Test LED
|
||||
DIPO_eEN = 3, // 03 Enable
|
||||
|
@ -146,29 +146,53 @@ PRIVATE VOID vTask( PVOID arg )
|
||||
UNUSED( arg );
|
||||
|
||||
BOOL boOK = TRUE;
|
||||
U8 error;
|
||||
U16 u16ADC_data[ADCD_eNumberOfTemps];
|
||||
U8 u8error;
|
||||
U16 u16ADC_data;
|
||||
FLOAT flTempData[ADCD_eNumberOfTemps];
|
||||
|
||||
osDelay(10);
|
||||
|
||||
while( TRUE )
|
||||
{
|
||||
boOK &= ADCD_boReadData( ADCD_eHot, &error, &u16ADC_data[ADCD_eHot] );
|
||||
boOK &= ADCD_boReadData( ADCD_eCold, &error, &u16ADC_data[ADCD_eCold] );
|
||||
|
||||
/** @todo call errorhandler if value == 0 */
|
||||
boOK &= ADCD_boReadData( ADCD_eWater, &u8error, &u16ADC_data );
|
||||
|
||||
if( boOK )
|
||||
{
|
||||
flTempData[ADCD_eHot] = flConvertADCData( u16ADC_data[ADCD_eHot] );
|
||||
flTempData[ADCD_eCold] = flConvertADCData( u16ADC_data[ADCD_eCold] );
|
||||
VARH_vSetVariableDataFromSystemFloat( VARH_eTemp_H, flTempData[ADCD_eHot] );
|
||||
VARH_vSetVariableDataFromSystemFloat( VARH_eTemp_C, flTempData[ADCD_eCold] );
|
||||
VARH_vSetVariableDataFromSystemFloat( VARH_eTemp_Diff, flTempData[ADCD_eHot] - flTempData[ADCD_eCold] );
|
||||
flTempData[ADCD_eWater] = flConvertADCData( u16ADC_data );
|
||||
} else {
|
||||
if( (u8error & ADCD_STATUS_DATA_ERROR) == ADCD_STATUS_DATA_ERROR ){
|
||||
flTempData[ADCD_eWater] = -273.16f;
|
||||
|
||||
/** @todo call error handler temp data */
|
||||
} else if( (u8error & ADCD_SPI_FAILURE) == ADCD_SPI_FAILURE ){
|
||||
flTempData[ADCD_eWater] = -273.16f;
|
||||
|
||||
/** @todo call error handler onchip spi failure */
|
||||
}
|
||||
}
|
||||
|
||||
boOK &= ADCD_boReadData( ADCD_eModule, &u8error, &u16ADC_data );
|
||||
|
||||
if( boOK )
|
||||
{
|
||||
flTempData[ADCD_eModule] = flConvertADCData( u16ADC_data );
|
||||
} else {
|
||||
if( (u8error & ADCD_STATUS_DATA_ERROR) == ADCD_STATUS_DATA_ERROR ){
|
||||
flTempData[ADCD_eModule] = -273.16f;
|
||||
|
||||
/** @todo call error handler temp data */
|
||||
} else if( (u8error & ADCD_SPI_FAILURE) == ADCD_SPI_FAILURE ){
|
||||
flTempData[ADCD_eModule] = -273.16f;
|
||||
|
||||
/** @todo call error handler onchip spi failure */
|
||||
}
|
||||
}
|
||||
|
||||
VARH_vSetVariableDataFromSystemFloat( VARH_eTemp_Water, flTempData[ADCD_eWater] );
|
||||
VARH_vSetVariableDataFromSystemFloat( VARH_eTemp_Module, flTempData[ADCD_eModule] );
|
||||
VARH_vSetVariableDataFromSystemFloat( VARH_eTemp_Diff, flTempData[ADCD_eWater] - flTempData[ADCD_eModule] );
|
||||
|
||||
boOK = TRUE;
|
||||
osDelay(REFRESH_MS);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user