Fertirrega_v6 Without Blocking Samples

This commit is contained in:
2026-07-29 10:02:21 +01:00
parent e65f787c34
commit f1cf74ceaf
88 changed files with 13881 additions and 11752 deletions
+68 -12
View File
@@ -20,6 +20,7 @@
#include "main.h"
#include "adc.h"
#include "i2c.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
@@ -57,6 +58,8 @@
/* USER CODE BEGIN PV */
uint8_t rx_buffer[256]; /*!< Buffer for received data */
uint8_t tx_data[] = "Hello RS-485 Broadcast!"; /*!< Data to send */
@@ -158,14 +161,21 @@ int main(void)
MX_I2C1_Init();
MX_I2C2_Init();
MX_USART1_UART_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
Flash_Load_Page(&flash_data);
HAL_TIM_Base_Start_IT(&htim3);
//TempSensor_Init(&hadc1);
/*
HAL_TIM_Base_Start(&htim3);
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)AD_RES, 2); // Internal Temperature conversion
*/
@@ -176,8 +186,12 @@ int main(void)
rs485_init();
ADS1015(&i2c, &hi2c1, ADS_ADDR_GND);
ADSsetGain(&i2c, GAIN_FOUR);
ADS1015(&i2c_ads1015, &hi2c1, ADS1015_ADDR_GND);
//ADSsetGain(&i2c_ads1015, GAIN_FOUR);
ADG715_ResetChannels();
// Start CE and RTD Measurement
@@ -189,7 +203,7 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
/*
for(i=0;i<AD5934_TEMP_AVERAGES;i++) // Loop to get stability and get averages
{
refResistance = AD5934_Get_Ref_Resistance(); // On Board Resistor
@@ -265,14 +279,15 @@ int main(void)
}
*/
while (1)
{
AD5934_Process_System();
ADS1015_Process_System();
current_millis = HAL_GetTick();
current_millis = g_ms_counter;
// Piscar LED verde em PB5 a cada 0,5 segundos
@@ -289,8 +304,19 @@ int main(void)
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
@@ -308,26 +334,44 @@ int main(void)
}
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, temperature_RTD);
//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, admittance_EC);
//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 = 10*ADSCalculate_ph_mV();//ADSCalculate_ph_Compensated(temperature_RTD);
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));
}
}
@@ -524,6 +568,18 @@ void intToStr(int N, char *str) {
}
}
/* TIM3 Timer Interrupt */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM3)
{
g_ms_counter++; /* Relógio global do sistema */
}
}
/*
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{