merged left and right speed sensor isr into one handler
This commit is contained in:
parent
81e44dbf50
commit
c7950d3ec6
|
@ -27,29 +27,26 @@ set_wheel_speed(float speed, uint8_t side)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Interrupt handler for the wheel sensor
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
h_left_wheel_sensor_isr_handler(void)
|
h_wheel_sensor_isr_handler(void)
|
||||||
{
|
{
|
||||||
if (gpio_get_irq_event_mask(SPEED_PIN_LEFT) & GPIO_IRQ_EDGE_FALL)
|
if (gpio_get_irq_event_mask(SPEED_PIN_LEFT) & GPIO_IRQ_EDGE_FALL)
|
||||||
{
|
{
|
||||||
gpio_acknowledge_irq(SPEED_PIN_LEFT, GPIO_IRQ_EDGE_FALL);
|
gpio_acknowledge_irq(SPEED_PIN_LEFT, GPIO_IRQ_EDGE_FALL);
|
||||||
|
|
||||||
// printf("left motor sensor isr\n");
|
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xSemaphoreGiveFromISR(g_wheel_speed_sem_left,
|
xSemaphoreGiveFromISR(g_wheel_speed_sem_left,
|
||||||
&xHigherPriorityTaskWoken);
|
&xHigherPriorityTaskWoken);
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
h_right_wheel_sensor_isr_handler(void)
|
|
||||||
{
|
|
||||||
if (gpio_get_irq_event_mask(SPEED_PIN_RIGHT) & GPIO_IRQ_EDGE_FALL)
|
if (gpio_get_irq_event_mask(SPEED_PIN_RIGHT) & GPIO_IRQ_EDGE_FALL)
|
||||||
{
|
{
|
||||||
gpio_acknowledge_irq(SPEED_PIN_RIGHT, GPIO_IRQ_EDGE_FALL);
|
gpio_acknowledge_irq(SPEED_PIN_RIGHT, GPIO_IRQ_EDGE_FALL);
|
||||||
|
|
||||||
// printf("right motor sensor isr\n");
|
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
xSemaphoreGiveFromISR(g_wheel_speed_sem_right,
|
xSemaphoreGiveFromISR(g_wheel_speed_sem_right,
|
||||||
&xHigherPriorityTaskWoken);
|
&xHigherPriorityTaskWoken);
|
||||||
|
@ -57,6 +54,14 @@ h_right_wheel_sensor_isr_handler(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Compute the control signal using PID controller
|
||||||
|
* @param target_speed The target speed of the wheel
|
||||||
|
* @param current_speed The current speed of the wheel
|
||||||
|
* @param integral The integral term of the PID controller
|
||||||
|
* @param prev_error The previous error of the PID controller
|
||||||
|
* @return The control signal
|
||||||
|
*/
|
||||||
float
|
float
|
||||||
compute_pid(float target_speed,
|
compute_pid(float target_speed,
|
||||||
float current_speed,
|
float current_speed,
|
||||||
|
|
|
@ -11,13 +11,11 @@ launch()
|
||||||
{
|
{
|
||||||
// isr to detect right motor slot
|
// isr to detect right motor slot
|
||||||
gpio_set_irq_enabled(SPEED_PIN_RIGHT, GPIO_IRQ_EDGE_FALL, true);
|
gpio_set_irq_enabled(SPEED_PIN_RIGHT, GPIO_IRQ_EDGE_FALL, true);
|
||||||
gpio_add_raw_irq_handler(SPEED_PIN_RIGHT,
|
gpio_add_raw_irq_handler(SPEED_PIN_RIGHT, h_wheel_sensor_isr_handler);
|
||||||
h_right_wheel_sensor_isr_handler);
|
|
||||||
|
|
||||||
// isr to detect left motor slot
|
// isr to detect left motor slot
|
||||||
gpio_set_irq_enabled(SPEED_PIN_LEFT, GPIO_IRQ_EDGE_FALL, true);
|
gpio_set_irq_enabled(SPEED_PIN_LEFT, GPIO_IRQ_EDGE_FALL, true);
|
||||||
gpio_add_raw_irq_handler(SPEED_PIN_LEFT,
|
gpio_add_raw_irq_handler(SPEED_PIN_LEFT, h_wheel_sensor_isr_handler);
|
||||||
h_left_wheel_sensor_isr_handler);
|
|
||||||
|
|
||||||
irq_set_enabled(IO_IRQ_BANK0, true);
|
irq_set_enabled(IO_IRQ_BANK0, true);
|
||||||
|
|
||||||
|
|
|
@ -24,12 +24,11 @@ launch()
|
||||||
// isr to detect right motor slot
|
// isr to detect right motor slot
|
||||||
gpio_set_irq_enabled(SPEED_PIN_RIGHT, GPIO_IRQ_EDGE_FALL, true);
|
gpio_set_irq_enabled(SPEED_PIN_RIGHT, GPIO_IRQ_EDGE_FALL, true);
|
||||||
gpio_add_raw_irq_handler(SPEED_PIN_RIGHT,
|
gpio_add_raw_irq_handler(SPEED_PIN_RIGHT,
|
||||||
h_right_wheel_sensor_isr_handler);
|
h_wheel_sensor_isr_handler);
|
||||||
|
|
||||||
// isr to detect left motor slot
|
// isr to detect left motor slot
|
||||||
gpio_set_irq_enabled(SPEED_PIN_LEFT, GPIO_IRQ_EDGE_FALL, true);
|
gpio_set_irq_enabled(SPEED_PIN_LEFT, GPIO_IRQ_EDGE_FALL, true);
|
||||||
gpio_add_raw_irq_handler(SPEED_PIN_LEFT,
|
gpio_add_raw_irq_handler(SPEED_PIN_LEFT, h_wheel_sensor_isr_handler);
|
||||||
h_left_wheel_sensor_isr_handler);
|
|
||||||
|
|
||||||
irq_set_enabled(IO_IRQ_BANK0, true);
|
irq_set_enabled(IO_IRQ_BANK0, true);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue