ADC Fault Detection (not tested yet)

This commit is contained in:
Noah Piqué 2021-11-17 16:27:30 +01:00
parent d4516f83d2
commit 8c54032298
3 changed files with 15 additions and 6 deletions

View File

@ -73,7 +73,10 @@
#define CONFIG_1SHOT (1<<5)
#define CONFIG_3WIRE (1<<4)
#define CONFIG_24WIRE (0<<4)
// Fault Detection not implemented yet
#define CONFIG_FAULTCYCLE_NO (0<<2)
#define CONFIG_FAULTCYCLE_AUTO (1<<2)
#define CONFIG_FAULTCYCLE_MANUAL1 (2<<2)
#define CONFIG_FAULTCYCLE_MANUAL2 (3<<2)
#define CONFIG_FAULTSTATCLEAR (1<<1)
#define CONFIG_FILT50HZ (1<<0)
#define CONFIG_FILT60HZ (0<<0)
@ -85,7 +88,7 @@
#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 CONFIG (U8)(CONFIG_VBIAS_ON | CONFIG_MODE_OFF | CONFIG_24WIRE | CONFIG_FAULTCYCLE_AUTO | CONFIG_FILT60HZ) // enable Vbias; autoconvert off; 4-wire; Fault detection auto 60Hz;
#define EVENT_ENABLE ((U32)(1<<0))
#define EVENT_DISABLE ((U32)(1<<1))
@ -207,10 +210,14 @@ BOOL ADCD_boInitializeModule( VOID )
DIPO_vSetOutput(DIPO_eCS_C);
boOK &= boWriteReg(REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE);
boOK &= boWriteReg(REG_HIGH_FAULT_MSB, (U16) 0x5b12 , TRUE);
boOK &= boWriteReg(REG_LOW_FAULT_MSB, (U16) 0x2690 , TRUE);
DIPO_vResetOutput(DIPO_eCS_C);
DIPO_vSetOutput(DIPO_eCS_H);
boOK &= boWriteReg(REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE);
boOK &= boWriteReg(REG_HIGH_FAULT_MSB, (U16) 0x5b12 , TRUE);
boOK &= boWriteReg(REG_LOW_FAULT_MSB, (U16) 0x2690 , TRUE);
DIPO_vResetOutput(DIPO_eCS_H);
osMutexRelease( m_pstMutexID );
@ -271,9 +278,10 @@ BOOL ADCD_dReadData(ADCD_EnTemps eChannel, PU8 pu8Error, PU16 pu16Data)
osMutexAcquire( m_pstMutexID, osWaitForever );
DIPO_vSetOutput(CS);
boOK &= boReadReg(REG_FAULT_STATUS, &u16Data, FALSE);
boWriteReg(REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE);
DIPO_vResetOutput(CS);
osMutexRelease( m_pstMutexID );
//boWriteReg(REG_CONFIG, (U16) CONFIG | CONFIG_FAULTSTATCLEAR, FALSE);
*pu8Error |= u16Data & 0xFC;
return 0;
}

View File

@ -33,12 +33,13 @@
#include "../PDEF_ProjectDefinitions.h"
#include "ANPI_AnalogPortsIn.h"
#include "PECO_PeltierController.h"
//Application
//#include "../Application/ELOG_ErrorLogger.h"
// Toolbox
#include "../Toolbox/UTIL_Utility.h"
#include "DIPO_DigitalPorts.h"
// include STM32 drivers
#include "stm32l4xx_hal.h"
@ -298,7 +299,7 @@ VOID ANPI_vTask( PVOID arg )
for(U16 u16Cnt = 0; u16Cnt < ANPI_eInNumberOfInputs; u16Cnt++ )
{
if(u16Cnt == ANPI_eOutputVoltage){
if(u16Cnt == ANPI_eOutputVoltage && !PECO_isEnabled()){
m_aflValues[u16Cnt] = 0.0f;
continue;
}

View File

@ -163,7 +163,7 @@ BOOL PECO_boInitializeModule( VOID )
{
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;