diff --git a/Inc/actuator.h b/Inc/actuator.h index 2ae0540..3ce43e3 100644 --- a/Inc/actuator.h +++ b/Inc/actuator.h @@ -5,6 +5,8 @@ #include "gd32e23x.h" #include "stdbool.h" +#define ACTUARTOR_PERIOD_MAX 1000u + void actuator_init(void); void actuator_output(actuator_channel_t channel, uint16_t duty, actuator_direction_t direction); diff --git a/Src/actuator.c b/Src/actuator.c index b4fc120..4b2e125 100644 --- a/Src/actuator.c +++ b/Src/actuator.c @@ -68,7 +68,7 @@ void actuator_init(void) { void actuator_output(actuator_channel_t channel, uint16_t duty, actuator_direction_t direction) { - if (duty > 999) duty = 999; // Limit duty cycle to max value + if (duty > ACTUARTOR_PERIOD_MAX) duty = ACTUARTOR_PERIOD_MAX; // Limit duty cycle to max value if (direction != DIRECTION_PUSH && direction != DIRECTION_PULL) { // Invalid direction, handle error if necessary @@ -86,7 +86,7 @@ void actuator_output(actuator_channel_t channel, uint16_t duty, actuator_directi } else if (direction == DIRECTION_PULL) { SEGGER_RTT_printf(0, "[ACTUATOR] Actuator CH1 PULL with duty %d\n", duty); gpio_bit_set(ACTUATOR_CH1_GPIO_PORT, ACTUATOR_CH1_GPIO_PIN); // Set direction HIGH - timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH1_PWM_TIMER_CH, (999 - duty)); + timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH1_PWM_TIMER_CH, (ACTUARTOR_PERIOD_MAX - duty)); } } else if (channel == ACTUATOR_CH2) { if (direction == DIRECTION_PUSH) { @@ -96,7 +96,7 @@ void actuator_output(actuator_channel_t channel, uint16_t duty, actuator_directi } else if (direction == DIRECTION_PULL) { SEGGER_RTT_printf(0, "[ACTUATOR] Actuator CH2 PULL with duty %d\n", duty); gpio_bit_set(ACTUATOR_CH2_GPIO_PORT, ACTUATOR_CH2_GPIO_PIN); // Set direction HIGH - timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH2_PWM_TIMER_CH, (999 - duty)); + timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH2_PWM_TIMER_CH, (ACTUARTOR_PERIOD_MAX - duty)); } } else { // Invalid channel, handle error if necessary @@ -110,17 +110,17 @@ void actuator_output(actuator_channel_t channel, uint16_t duty, actuator_directi void actuator_stop(actuator_channel_t channel) { if(channel == ACTUATOR_CH1) { SEGGER_RTT_printf(0, "[ACTUATOR] Stopping Actuator CH1\n"); - timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH1_PWM_TIMER_CH, 999); // Ensure CH1 is off + timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH1_PWM_TIMER_CH, ACTUARTOR_PERIOD_MAX); // Ensure CH1 is off gpio_bit_set(ACTUATOR_CH1_GPIO_PORT, ACTUATOR_CH1_GPIO_PIN); // Set CH1 direction High } else if(channel == ACTUATOR_CH2) { SEGGER_RTT_printf(0, "[ACTUATOR] Stopping Actuator CH2\n"); - timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH2_PWM_TIMER_CH, 999); // Ensure CH2 is off + timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH2_PWM_TIMER_CH, ACTUARTOR_PERIOD_MAX); // Ensure CH2 is off gpio_bit_set(ACTUATOR_CH2_GPIO_PORT, ACTUATOR_CH2_GPIO_PIN); // Set CH2 direction High } else { // Invalid channel, handle error if necessary SEGGER_RTT_printf(0, "[ACTUATOR] Invalid channel specified for stop: %d\n", channel); - timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH1_PWM_TIMER_CH, 999); // Ensure CH1 is off - timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH2_PWM_TIMER_CH, 999); // Ensure CH2 is off + timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH1_PWM_TIMER_CH, ACTUARTOR_PERIOD_MAX); // Ensure CH1 is off + timer_channel_output_pulse_value_config(ACTUATOR_PWM_TIMER, ACTUATOR_CH2_PWM_TIMER_CH, ACTUARTOR_PERIOD_MAX); // Ensure CH2 is off gpio_bit_set(ACTUATOR_CH1_GPIO_PORT, ACTUATOR_CH1_GPIO_PIN); // Set CH1 direction High gpio_bit_set(ACTUATOR_CH2_GPIO_PORT, ACTUATOR_CH2_GPIO_PIN); // Set CH2 direction High } diff --git a/Src/command.c b/Src/command.c index 07ccd6d..e648f06 100644 --- a/Src/command.c +++ b/Src/command.c @@ -458,7 +458,7 @@ void handle_command(const uint8_t *frame, uint8_t len) { return; } - if (p_val > (uint32_t)ACTUATOR_CH2 || s_val > 999u) { + if (p_val > (uint32_t)ACTUATOR_CH2 || s_val > ACTUARTOR_PERIOD_MAX) { send_response(RESP_TYPE_PARAM_ERR, s_report_status_err, sizeof(s_report_status_err)); return; } @@ -480,7 +480,7 @@ void handle_command(const uint8_t *frame, uint8_t len) { return; } - if (p_val > (uint32_t)ACTUATOR_CH2 || s_val > 999u) { + if (p_val > (uint32_t)ACTUATOR_CH2 || s_val > ACTUARTOR_PERIOD_MAX) { send_response(RESP_TYPE_PARAM_ERR, s_report_status_err, sizeof(s_report_status_err)); return; }