ld: Block pwr on request if alarm is asserted

- Align the alarm and pwr up behavior with thermostat temp_mon
This commit is contained in:
linuswck 2024-07-26 11:02:05 +08:00
parent 201148fb21
commit 3f9a4bf140
1 changed files with 8 additions and 6 deletions

View File

@ -211,12 +211,14 @@ impl LdPwrExcProtector {
pub fn pwr_on_and_arm_protection() {
if let Some(ref mut wdg) = LdPwrExcProtector::get() {
wdg.alarm_status = Status::default();
LdPwrExcProtector::clear_interrupt_bit();
LdPwrExcProtector::pwr_on();
// Interrupt should be enabled after power on to tackle the following edge case:
// Pd_Mon pin voltage has already exceed threshold before LD Power is on.
LdPwrExcProtector::enable_watchdog_interrupt();
if !wdg.alarm_status.pwr_excursion {
wdg.alarm_status = Status::default();
LdPwrExcProtector::clear_interrupt_bit();
LdPwrExcProtector::pwr_on();
// Interrupt should be enabled after power on to tackle the following edge case:
// Pd_Mon pin voltage has already exceed threshold before LD Power is on.
LdPwrExcProtector::enable_watchdog_interrupt();
}
}
}