Commit 222a11f3 authored by Alén Arias Vázquez's avatar Alén Arias Vázquez 😎

- main.c: change type to float

- main.c: equalize when error linear value to 0xFFFF
- main.c: change initialization of RPM Values
parent 972b05bc
Pipeline #4876 passed with stage
in 1 minute and 1 second
......@@ -53,12 +53,12 @@ static uint16_t fan_ramp_up_count __xMR = 0;
#endif
/* MAX Speed Datasheet: 3600.0 */
#define FAN_MAX_RPMS 1500.0
#define FAN_MAX_RPMS 1500.0f
#define FAN_MAX_FAIL_CNT 100
#define FAN_DEAD_WORD 0xFFFF
static volatile uint16_t tacho_cnt[3] __xMR;
static volatile uint16_t tacho_rpm[3] __xMR;
static volatile uint16_t tacho_rpm_prev[3] __xMR;
static volatile float tacho_rpm[3] __xMR;
static volatile float tacho_rpm_prev[3] __xMR;
static volatile uint16_t tacho_rpm_fail_cnt[3] __xMR;
// when fan_cmdrpm is 0, setfrpms and temp_curve_points_y represent
......@@ -247,7 +247,7 @@ void __xMR update_rpm()
} else {
tacho_rpm_fail_cnt[0]++;
if (tacho_rpm_fail_cnt[0] >= FAN_MAX_FAIL_CNT) {
frpms_lin[0] = float_to_linear(FAN_DEAD_WORD);
frpms_lin[0] = FAN_DEAD_WORD;
} else {
frpms_lin[0] = float_to_linear(tacho_rpm_prev[0]);
}
......@@ -270,7 +270,7 @@ void __xMR update_rpm()
} else {
tacho_rpm_fail_cnt[1]++;
if (tacho_rpm_fail_cnt[1] >= FAN_MAX_FAIL_CNT) {
frpms_lin[1] = float_to_linear(FAN_DEAD_WORD);
frpms_lin[1] = FAN_DEAD_WORD;
} else {
frpms_lin[1] = float_to_linear(tacho_rpm_prev[1]);
}
......@@ -293,7 +293,7 @@ void __xMR update_rpm()
} else {
tacho_rpm_fail_cnt[2]++;
if (tacho_rpm_fail_cnt[2] >= FAN_MAX_FAIL_CNT) {
frpms_lin[2] = float_to_linear(FAN_DEAD_WORD);
frpms_lin[2] = FAN_DEAD_WORD;
} else {
frpms_lin[2] = float_to_linear(tacho_rpm_prev[2]);
}
......@@ -623,13 +623,6 @@ endless_loop(void)
int main(void)
{
/* initialize previous value to 0 */
tacho_rpm_prev[0] = 0.0;
tacho_rpm_prev[1] = 0.0;
tacho_rpm_prev[2] = 0.0;
tacho_rpm_fail_cnt[0] = 0;
tacho_rpm_fail_cnt[1] = 0;
tacho_rpm_fail_cnt[2] = 0;
/* Initializes MCU, drivers and middleware */
atmel_start_init();
......@@ -637,6 +630,11 @@ int main(void)
gpio_set_pin_pull_mode(ADDR1, GPIO_PULL_UP);
gpio_set_pin_pull_mode(ADDR2, GPIO_PULL_UP);
/* initialize counters to 0 */
tacho_rpm_fail_cnt[0] = 0;
tacho_rpm_fail_cnt[1] = 0;
tacho_rpm_fail_cnt[2] = 0;
#if defined(MMFANT) || defined(MMPROT)
ext_irq_register(PIN_PA17, inc_tacho1);
ext_irq_register(PIN_PA16, inc_tacho2);
......@@ -645,6 +643,11 @@ int main(void)
ext_irq_enable(PIN_PA16);
ext_irq_enable(PIN_PA13);
/* initialize previous value to 0 */
tacho_rpm_prev[0] = 500.0;
tacho_rpm_prev[1] = 500.0;
tacho_rpm_prev[2] = 500.0;
load_fan_config();
update_pwm();
......@@ -652,6 +655,12 @@ int main(void)
pwm_enable(&PWM_1);
pwm_enable(&PWM_2);
#else
/* initialize previous value to 0 */
tacho_rpm_prev[0] = 0.0;
tacho_rpm_prev[1] = 0.0;
tacho_rpm_prev[2] = 0.0;
/* RPM always 0 */
frpms_lin[0] = float_to_linear(0);
frpms_lin[1] = float_to_linear(0);
frpms_lin[2] = float_to_linear(0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment