Refuse to start a print if power is lost before arming uvlo
If power has been lost during startup already a falling edge would be skipped, causing the print to continue and lose its state without being able to save again. Check for a low line after arming the interrupt and simply wait for reset.
This commit is contained in:
parent
200cdde1af
commit
b46dc59fad
@ -10480,6 +10480,14 @@ void serialecho_temperatures() {
|
||||
}
|
||||
|
||||
#ifdef UVLO_SUPPORT
|
||||
void uvlo_drain_reset()
|
||||
{
|
||||
// burn all that residual power
|
||||
wdt_enable(WDTO_1S);
|
||||
WRITE(BEEPER,HIGH);
|
||||
while(1);
|
||||
}
|
||||
|
||||
|
||||
void uvlo_()
|
||||
{
|
||||
@ -10709,11 +10717,7 @@ void uvlo_tiny()
|
||||
eeprom_update_word((uint16_t*)EEPROM_POWER_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) + 1);
|
||||
|
||||
printf_P(_N("UVLO_TINY - end %d\n"), _millis() - time_start);
|
||||
|
||||
// burn all that residual power
|
||||
wdt_enable(WDTO_1S);
|
||||
WRITE(BEEPER,HIGH);
|
||||
while(1);
|
||||
uvlo_drain_reset();
|
||||
}
|
||||
#endif //UVLO_SUPPORT
|
||||
|
||||
@ -10760,12 +10764,19 @@ void setup_uvlo_interrupt() {
|
||||
DDRE &= ~(1 << 4); //input pin
|
||||
PORTE &= ~(1 << 4); //no internal pull-up
|
||||
|
||||
//sensing falling edge
|
||||
// sensing falling edge
|
||||
EICRB |= (1 << 0);
|
||||
EICRB &= ~(1 << 1);
|
||||
|
||||
//enable INT4 interrupt
|
||||
// enable INT4 interrupt
|
||||
EIMSK |= (1 << 4);
|
||||
|
||||
// check if power was lost before we armed the interrupt
|
||||
if(!(PINE & (1 << 4)))
|
||||
{
|
||||
SERIAL_ECHOLNPGM("INT4");
|
||||
uvlo_drain_reset();
|
||||
}
|
||||
}
|
||||
|
||||
ISR(INT4_vect) {
|
||||
|
Loading…
Reference in New Issue
Block a user