diff --git a/Core/Drivers/ANPI_AnalogPortsIn.c b/Core/Drivers/ANPI_AnalogPortsIn.c index 8d3077c..92daa34 100644 --- a/Core/Drivers/ANPI_AnalogPortsIn.c +++ b/Core/Drivers/ANPI_AnalogPortsIn.c @@ -95,6 +95,8 @@ LOCAL osThreadId_t m_pstThreadID = NULL; LOCAL osEventFlagsId_t m_pstEventID = NULL; LOCAL osMutexId_t m_pstMutexID = NULL; +LOCAL FLOAT flRefVoltage = INT_ADC_REF; + //================================================================================================= // Section: LOCAL CONSTANTS // Description: Definition of local constants (visible by this module only). @@ -198,6 +200,17 @@ BOOL ANPI_boInitializeModule( VOID ) return( boOK ); } +//------------------------------------------------------------------------------------------------- +// Function: ANPI_vSetRefVoltage +// Description: Sets the Reference Voltage for calculating the Voltage +// Parameters: FLOAT flVoltage -> The Ref Voltage measured with an DMM for example +// Returns: None +//------------------------------------------------------------------------------------------------- +VOID ANPI_vSetRefVoltage( FLOAT flVoltage ) +{ + flRefVoltage = flVoltage; +} + //------------------------------------------------------------------------------------------------- // Function: ANPI_vTask // Description: ANPI_vTask @@ -234,7 +247,7 @@ VOID vTask( PVOID arg ) // multiply conversion factor and add the offset for( U16 u16Cnt = 0; u16Cnt < ANPI_eInNumberOfInputs; u16Cnt++ ) { - flUadc = (FLOAT)au32ADCRawData[u16Cnt] / OVERSAMPLING_DIVISOR / ADC_RES * INT_ADC_REF; + flUadc = (FLOAT)au32ADCRawData[u16Cnt] / OVERSAMPLING_DIVISOR / ADC_RES * flRefVoltage; aflValues[u16Cnt] = flUadc * m_aflConversionFactor[u16Cnt] - m_aflOffset[u16Cnt]; } diff --git a/Core/Drivers/ANPI_AnalogPortsIn.h b/Core/Drivers/ANPI_AnalogPortsIn.h index 3f6ff74..1a8673e 100644 --- a/Core/Drivers/ANPI_AnalogPortsIn.h +++ b/Core/Drivers/ANPI_AnalogPortsIn.h @@ -94,6 +94,7 @@ typedef enum //================================================================================================= BOOL ANPI_boInitializeModule( VOID ); +VOID ANPI_vSetRefVoltage( FLOAT flVoltage ); #ifdef __cplusplus } diff --git a/Core/Drivers/ANPO_AnalogPortsOut.c b/Core/Drivers/ANPO_AnalogPortsOut.c index 4c7f9db..44333c1 100644 --- a/Core/Drivers/ANPO_AnalogPortsOut.c +++ b/Core/Drivers/ANPO_AnalogPortsOut.c @@ -45,7 +45,7 @@ // Description: Definition of local constants (visible by this module only). //================================================================================================= - +#define INT_DAC_REF (3.3f)// int. reference voltage for conversion //================================================================================================= // Section: MACROS @@ -75,6 +75,7 @@ // Description: Definition of local variables (visible by this module only). //================================================================================================= +LOCAL FLOAT flRefVoltage = INT_DAC_REF; //================================================================================================= // Section: LOCAL CONSTANTS @@ -87,7 +88,7 @@ // Description: Definition of local functions (visible by this module only). //================================================================================================= -U32 u32ConvertVoltagetoRaw( FLOAT Voltage ); +U32 u32ConvertVoltagetoRaw( FLOAT flVoltage ); //================================================================================================= // Section: EXTERNAL FUNCTIONS @@ -124,6 +125,17 @@ BOOL ANPO_boInitializeModule( VOID ) return( boOK ); } +//------------------------------------------------------------------------------------------------- +// Function: ANPO_vSetRefVoltage +// Description: Sets the Reference Voltage for calculating the Voltage +// Parameters: FLOAT flVoltage -> The Ref Voltage measured with an DMM for example +// Returns: None +//------------------------------------------------------------------------------------------------- +VOID ANPO_vSetRefVoltage( FLOAT flVoltage ) +{ + flRefVoltage = flVoltage; +} + //================================================================================================= // Section: LOCAL FUNCTIONS // Descriptionn: Definition (implementation) of local functions. @@ -135,10 +147,10 @@ BOOL ANPO_boInitializeModule( VOID ) // Parameters: FLOAT Voltage // Returns: Boolean, TRUE if successful //------------------------------------------------------------------------------------------------- -BOOL ANPO_boSetVoltage( FLOAT Voltage ){ +BOOL ANPO_boSetVoltage( FLOAT flVoltage ){ BOOL boOK = TRUE; - U32 u32RawData = u32ConvertVoltagetoRaw( Voltage ); + U32 u32RawData = u32ConvertVoltagetoRaw( flVoltage ); boOK &= HAL_DAC_SetValue( &hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, u32RawData ); @@ -151,10 +163,10 @@ BOOL ANPO_boSetVoltage( FLOAT Voltage ){ // Parameters: FLOAT Voltage // Returns: U32 //------------------------------------------------------------------------------------------------- -U32 u32ConvertVoltagetoRaw( FLOAT Voltage ){ +U32 u32ConvertVoltagetoRaw( FLOAT flVoltage ){ U32 RawData; - RawData = Voltage * 4095 / 3.3; + RawData = flVoltage * 4095 / flRefVoltage; return RawData; } diff --git a/Core/Drivers/ANPO_AnalogPortsOut.h b/Core/Drivers/ANPO_AnalogPortsOut.h index 2663ef2..8ff9235 100644 --- a/Core/Drivers/ANPO_AnalogPortsOut.h +++ b/Core/Drivers/ANPO_AnalogPortsOut.h @@ -87,7 +87,8 @@ typedef enum //================================================================================================= BOOL ANPO_boInitializeModule( VOID ); -BOOL ANPO_boSetVoltage( FLOAT Voltage ); +BOOL ANPO_boSetVoltage( FLOAT flVoltage ); +VOID ANPO_vSetRefVoltage( FLOAT flVoltage ); #ifdef __cplusplus }