Uppfærði kóðann til að virkja Fault takka

This commit is contained in:
2026-10-14 12:21:45 +00:00
parent 782feb2d04
commit 1250860efe
3 changed files with 37 additions and 9 deletions
+29 -7
View File
@@ -45,6 +45,9 @@ static const struct gpio_dt_spec bin2 =
static const struct gpio_dt_spec motor_flt =
GPIO_DT_SPEC_GET(DT_ALIAS(motor_flt), gpios);
static const struct gpio_dt_spec fault_test_button =
GPIO_DT_SPEC_GET(DT_ALIAS(fault_test_button), gpios);
static const struct gpio_dt_spec motor_slp =
GPIO_DT_SPEC_GET(DT_ALIAS(motor_slp), gpios);
@@ -87,12 +90,14 @@ void MotorDriver::begin()
if (!pwm_is_ready_dt(&bin1_pwm) ||
!gpio_is_ready_dt(&bin2) ||
!gpio_is_ready_dt(&motor_flt) ||
!gpio_is_ready_dt(&fault_test_button) ||
!gpio_is_ready_dt(&motor_slp)) {
return;
}
if (gpio_pin_configure_dt(&bin2, GPIO_OUTPUT_INACTIVE) < 0 ||
gpio_pin_configure_dt(&motor_flt, GPIO_INPUT) < 0 ||
gpio_pin_configure_dt(&fault_test_button, GPIO_INPUT) < 0 ||
gpio_pin_configure_dt(&motor_slp, GPIO_OUTPUT_INACTIVE) < 0) {
return;
}
@@ -206,16 +211,33 @@ void MotorDriver::set(double pwm)
}
// bool MotorDriver::fault_active()
// {
// //return !(PIND & (1 << PIND4));
// if (!initialized) {
// return true; // Fail safe if the driver did not initialize.
// }
// // The overlay marks FLT as active low. gpio_pin_get_dt() returns
// // the logical active state, so 1 means a fault is active.
// const int fault = gpio_pin_get_dt(&motor_flt);
// return fault < 0 || fault != 0;
// }
bool MotorDriver::fault_active()
{
//return !(PIND & (1 << PIND4));
if (!initialized) {
return true; // Fail safe if the driver did not initialize.
}
// The overlay marks FLT as active low. gpio_pin_get_dt() returns
// the logical active state, so 1 means a fault is active.
const int fault = gpio_pin_get_dt(&motor_flt);
return fault < 0 || fault != 0;
}
const int driver_fault = gpio_pin_get_dt(&motor_flt);
const int button_fault = gpio_pin_get_dt(&fault_test_button);
// Negative values indicate a GPIO read error, so treat them as a fault.
// With GPIO_ACTIVE_LOW, a pressed button reads as logical 1.
return driver_fault < 0 ||
button_fault < 0 ||
driver_fault != 0 ||
button_fault != 0;
}