Fertirrega_v6 Scaled to 4096
This commit is contained in:
@@ -194,10 +194,26 @@ extern "C" {
|
||||
#define AD5934_TIME_PER_SWEEP 60 // 60 ms entre o início de cada sweep
|
||||
#define AD5934_TIME_MUX_SETTLING 10 // 10 ms de espera após trocar o MUX
|
||||
|
||||
#define AD5934_BURST_SIZE 7
|
||||
#define AD5934_BURST_SIZE 5
|
||||
#define AD5934_TRIM_COUNT 1
|
||||
#define AD5934_HISTORY_SIZE 8
|
||||
#define AD5934_IIR_ALPHA 0.25f
|
||||
#define AD5934_HISTORY_SIZE 6
|
||||
#define AD5934_IIR_ALPHA 0.4f
|
||||
|
||||
|
||||
#define AD5934_EC_FLOAT_SCALE_MIN 0.0f
|
||||
#define AD5934_EC_FLOAT_SCALE_MAX 15000.0f
|
||||
#define AD5934_EC_OUT_SCALE_MIN 0
|
||||
#define AD5934_EC_OUT_SCALE_MAX 4096
|
||||
|
||||
#define AD5934_REF_FLOAT_SCALE_MIN 1850.0f
|
||||
#define AD5934_REF_FLOAT_SCALE_MAX 2450.0f
|
||||
#define AD5934_REF_OUT_SCALE_MIN 0
|
||||
#define AD5934_REF_OUT_SCALE_MAX 4096
|
||||
|
||||
#define AD5934_RTD_FLOAT_SCALE_MIN 1850.0f
|
||||
#define AD5934_RTD_FLOAT_SCALE_MAX 2450.0f
|
||||
#define AD5934_RTD_OUT_SCALE_MIN 0
|
||||
#define AD5934_RTD_OUT_SCALE_MAX 4096
|
||||
|
||||
|
||||
|
||||
@@ -256,6 +272,7 @@ typedef enum {
|
||||
} AD5934_State_t;
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
float burst[AD5934_BURST_SIZE];
|
||||
uint8_t burst_index;
|
||||
@@ -290,6 +307,79 @@ static const uint8_t ADG715_Channel_Map[AD5934_CH_MAX] = {
|
||||
[AD5934_CH_EC_HIGH_GAIN] = (ADG715_SW3 | ADG715_SW8)
|
||||
};
|
||||
|
||||
static const float AD5934_Scale_Float_Min[AD5934_CH_MAX] = {
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_REF_FLOAT_SCALE_MIN,
|
||||
AD5934_RTD_FLOAT_SCALE_MIN,
|
||||
AD5934_RTD_FLOAT_SCALE_MIN,
|
||||
AD5934_RTD_FLOAT_SCALE_MIN,
|
||||
AD5934_EC_FLOAT_SCALE_MIN,
|
||||
AD5934_EC_FLOAT_SCALE_MIN,
|
||||
AD5934_EC_FLOAT_SCALE_MIN
|
||||
};
|
||||
|
||||
static const float AD5934_Scale_Float_Max[AD5934_CH_MAX] = {
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_REF_FLOAT_SCALE_MAX,
|
||||
AD5934_RTD_FLOAT_SCALE_MAX,
|
||||
AD5934_RTD_FLOAT_SCALE_MAX,
|
||||
AD5934_RTD_FLOAT_SCALE_MAX,
|
||||
AD5934_EC_FLOAT_SCALE_MAX,
|
||||
AD5934_EC_FLOAT_SCALE_MAX,
|
||||
AD5934_EC_FLOAT_SCALE_MAX
|
||||
};
|
||||
|
||||
static const uint16_t AD5934_Scale_Out_Min[AD5934_CH_MAX] = {
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_REF_OUT_SCALE_MIN,
|
||||
AD5934_RTD_OUT_SCALE_MIN,
|
||||
AD5934_RTD_OUT_SCALE_MIN,
|
||||
AD5934_RTD_OUT_SCALE_MIN,
|
||||
AD5934_EC_OUT_SCALE_MIN,
|
||||
AD5934_EC_OUT_SCALE_MIN,
|
||||
AD5934_EC_OUT_SCALE_MIN
|
||||
};
|
||||
|
||||
static const uint16_t AD5934_Scale_Out_Max[AD5934_CH_MAX] = {
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_REF_OUT_SCALE_MAX,
|
||||
AD5934_RTD_OUT_SCALE_MAX,
|
||||
AD5934_RTD_OUT_SCALE_MAX,
|
||||
AD5934_RTD_OUT_SCALE_MAX,
|
||||
AD5934_EC_OUT_SCALE_MAX,
|
||||
AD5934_EC_OUT_SCALE_MAX,
|
||||
AD5934_EC_OUT_SCALE_MAX
|
||||
};
|
||||
|
||||
|
||||
extern int16_t temperature_dut_samples[2][AD5934_TEMP_AVERAGES];
|
||||
extern int16_t temperature_ref_samples[2][AD5934_TEMP_AVERAGES];
|
||||
extern float temperature_display[AD5934_TEMP_AVERAGES];
|
||||
@@ -335,12 +425,16 @@ float AD5934_Get_Ref_Resistance(void);
|
||||
|
||||
float AD5934_GetTemperature(float mag_ref);
|
||||
|
||||
float AD5934_Calculate_Temperature(float mag_ref, float mag_dut);
|
||||
|
||||
float AD5934_GetImpedance(float temperature_dut);
|
||||
|
||||
float AD5934_GetMagnitude(void);
|
||||
|
||||
void AD5934_Wait_For_Data_Valid(void);
|
||||
|
||||
uint16_t AD5934_Compress_To_IntScale(float value, uint8_t scale);
|
||||
|
||||
float AD5934_Round_Float_Precision(float value, uint8_t number_of_decimals);
|
||||
|
||||
float AD5934_Linear_Correction(float raw_value);
|
||||
|
||||
@@ -130,8 +130,8 @@ extern "C" {
|
||||
|
||||
#define ADS1015_BURST_SIZE 5
|
||||
#define ADS1015_TRIM_COUNT 1
|
||||
#define ADS1015_HISTORY_SIZE 8
|
||||
#define ADS1015_IIR_ALPHA 0.3f
|
||||
#define ADS1015_HISTORY_SIZE 6
|
||||
#define ADS1015_IIR_ALPHA 0.4f
|
||||
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@ typedef struct {
|
||||
extern ADS1015_filter_t g_ph_filter;
|
||||
extern volatile uint32_t g_ms_counter; // Increment each 1ms Timer
|
||||
|
||||
void ADS1015(ADS1015_I2C* i2c, I2C_HandleTypeDef* hi2c, uint8_t i2cAddress);
|
||||
void ADS1015_Init(void);
|
||||
uint16_t ADSreadADC_SingleEnded(ADS1015_I2C* i2c, uint8_t channel);
|
||||
int16_t ADSreadADC_Differential_0_1(ADS1015_I2C* i2c);
|
||||
int16_t ADSreadADC_Differential_2_3(ADS1015_I2C* i2c);
|
||||
|
||||
@@ -150,6 +150,9 @@ uint32_t AD5934_ReadRegister(uint8_t regAddr, uint8_t numberOfBytes)
|
||||
******************************************************************************/
|
||||
void AD5934_Init(void)
|
||||
{
|
||||
|
||||
ADG715_ResetChannels(); // Disconnects Analog Switch on the CE / RTD / Ref Resistor
|
||||
|
||||
/************ Config Sweep******************/
|
||||
|
||||
// Place AD5934 in reset
|
||||
@@ -396,6 +399,49 @@ float AD5934_GetTemperature(float mag_ref)
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* @brief Check if PT100 or PT1000 to Calculate Temperature.
|
||||
*
|
||||
* @param mag_ref - Magnitude of the Reference Resistor.
|
||||
*
|
||||
* @param mag_dut - Magnitude of the device under test.
|
||||
*
|
||||
* @return Temperature in Celsius.
|
||||
******************************************************************************/
|
||||
float AD5934_Calculate_Temperature(float mag_ref, float mag_dut)
|
||||
{
|
||||
uint8_t ch_ref;
|
||||
float gain_factor, impedance_dut, ratio, discriminant;
|
||||
|
||||
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND
|
||||
{
|
||||
ch_ref = AD5934_CH_RTD_LOW_GAIN; //PT100
|
||||
gain_factor = AD5934_GAIN_FACTOR_100R;
|
||||
}
|
||||
else
|
||||
{
|
||||
ch_ref = AD5934_CH_RTD_MID_GAIN; //PT1000
|
||||
gain_factor = AD5934_GAIN_FACTOR_1K;
|
||||
}
|
||||
|
||||
float ratio_mag = mag_ref / mag_dut;
|
||||
|
||||
if(ch_ref==AD5934_CH_REF100R_LOW_GAIN) // only for PT100
|
||||
impedance_dut = AD5934_Linear_Correction(gain_factor * ratio_mag);
|
||||
else
|
||||
impedance_dut = gain_factor * ratio_mag;
|
||||
|
||||
// Calculate impedance ratio with the Reference Resistor
|
||||
ratio = impedance_dut / gain_factor;
|
||||
|
||||
// Calculate impedance discriminant with the ratio
|
||||
discriminant = (AD5934_RTD_A*AD5934_RTD_A)-(4.0f * AD5934_RTD_B * (1.0f - ratio));
|
||||
|
||||
return ((-AD5934_RTD_A + sqrtf(discriminant))/(2.0f * AD5934_RTD_B));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Calculates impedance and converts it to conductivity using a 2-point
|
||||
* temperature-compensated model.
|
||||
@@ -469,6 +515,9 @@ float AD5934_GetImpedance(float temperature_dut)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* @brief Get Real and Imaginary values and calculate Magnitude.
|
||||
*
|
||||
@@ -524,6 +573,36 @@ void AD5934_Wait_For_Data_Valid(void)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Converte um valor float em uma escala de FLOAT_MIN a FLOAT_MAX para uint16_t em escala de UINT16_MIN a UINT16_MAX
|
||||
*
|
||||
* @param value Valor float entre FLOAT_MIN e FLOAT_MAX
|
||||
* @param scale Escala de Ref Res, EC e RTD
|
||||
*
|
||||
* @return uint16_t Valor convertido na escala de UINT16_MIN a UINT16_MAX
|
||||
*/
|
||||
uint16_t AD5934_Compress_To_IntScale(float value, uint8_t scale)
|
||||
{
|
||||
// Proteção contra índice inválido para evitar HardFault
|
||||
if (scale >= AD5934_CH_MAX)
|
||||
return 0;
|
||||
|
||||
// Verifica limites do valor de entrada
|
||||
if (value < AD5934_Scale_Float_Min[scale])
|
||||
return AD5934_Scale_Out_Min[scale];
|
||||
else if (value > AD5934_Scale_Float_Max[scale])
|
||||
return AD5934_Scale_Out_Max[scale];
|
||||
|
||||
// Converte o valor usando a fórmula: ((value - FLOAT_MIN) / (FLOAT_MAX - FLOAT_MIN)) * (UINT16_MAX - UINT16_MIN) + UINT16_MIN
|
||||
uint16_t result = (uint16_t)(((value - AD5934_Scale_Float_Min[scale]) / (AD5934_Scale_Float_Max[scale] - AD5934_Scale_Float_Min[scale])) * ((float)AD5934_Scale_Out_Max[scale] - (float)AD5934_Scale_Out_Min[scale]) + (float)AD5934_Scale_Out_Min[scale]);
|
||||
|
||||
// Garante que o resultado não exceda o limite superior
|
||||
if (result > AD5934_Scale_Out_Max[scale])
|
||||
return (AD5934_Scale_Out_Max[scale]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Reduz a precisão decimal de um float através de truncamento.
|
||||
@@ -955,11 +1034,11 @@ void ADG715_Update(AD5934_Channel_t channel)
|
||||
ADG715_SetRegisterValue(ADG715_Channel_Map[channel]);
|
||||
|
||||
// Gestão inteligente do delay de acomodação
|
||||
if (channel >= AD5934_CH_EC_LOW_GAIN)
|
||||
/* if (channel >= AD5934_CH_EC_LOW_GAIN)
|
||||
HAL_Delay(20); // Canais de Condutividade Elétrica (CE) necessitam de maior estabilização química
|
||||
else
|
||||
HAL_Delay(10); // Resistores puros e RTD estabilizam mais rapidamente
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -39,12 +39,13 @@ static void ADSbegin(ADS1015_I2C *i2c) {
|
||||
}
|
||||
|
||||
// Declare an ADS1015 structure
|
||||
void ADS1015(ADS1015_I2C *i2c, I2C_HandleTypeDef *hi2c, uint8_t i2cAddress) {
|
||||
i2c->hi2c = hi2c;
|
||||
i2c->m_i2cAddress = i2cAddress; // << 1; // It's Important to shift the address << 1
|
||||
i2c->m_conversionDelay = ADS1015_CONVERSIONDELAY;
|
||||
i2c->m_bitShift = 4;
|
||||
i2c->m_gain = GAIN_SIXTEEN; /* +/- 6.144V range (limited to VDD +0.3V max!) */
|
||||
void ADS1015_Init(void)
|
||||
{
|
||||
i2c_ads1015.hi2c = &hi2c1;
|
||||
i2c_ads1015.m_i2cAddress = ADS1015_ADDR_GND; // It's Important to shift the address << 1
|
||||
i2c_ads1015.m_conversionDelay = ADS1015_CONVERSIONDELAY;
|
||||
i2c_ads1015.m_bitShift = 4;
|
||||
i2c_ads1015.m_gain = GAIN_SIXTEEN; /* +/- 6.144V range (limited to VDD +0.3V max!) */
|
||||
//ADSbegin(i2c); //Ready is not used
|
||||
}
|
||||
|
||||
|
||||
+111
-103
@@ -69,7 +69,7 @@ uint8_t imag_text[6];
|
||||
uint8_t rs485_text[6];
|
||||
|
||||
|
||||
uint8_t newline[]={'\n','\0'};
|
||||
uint8_t newline[]={'\r','\n'};
|
||||
uint8_t doubleSpace[]={'_','_','\0'};
|
||||
uint8_t newline_ph[]={'_','p','H','\n','\0'};
|
||||
uint8_t newline_admi[]={'_','u','S','\n','\0'};
|
||||
@@ -95,8 +95,8 @@ float Temp_Samples[STM32_TEMPERATURE_AVERAGES]={0};
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
void SystemClock_Config(void);
|
||||
/* USER CODE BEGIN PFP */
|
||||
void intToStr(int N, char *str);
|
||||
void FloatToString(char * buf, double val);
|
||||
void intToStr(int16_t N, uint8_t *str);
|
||||
void FloatToString(uint8_t * buf, double val);
|
||||
|
||||
/* USER CODE END PFP */
|
||||
|
||||
@@ -121,6 +121,8 @@ int main(void)
|
||||
uint8_t previous_green_state = 0;
|
||||
uint8_t previous_red_state = 0;
|
||||
|
||||
uint8_t mux_connection = 0;
|
||||
|
||||
// Variables for timing
|
||||
uint32_t previous_millis_green = 0;
|
||||
uint32_t previous_millis_red = 0;
|
||||
@@ -132,7 +134,7 @@ int main(void)
|
||||
|
||||
|
||||
/*! Temporary variables */
|
||||
uint8_t tempString[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
uint8_t tempString[15] = {0};
|
||||
|
||||
uint8_t i;
|
||||
|
||||
@@ -182,20 +184,13 @@ int main(void)
|
||||
|
||||
digital_outputs_init();
|
||||
|
||||
// Initialize RS-485 driver
|
||||
|
||||
rs485_init();
|
||||
|
||||
|
||||
ADS1015(&i2c_ads1015, &hi2c1, ADS1015_ADDR_GND);
|
||||
//ADSsetGain(&i2c_ads1015, GAIN_FOUR);
|
||||
ADS1015_Init(); // Initializes pH Measurement
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ADG715_ResetChannels();
|
||||
// Start CE and RTD Measurement
|
||||
AD5934_Init();
|
||||
AD5934_Init(); // Initializes CE and RTD Measurement
|
||||
|
||||
|
||||
|
||||
@@ -290,33 +285,74 @@ int main(void)
|
||||
current_millis = g_ms_counter;
|
||||
|
||||
|
||||
if((current_millis % 100) == 0) // Send data each 50ms
|
||||
{
|
||||
|
||||
|
||||
if (g_ref_filter.value_valid) // Reference Resistor on Board: 100 Ohms or 1000 Ohms
|
||||
{
|
||||
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND
|
||||
mux_connection = AD5934_CH_REF100R_LOW_GAIN; // 100 Ohms Reference Resistor
|
||||
else
|
||||
mux_connection = AD5934_CH_REF1K_MID_GAIN; // 1K Reference Resistor
|
||||
|
||||
uint16_t reference_final = AD5934_REF_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_ref_filter.filtered_value, mux_connection);
|
||||
intToStr(reference_final, tempString);
|
||||
// float ref_final = g_ref_filter.filtered_value;
|
||||
//FloatToString(tempString, ref_final);
|
||||
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
|
||||
rs485_send_broadcast(newline, (strlen((uint8_t*)newline)));
|
||||
}
|
||||
|
||||
if (g_ec_filter.value_valid) // EC
|
||||
{
|
||||
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) == GPIO_PIN_SET) // Hardware Setup: Gain Selection (PA6)
|
||||
mux_connection = AD5934_CH_EC_HIGH_GAIN;
|
||||
else
|
||||
mux_connection = AD5934_CH_EC_MID_GAIN;
|
||||
|
||||
uint16_t ec_final = AD5934_Compress_To_IntScale(g_ec_filter.filtered_value, mux_connection);
|
||||
intToStr(ec_final, tempString);
|
||||
/* float ec_final = g_ec_filter.filtered_value;
|
||||
FloatToString(tempString, ec_final);*/
|
||||
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
|
||||
rs485_send_broadcast(newline, (strlen((uint8_t*)newline)));
|
||||
}
|
||||
|
||||
if (g_rtd_filter.value_valid) // PT100 or PT1000 in °C
|
||||
{
|
||||
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_7) == GPIO_PIN_SET) // OFF = PT1000, ON = PT100, PA7 has internal pull-up and switch connects to GND
|
||||
mux_connection = AD5934_CH_RTD_LOW_GAIN; //PT100
|
||||
else
|
||||
mux_connection = AD5934_CH_RTD_MID_GAIN; //PT1000
|
||||
|
||||
uint16_t rtd_final = AD5934_RTD_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_rtd_filter.filtered_value, mux_connection);
|
||||
intToStr(rtd_final, tempString);
|
||||
// float rtd_final = g_rtd_filter.filtered_value;
|
||||
// FloatToString(tempString, rtd_final);
|
||||
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
|
||||
rs485_send_broadcast(newline, (strlen((uint8_t*)newline)));
|
||||
}
|
||||
|
||||
if (g_ph_filter.value_valid) // pH
|
||||
{
|
||||
float ph_final = g_ph_filter.filtered_value;
|
||||
FloatToString(tempString, ph_final);
|
||||
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
|
||||
rs485_send_broadcast(newline, (strlen((uint8_t*)newline)));
|
||||
}
|
||||
|
||||
rs485_send_broadcast(newline, (strlen((uint8_t*)newline)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Piscar LED verde em PB5 a cada 0,5 segundos
|
||||
if ((current_millis - previous_millis_green) >= 500)
|
||||
{
|
||||
previous_millis_green = current_millis;
|
||||
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);
|
||||
|
||||
// Check if state changed and send via RS485
|
||||
uint8_t current_green_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5);
|
||||
if (current_green_state != previous_green_state)
|
||||
{
|
||||
previous_green_state = current_green_state;
|
||||
uint8_t led_data[2] = {0x01, current_green_state}; // Command 0x01 for green LED
|
||||
|
||||
}
|
||||
/*
|
||||
status1 = rs485_send_broadcast(ph_t, strlen((char*)ph_t));
|
||||
|
||||
|
||||
ph_compensated = ADSCalculate_ph_mV() ;
|
||||
|
||||
|
||||
FloatToString(tempString, ph_compensated);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_ph, strlen((char*)newline_ph));
|
||||
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
// Piscar LED vermelho em PB4 a cada 1 segundo
|
||||
@@ -325,54 +361,6 @@ int main(void)
|
||||
previous_millis_red = current_millis;
|
||||
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_4);
|
||||
|
||||
// Check if state changed and send via RS485
|
||||
uint8_t current_red_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4);
|
||||
if (current_red_state != previous_red_state)
|
||||
{
|
||||
previous_red_state = current_red_state;
|
||||
uint8_t led_data[2] = {0x02, current_red_state}; // Command 0x02 for red LED
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (g_rtd_filter.value_valid)
|
||||
{
|
||||
float rtd_final = g_rtd_filter.filtered_value;
|
||||
|
||||
status1 = rs485_send_broadcast(tm_t, strlen((char*)tm_t));
|
||||
//temperature_RTD = AD5934_GetTemperature(refResistance);
|
||||
FloatToString(tempString, rtd_final);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_temp, strlen((char*)newline_temp));
|
||||
}
|
||||
|
||||
if (g_ec_filter.value_valid)
|
||||
{
|
||||
float ec_final = g_ec_filter.filtered_value;
|
||||
status1 = rs485_send_broadcast(ad_t, strlen((char*)ad_t));
|
||||
//admittance_EC = AD5934_GetImpedance(temperature_RTD);
|
||||
FloatToString(tempString, ec_final);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_admi, strlen((char*)newline_admi));
|
||||
}
|
||||
|
||||
if (g_ref_filter.value_valid)
|
||||
{
|
||||
//float reference_final = g_ref_filter.filtered_value;
|
||||
status1 = rs485_send_broadcast(ph_t, strlen((char*)ph_t));
|
||||
ph_compensated = g_ph_filter.filtered_value;
|
||||
FloatToString(tempString, ph_compensated);
|
||||
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_ph, strlen((char*)newline_ph));
|
||||
|
||||
status1 = rs485_send_broadcast(newline, strlen((char*)newline));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -469,7 +457,7 @@ void SystemClock_Config(void)
|
||||
*
|
||||
* @return None.
|
||||
*******************************************************************************/
|
||||
void FloatToString(char *buf, double val)
|
||||
void FloatToString(uint8_t *buf, double val)
|
||||
{
|
||||
char temp[20]; // Buffer auxiliar para construção segura
|
||||
int i = 0;
|
||||
@@ -531,38 +519,58 @@ void FloatToString(char *buf, double val)
|
||||
|
||||
|
||||
|
||||
void intToStr(int N, char *str) {
|
||||
int i = 0;
|
||||
void intToStr(int16_t N, uint8_t *str)
|
||||
{
|
||||
int16_t i = 0;
|
||||
int16_t sign = N;
|
||||
uint8_t max_len = 15; // Tamanho máximo do buffer
|
||||
uint8_t width = 4; // mínimo 4 caracteres
|
||||
|
||||
// Save the copy of the number for sign
|
||||
int sign = N;
|
||||
// Trata o caso do número zero isoladamente
|
||||
if (N == 0)
|
||||
{
|
||||
// Preenche com zeros à esquerda até atingir a largura desejada
|
||||
while (width > 1 && i < (max_len - 1))
|
||||
{
|
||||
str[i++] = '0';
|
||||
width--;
|
||||
}
|
||||
str[i++] = '0';
|
||||
str[i] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
// If the number is negative, make it positive
|
||||
if (N < 0)
|
||||
N = -N;
|
||||
|
||||
// Extract digits from the number and add them to the
|
||||
// string
|
||||
while (N > 0) {
|
||||
|
||||
// Convert integer digit to character and store
|
||||
// it in the str
|
||||
str[i++] = N % 10 + '0';
|
||||
// Extração dos dígitos
|
||||
while (N > 0)
|
||||
{
|
||||
if (i >= (max_len - 1))
|
||||
break; // Proteção de estouro
|
||||
str[i++] = (N % 10) + '0';
|
||||
N /= 10;
|
||||
}
|
||||
|
||||
// If the number was negative, add a minus sign to the
|
||||
// string
|
||||
if (sign < 0) {
|
||||
// Adiciona o sinal de menos se necessário
|
||||
if (sign < 0)
|
||||
{
|
||||
if (i < (max_len - 1))
|
||||
str[i++] = '-';
|
||||
}
|
||||
|
||||
// Null-terminate the string
|
||||
// Preenche com zeros à esquerda (considerando o espaço ocupado pelos dígitos e sinal)
|
||||
while (i < width && i < (max_len - 1))
|
||||
{
|
||||
str[i++] = '0';
|
||||
}
|
||||
|
||||
str[i] = '\0';
|
||||
|
||||
// Reverse the string to get the correct order
|
||||
for (int j = 0, k = i - 1; j < k; j++, k--) {
|
||||
char temp = str[j];
|
||||
// Inverte a string para colocar na ordem correta
|
||||
for (uint8_t j = 0, k = i - 1; j < k; j++, k--)
|
||||
{
|
||||
uint8_t temp = str[j];
|
||||
str[j] = str[k];
|
||||
str[k] = temp;
|
||||
}
|
||||
|
||||
@@ -2,29 +2,31 @@
|
||||
../Core/Src/ad5934_driver.c:75:10:AD5934_GetRegisterValue 3
|
||||
../Core/Src/ad5934_driver.c:114:10:AD5934_ReadRegister 3
|
||||
../Core/Src/ad5934_driver.c:151:6:AD5934_Init 1
|
||||
../Core/Src/ad5934_driver.c:179:6:AD5934_RestartSweep 1
|
||||
../Core/Src/ad5934_driver.c:211:6:AD5934_Repeat_Sweep 1
|
||||
../Core/Src/ad5934_driver.c:224:6:AD5934_StopSweep 1
|
||||
../Core/Src/ad5934_driver.c:241:10:AD5934_Sweep 1
|
||||
../Core/Src/ad5934_driver.c:267:7:AD5934_Get_Ref_Resistance 4
|
||||
../Core/Src/ad5934_driver.c:318:7:AD5934_GetTemperature 5
|
||||
../Core/Src/ad5934_driver.c:406:7:AD5934_GetImpedance 10
|
||||
../Core/Src/ad5934_driver.c:479:7:AD5934_GetMagnitude 1
|
||||
../Core/Src/ad5934_driver.c:500:6:AD5934_Wait_For_Data_Valid 3
|
||||
../Core/Src/ad5934_driver.c:535:7:AD5934_Round_Float_Precision 2
|
||||
../Core/Src/ad5934_driver.c:560:7:AD5934_Linear_Correction 1
|
||||
../Core/Src/ad5934_driver.c:577:7:AD5934_EC_Compensate_To_25C 2
|
||||
../Core/Src/ad5934_driver.c:593:7:AD5934_EC_Calibrate_Temperature 5
|
||||
../Core/Src/ad5934_driver.c:642:7:AD5934_Calibrate 1
|
||||
../Core/Src/ad5934_driver.c:658:6:AD5934_Process_System 24
|
||||
../Core/Src/ad5934_driver.c:783:6:AD5934_Sort_Array 4
|
||||
../Core/Src/ad5934_driver.c:805:7:AD5934_Trimmed_Mean 3
|
||||
../Core/Src/ad5934_driver.c:831:7:AD5934_History_Average 2
|
||||
../Core/Src/ad5934_driver.c:845:6:AD5934_Process_Sample 4
|
||||
../Core/Src/ad5934_driver.c:891:6:AD5934_RTD_NewSample 1
|
||||
../Core/Src/ad5934_driver.c:898:6:AD5934_EC_NewSample 1
|
||||
../Core/Src/ad5934_driver.c:905:6:AD5934_Reference_NewSample 1
|
||||
../Core/Src/ad5934_driver.c:921:6:ADG715_SetRegisterValue 1
|
||||
../Core/Src/ad5934_driver.c:931:6:ADG715_SetChannels 1
|
||||
../Core/Src/ad5934_driver.c:936:6:ADG715_ResetChannels 1
|
||||
../Core/Src/ad5934_driver.c:948:6:ADG715_Update 3
|
||||
../Core/Src/ad5934_driver.c:182:6:AD5934_RestartSweep 1
|
||||
../Core/Src/ad5934_driver.c:214:6:AD5934_Repeat_Sweep 1
|
||||
../Core/Src/ad5934_driver.c:227:6:AD5934_StopSweep 1
|
||||
../Core/Src/ad5934_driver.c:244:10:AD5934_Sweep 1
|
||||
../Core/Src/ad5934_driver.c:270:7:AD5934_Get_Ref_Resistance 4
|
||||
../Core/Src/ad5934_driver.c:321:7:AD5934_GetTemperature 5
|
||||
../Core/Src/ad5934_driver.c:411:7:AD5934_Calculate_Temperature 3
|
||||
../Core/Src/ad5934_driver.c:452:7:AD5934_GetImpedance 10
|
||||
../Core/Src/ad5934_driver.c:528:7:AD5934_GetMagnitude 1
|
||||
../Core/Src/ad5934_driver.c:549:6:AD5934_Wait_For_Data_Valid 3
|
||||
../Core/Src/ad5934_driver.c:584:10:AD5934_Compress_To_IntScale 5
|
||||
../Core/Src/ad5934_driver.c:614:7:AD5934_Round_Float_Precision 2
|
||||
../Core/Src/ad5934_driver.c:639:7:AD5934_Linear_Correction 1
|
||||
../Core/Src/ad5934_driver.c:656:7:AD5934_EC_Compensate_To_25C 2
|
||||
../Core/Src/ad5934_driver.c:672:7:AD5934_EC_Calibrate_Temperature 5
|
||||
../Core/Src/ad5934_driver.c:721:7:AD5934_Calibrate 1
|
||||
../Core/Src/ad5934_driver.c:737:6:AD5934_Process_System 24
|
||||
../Core/Src/ad5934_driver.c:862:6:AD5934_Sort_Array 4
|
||||
../Core/Src/ad5934_driver.c:884:7:AD5934_Trimmed_Mean 3
|
||||
../Core/Src/ad5934_driver.c:910:7:AD5934_History_Average 2
|
||||
../Core/Src/ad5934_driver.c:924:6:AD5934_Process_Sample 4
|
||||
../Core/Src/ad5934_driver.c:970:6:AD5934_RTD_NewSample 1
|
||||
../Core/Src/ad5934_driver.c:977:6:AD5934_EC_NewSample 1
|
||||
../Core/Src/ad5934_driver.c:984:6:AD5934_Reference_NewSample 1
|
||||
../Core/Src/ad5934_driver.c:1000:6:ADG715_SetRegisterValue 1
|
||||
../Core/Src/ad5934_driver.c:1010:6:ADG715_SetChannels 1
|
||||
../Core/Src/ad5934_driver.c:1015:6:ADG715_ResetChannels 1
|
||||
../Core/Src/ad5934_driver.c:1027:6:ADG715_Update 2
|
||||
|
||||
Binary file not shown.
@@ -2,29 +2,31 @@
|
||||
../Core/Src/ad5934_driver.c:75:10:AD5934_GetRegisterValue 40 static
|
||||
../Core/Src/ad5934_driver.c:114:10:AD5934_ReadRegister 48 static
|
||||
../Core/Src/ad5934_driver.c:151:6:AD5934_Init 8 static
|
||||
../Core/Src/ad5934_driver.c:179:6:AD5934_RestartSweep 8 static
|
||||
../Core/Src/ad5934_driver.c:211:6:AD5934_Repeat_Sweep 8 static
|
||||
../Core/Src/ad5934_driver.c:224:6:AD5934_StopSweep 8 static
|
||||
../Core/Src/ad5934_driver.c:241:10:AD5934_Sweep 16 static
|
||||
../Core/Src/ad5934_driver.c:267:7:AD5934_Get_Ref_Resistance 48 static
|
||||
../Core/Src/ad5934_driver.c:318:7:AD5934_GetTemperature 72 static
|
||||
../Core/Src/ad5934_driver.c:406:7:AD5934_GetImpedance 56 static
|
||||
../Core/Src/ad5934_driver.c:479:7:AD5934_GetMagnitude 24 static
|
||||
../Core/Src/ad5934_driver.c:500:6:AD5934_Wait_For_Data_Valid 24 static
|
||||
../Core/Src/ad5934_driver.c:535:7:AD5934_Round_Float_Precision 24 static
|
||||
../Core/Src/ad5934_driver.c:560:7:AD5934_Linear_Correction 24 static
|
||||
../Core/Src/ad5934_driver.c:577:7:AD5934_EC_Compensate_To_25C 24 static
|
||||
../Core/Src/ad5934_driver.c:593:7:AD5934_EC_Calibrate_Temperature 152 static
|
||||
../Core/Src/ad5934_driver.c:642:7:AD5934_Calibrate 48 static
|
||||
../Core/Src/ad5934_driver.c:658:6:AD5934_Process_System 16 static
|
||||
../Core/Src/ad5934_driver.c:783:6:AD5934_Sort_Array 24 static
|
||||
../Core/Src/ad5934_driver.c:805:7:AD5934_Trimmed_Mean 32 static
|
||||
../Core/Src/ad5934_driver.c:831:7:AD5934_History_Average 24 static
|
||||
../Core/Src/ad5934_driver.c:845:6:AD5934_Process_Sample 32 static
|
||||
../Core/Src/ad5934_driver.c:891:6:AD5934_RTD_NewSample 16 static
|
||||
../Core/Src/ad5934_driver.c:898:6:AD5934_EC_NewSample 16 static
|
||||
../Core/Src/ad5934_driver.c:905:6:AD5934_Reference_NewSample 16 static
|
||||
../Core/Src/ad5934_driver.c:921:6:ADG715_SetRegisterValue 32 static
|
||||
../Core/Src/ad5934_driver.c:931:6:ADG715_SetChannels 16 static
|
||||
../Core/Src/ad5934_driver.c:936:6:ADG715_ResetChannels 8 static
|
||||
../Core/Src/ad5934_driver.c:948:6:ADG715_Update 16 static
|
||||
../Core/Src/ad5934_driver.c:182:6:AD5934_RestartSweep 8 static
|
||||
../Core/Src/ad5934_driver.c:214:6:AD5934_Repeat_Sweep 8 static
|
||||
../Core/Src/ad5934_driver.c:227:6:AD5934_StopSweep 8 static
|
||||
../Core/Src/ad5934_driver.c:244:10:AD5934_Sweep 16 static
|
||||
../Core/Src/ad5934_driver.c:270:7:AD5934_Get_Ref_Resistance 48 static
|
||||
../Core/Src/ad5934_driver.c:321:7:AD5934_GetTemperature 72 static
|
||||
../Core/Src/ad5934_driver.c:411:7:AD5934_Calculate_Temperature 40 static
|
||||
../Core/Src/ad5934_driver.c:452:7:AD5934_GetImpedance 56 static
|
||||
../Core/Src/ad5934_driver.c:528:7:AD5934_GetMagnitude 24 static
|
||||
../Core/Src/ad5934_driver.c:549:6:AD5934_Wait_For_Data_Valid 24 static
|
||||
../Core/Src/ad5934_driver.c:584:10:AD5934_Compress_To_IntScale 32 static
|
||||
../Core/Src/ad5934_driver.c:614:7:AD5934_Round_Float_Precision 24 static
|
||||
../Core/Src/ad5934_driver.c:639:7:AD5934_Linear_Correction 24 static
|
||||
../Core/Src/ad5934_driver.c:656:7:AD5934_EC_Compensate_To_25C 24 static
|
||||
../Core/Src/ad5934_driver.c:672:7:AD5934_EC_Calibrate_Temperature 152 static
|
||||
../Core/Src/ad5934_driver.c:721:7:AD5934_Calibrate 48 static
|
||||
../Core/Src/ad5934_driver.c:737:6:AD5934_Process_System 16 static
|
||||
../Core/Src/ad5934_driver.c:862:6:AD5934_Sort_Array 24 static
|
||||
../Core/Src/ad5934_driver.c:884:7:AD5934_Trimmed_Mean 32 static
|
||||
../Core/Src/ad5934_driver.c:910:7:AD5934_History_Average 24 static
|
||||
../Core/Src/ad5934_driver.c:924:6:AD5934_Process_Sample 32 static
|
||||
../Core/Src/ad5934_driver.c:970:6:AD5934_RTD_NewSample 16 static
|
||||
../Core/Src/ad5934_driver.c:977:6:AD5934_EC_NewSample 16 static
|
||||
../Core/Src/ad5934_driver.c:984:6:AD5934_Reference_NewSample 16 static
|
||||
../Core/Src/ad5934_driver.c:1000:6:ADG715_SetRegisterValue 32 static
|
||||
../Core/Src/ad5934_driver.c:1010:6:ADG715_SetChannels 16 static
|
||||
../Core/Src/ad5934_driver.c:1015:6:ADG715_ResetChannels 8 static
|
||||
../Core/Src/ad5934_driver.c:1027:6:ADG715_Update 16 static
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
../Core/Src/ads1015_driver.c:21:13:writeRegister 1
|
||||
../Core/Src/ads1015_driver.c:27:17:readRegister 1
|
||||
../Core/Src/ads1015_driver.c:35:13:ADSbegin 2
|
||||
../Core/Src/ads1015_driver.c:42:6:ADS1015 1
|
||||
../Core/Src/ads1015_driver.c:66:6:ADSsetGain 1
|
||||
../Core/Src/ads1015_driver.c:71:11:ADSgetGain 1
|
||||
../Core/Src/ads1015_driver.c:76:10:ADSreadADC_SingleEnded 6
|
||||
../Core/Src/ads1015_driver.c:128:9:ADSreadADC_Differential_0_1 3
|
||||
../Core/Src/ads1015_driver.c:173:9:ADSreadADC_Differential_2_3 3
|
||||
../Core/Src/ads1015_driver.c:219:6:ADSstartComparator_SingleEnded 5
|
||||
../Core/Src/ads1015_driver.c:261:9:ADSgetLastConversionResults 3
|
||||
../Core/Src/ads1015_driver.c:283:6:ADS1015_Process_System 10
|
||||
../Core/Src/ads1015_driver.c:366:6:ADS1015_Sort_Array 4
|
||||
../Core/Src/ads1015_driver.c:388:7:ADS1015_Trimmed_Mean 3
|
||||
../Core/Src/ads1015_driver.c:414:7:ADS1015_History_Average 2
|
||||
../Core/Src/ads1015_driver.c:428:6:ADS1015_Process_Sample 4
|
||||
../Core/Src/ads1015_driver.c:473:6:ADS1015_pH_NewSample 1
|
||||
../Core/Src/ads1015_driver.c:481:7:ADSCalculate_ph_mV 3
|
||||
../Core/Src/ads1015_driver.c:510:7:ADSCalculate_ph_Compensated 1
|
||||
../Core/Src/ads1015_driver.c:536:7:ADSCalculate_ph_Uncompensated 4
|
||||
../Core/Src/ads1015_driver.c:588:7:ADSinterpolate_ph 5
|
||||
../Core/Src/ads1015_driver.c:626:7:ADSRound_Float_Precision 2
|
||||
../Core/Src/ads1015_driver.c:42:6:ADS1015_Init 1
|
||||
../Core/Src/ads1015_driver.c:67:6:ADSsetGain 1
|
||||
../Core/Src/ads1015_driver.c:72:11:ADSgetGain 1
|
||||
../Core/Src/ads1015_driver.c:77:10:ADSreadADC_SingleEnded 6
|
||||
../Core/Src/ads1015_driver.c:129:9:ADSreadADC_Differential_0_1 3
|
||||
../Core/Src/ads1015_driver.c:174:9:ADSreadADC_Differential_2_3 3
|
||||
../Core/Src/ads1015_driver.c:220:6:ADSstartComparator_SingleEnded 5
|
||||
../Core/Src/ads1015_driver.c:262:9:ADSgetLastConversionResults 3
|
||||
../Core/Src/ads1015_driver.c:284:6:ADS1015_Process_System 10
|
||||
../Core/Src/ads1015_driver.c:367:6:ADS1015_Sort_Array 4
|
||||
../Core/Src/ads1015_driver.c:389:7:ADS1015_Trimmed_Mean 3
|
||||
../Core/Src/ads1015_driver.c:415:7:ADS1015_History_Average 2
|
||||
../Core/Src/ads1015_driver.c:429:6:ADS1015_Process_Sample 4
|
||||
../Core/Src/ads1015_driver.c:474:6:ADS1015_pH_NewSample 1
|
||||
../Core/Src/ads1015_driver.c:482:7:ADSCalculate_ph_mV 3
|
||||
../Core/Src/ads1015_driver.c:511:7:ADSCalculate_ph_Compensated 1
|
||||
../Core/Src/ads1015_driver.c:537:7:ADSCalculate_ph_Uncompensated 4
|
||||
../Core/Src/ads1015_driver.c:589:7:ADSinterpolate_ph 5
|
||||
../Core/Src/ads1015_driver.c:627:7:ADSRound_Float_Precision 2
|
||||
|
||||
Binary file not shown.
@@ -1,22 +1,22 @@
|
||||
../Core/Src/ads1015_driver.c:21:13:writeRegister 32 static
|
||||
../Core/Src/ads1015_driver.c:27:17:readRegister 32 static
|
||||
../Core/Src/ads1015_driver.c:35:13:ADSbegin 16 static
|
||||
../Core/Src/ads1015_driver.c:42:6:ADS1015 24 static
|
||||
../Core/Src/ads1015_driver.c:66:6:ADSsetGain 16 static
|
||||
../Core/Src/ads1015_driver.c:71:11:ADSgetGain 16 static
|
||||
../Core/Src/ads1015_driver.c:76:10:ADSreadADC_SingleEnded 24 static
|
||||
../Core/Src/ads1015_driver.c:128:9:ADSreadADC_Differential_0_1 24 static
|
||||
../Core/Src/ads1015_driver.c:173:9:ADSreadADC_Differential_2_3 24 static
|
||||
../Core/Src/ads1015_driver.c:219:6:ADSstartComparator_SingleEnded 24 static
|
||||
../Core/Src/ads1015_driver.c:261:9:ADSgetLastConversionResults 24 static
|
||||
../Core/Src/ads1015_driver.c:283:6:ADS1015_Process_System 16 static
|
||||
../Core/Src/ads1015_driver.c:366:6:ADS1015_Sort_Array 24 static
|
||||
../Core/Src/ads1015_driver.c:388:7:ADS1015_Trimmed_Mean 32 static
|
||||
../Core/Src/ads1015_driver.c:414:7:ADS1015_History_Average 24 static
|
||||
../Core/Src/ads1015_driver.c:428:6:ADS1015_Process_Sample 32 static
|
||||
../Core/Src/ads1015_driver.c:473:6:ADS1015_pH_NewSample 16 static
|
||||
../Core/Src/ads1015_driver.c:481:7:ADSCalculate_ph_mV 16 static
|
||||
../Core/Src/ads1015_driver.c:510:7:ADSCalculate_ph_Compensated 48 static
|
||||
../Core/Src/ads1015_driver.c:536:7:ADSCalculate_ph_Uncompensated 24 static
|
||||
../Core/Src/ads1015_driver.c:588:7:ADSinterpolate_ph 192 static
|
||||
../Core/Src/ads1015_driver.c:626:7:ADSRound_Float_Precision 24 static
|
||||
../Core/Src/ads1015_driver.c:42:6:ADS1015_Init 4 static
|
||||
../Core/Src/ads1015_driver.c:67:6:ADSsetGain 16 static
|
||||
../Core/Src/ads1015_driver.c:72:11:ADSgetGain 16 static
|
||||
../Core/Src/ads1015_driver.c:77:10:ADSreadADC_SingleEnded 24 static
|
||||
../Core/Src/ads1015_driver.c:129:9:ADSreadADC_Differential_0_1 24 static
|
||||
../Core/Src/ads1015_driver.c:174:9:ADSreadADC_Differential_2_3 24 static
|
||||
../Core/Src/ads1015_driver.c:220:6:ADSstartComparator_SingleEnded 24 static
|
||||
../Core/Src/ads1015_driver.c:262:9:ADSgetLastConversionResults 24 static
|
||||
../Core/Src/ads1015_driver.c:284:6:ADS1015_Process_System 16 static
|
||||
../Core/Src/ads1015_driver.c:367:6:ADS1015_Sort_Array 24 static
|
||||
../Core/Src/ads1015_driver.c:389:7:ADS1015_Trimmed_Mean 32 static
|
||||
../Core/Src/ads1015_driver.c:415:7:ADS1015_History_Average 24 static
|
||||
../Core/Src/ads1015_driver.c:429:6:ADS1015_Process_Sample 32 static
|
||||
../Core/Src/ads1015_driver.c:474:6:ADS1015_pH_NewSample 16 static
|
||||
../Core/Src/ads1015_driver.c:482:7:ADSCalculate_ph_mV 16 static
|
||||
../Core/Src/ads1015_driver.c:511:7:ADSCalculate_ph_Compensated 48 static
|
||||
../Core/Src/ads1015_driver.c:537:7:ADSCalculate_ph_Uncompensated 24 static
|
||||
../Core/Src/ads1015_driver.c:589:7:ADSinterpolate_ph 192 static
|
||||
../Core/Src/ads1015_driver.c:627:7:ADSRound_Float_Precision 24 static
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
../Core/Src/main.c:113:5:main 8
|
||||
../Core/Src/main.c:421:6:SystemClock_Config 4
|
||||
../Core/Src/main.c:472:6:FloatToString 8
|
||||
../Core/Src/main.c:534:6:intToStr 5
|
||||
../Core/Src/main.c:572:6:HAL_TIM_PeriodElapsedCallback 2
|
||||
../Core/Src/main.c:596:6:Error_Handler 1
|
||||
../Core/Src/main.c:113:5:main 11
|
||||
../Core/Src/main.c:409:6:SystemClock_Config 4
|
||||
../Core/Src/main.c:460:6:FloatToString 8
|
||||
../Core/Src/main.c:522:6:intToStr 12
|
||||
../Core/Src/main.c:580:6:HAL_TIM_PeriodElapsedCallback 2
|
||||
../Core/Src/main.c:604:6:Error_Handler 1
|
||||
|
||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
../Core/Src/main.c:113:5:main 64 static
|
||||
../Core/Src/main.c:421:6:SystemClock_Config 88 static
|
||||
../Core/Src/main.c:472:6:FloatToString 104 static
|
||||
../Core/Src/main.c:534:6:intToStr 40 static
|
||||
../Core/Src/main.c:572:6:HAL_TIM_PeriodElapsedCallback 16 static
|
||||
../Core/Src/main.c:596:6:Error_Handler 4 static,ignoring_inline_asm
|
||||
../Core/Src/main.c:113:5:main 56 static
|
||||
../Core/Src/main.c:409:6:SystemClock_Config 88 static
|
||||
../Core/Src/main.c:460:6:FloatToString 104 static
|
||||
../Core/Src/main.c:522:6:intToStr 32 static
|
||||
../Core/Src/main.c:580:6:HAL_TIM_PeriodElapsedCallback 16 static
|
||||
../Core/Src/main.c:604:6:Error_Handler 4 static,ignoring_inline_asm
|
||||
|
||||
Binary file not shown.
+10599
-10231
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user