AP_IOMCU: use macros for LED outputs in iofirmware
This commit is contained in:
parent
a8d91a24b6
commit
29fb674f3f
@ -169,7 +169,7 @@ void AP_IOMCU_FW::init()
|
|||||||
|
|
||||||
// power on spektrum port
|
// power on spektrum port
|
||||||
palSetLineMode(HAL_GPIO_PIN_SPEKTRUM_PWR_EN, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetLineMode(HAL_GPIO_PIN_SPEKTRUM_PWR_EN, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetLine(HAL_GPIO_PIN_SPEKTRUM_PWR_EN);
|
SPEKTRUM_POWER(1);
|
||||||
|
|
||||||
rcprotocol = AP_RCProtocol::get_instance();
|
rcprotocol = AP_RCProtocol::get_instance();
|
||||||
|
|
||||||
@ -217,8 +217,12 @@ void AP_IOMCU_FW::update()
|
|||||||
chEvtSignal(thread_ctx, EVENT_MASK(IOEVENT_PWM));
|
chEvtSignal(thread_ctx, EVENT_MASK(IOEVENT_PWM));
|
||||||
last_failsafe_ms = now;
|
last_failsafe_ms = now;
|
||||||
}
|
}
|
||||||
|
// turn amber on
|
||||||
|
AMBER_SET(1);
|
||||||
} else {
|
} else {
|
||||||
last_failsafe_ms = now;
|
last_failsafe_ms = now;
|
||||||
|
// turn amber off
|
||||||
|
AMBER_SET(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update status page at 20Hz
|
// update status page at 20Hz
|
||||||
@ -262,14 +266,15 @@ void AP_IOMCU_FW::heater_update()
|
|||||||
if (!has_heater) {
|
if (!has_heater) {
|
||||||
// use blue LED as heartbeat, run it 4x faster when override active
|
// use blue LED as heartbeat, run it 4x faster when override active
|
||||||
if (now - last_blue_led_ms > (override_active?125:500)) {
|
if (now - last_blue_led_ms > (override_active?125:500)) {
|
||||||
palToggleLine(HAL_GPIO_PIN_HEATER);
|
BLUE_TOGGLE();
|
||||||
last_blue_led_ms = now;
|
last_blue_led_ms = now;
|
||||||
}
|
}
|
||||||
} else if (reg_setup.heater_duty_cycle == 0 || (now - last_heater_ms > 3000UL)) {
|
} else if (reg_setup.heater_duty_cycle == 0 || (now - last_heater_ms > 3000UL)) {
|
||||||
palWriteLine(HAL_GPIO_PIN_HEATER, 0);
|
// turn off the heater
|
||||||
|
HEATER_SET(0);
|
||||||
} else {
|
} else {
|
||||||
uint8_t cycle = ((now / 10UL) % 100U);
|
uint8_t cycle = ((now / 10UL) % 100U);
|
||||||
palWriteLine(HAL_GPIO_PIN_HEATER, !(cycle >= reg_setup.heater_duty_cycle));
|
HEATER_SET(!(cycle >= reg_setup.heater_duty_cycle));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,3 +139,10 @@ private:
|
|||||||
uint32_t last_failsafe_ms;
|
uint32_t last_failsafe_ms;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// GPIO macros
|
||||||
|
#define HEATER_SET(on) palWriteLine(HAL_GPIO_PIN_HEATER, !(on));
|
||||||
|
#define BLUE_TOGGLE() palToggleLine(HAL_GPIO_PIN_HEATER);
|
||||||
|
#define AMBER_SET(on) palWriteLine(HAL_GPIO_PIN_AMBER_LED, !(on));
|
||||||
|
#define SPEKTRUM_POWER(on) palWriteLine(HAL_GPIO_PIN_SPEKTRUM_PWR_EN, on);
|
||||||
|
#define SPEKTRUM_SET(on) palWriteLine(HAL_GPIO_PIN_SPEKTRUM_OUT, on);
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ void AP_IOMCU_FW::rcin_serial_update(void)
|
|||||||
for (uint8_t i=0; i<n; i++) {
|
for (uint8_t i=0; i<n; i++) {
|
||||||
rcprotocol->process_byte(b[i]);
|
rcprotocol->process_byte(b[i]);
|
||||||
}
|
}
|
||||||
//palToggleLine(HAL_GPIO_PIN_HEATER);
|
//BLUE_TOGGLE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,16 +104,16 @@ void AP_IOMCU_FW::dsm_bind_step(void)
|
|||||||
switch (dsm_bind_state) {
|
switch (dsm_bind_state) {
|
||||||
case 1:
|
case 1:
|
||||||
palSetLineMode(HAL_GPIO_PIN_SPEKTRUM_PWR_EN, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetLineMode(HAL_GPIO_PIN_SPEKTRUM_PWR_EN, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palClearLine(HAL_GPIO_PIN_SPEKTRUM_PWR_EN);
|
SPEKTRUM_POWER(0);
|
||||||
palSetLineMode(HAL_GPIO_PIN_SPEKTRUM_OUT, PAL_MODE_OUTPUT_PUSHPULL);
|
palSetLineMode(HAL_GPIO_PIN_SPEKTRUM_OUT, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
palSetLine(HAL_GPIO_PIN_SPEKTRUM_OUT);
|
SPEKTRUM_SET(1);
|
||||||
dsm_bind_state = 2;
|
dsm_bind_state = 2;
|
||||||
last_dsm_bind_ms = now;
|
last_dsm_bind_ms = now;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (now - last_dsm_bind_ms >= 500) {
|
if (now - last_dsm_bind_ms >= 500) {
|
||||||
palSetLine(HAL_GPIO_PIN_SPEKTRUM_PWR_EN);
|
SPEKTRUM_POWER(1);
|
||||||
dsm_bind_state = 3;
|
dsm_bind_state = 3;
|
||||||
last_dsm_bind_ms = now;
|
last_dsm_bind_ms = now;
|
||||||
}
|
}
|
||||||
@ -129,9 +129,9 @@ void AP_IOMCU_FW::dsm_bind_step(void)
|
|||||||
// the delay should be 120us, but we are running our
|
// the delay should be 120us, but we are running our
|
||||||
// clock at 1kHz, and 1ms works fine
|
// clock at 1kHz, and 1ms works fine
|
||||||
delay_one_ms(now);
|
delay_one_ms(now);
|
||||||
palClearLine(HAL_GPIO_PIN_SPEKTRUM_OUT);
|
SPEKTRUM_SET(0);
|
||||||
delay_one_ms(now);
|
delay_one_ms(now);
|
||||||
palSetLine(HAL_GPIO_PIN_SPEKTRUM_OUT);
|
SPEKTRUM_SET(1);
|
||||||
}
|
}
|
||||||
last_dsm_bind_ms = now;
|
last_dsm_bind_ms = now;
|
||||||
dsm_bind_state = 4;
|
dsm_bind_state = 4;
|
||||||
|
Loading…
Reference in New Issue
Block a user