Use avr-libc wdt library

This commit is contained in:
Alex Voinea 2021-03-03 16:31:06 +02:00
parent 073cbe0339
commit c95d2fcbd7
No known key found for this signature in database
GPG Key ID: F5034E7CFCF2F973
1 changed files with 3 additions and 23 deletions

View File

@ -15,19 +15,6 @@
static unsigned const int __attribute__((section(".version"))) static unsigned const int __attribute__((section(".version")))
optiboot_version = 256*(OPTIBOOT_MAJVER + OPTIBOOT_CUSTOMVER) + OPTIBOOT_MINVER; optiboot_version = 256*(OPTIBOOT_MAJVER + OPTIBOOT_CUSTOMVER) + OPTIBOOT_MINVER;
/* Watchdog settings */
#define WATCHDOG_OFF (0)
#define WATCHDOG_16MS (_BV(WDE))
#define WATCHDOG_32MS (_BV(WDP0) | _BV(WDE))
#define WATCHDOG_64MS (_BV(WDP1) | _BV(WDE))
#define WATCHDOG_125MS (_BV(WDP1) | _BV(WDP0) | _BV(WDE))
#define WATCHDOG_250MS (_BV(WDP2) | _BV(WDE))
#define WATCHDOG_500MS (_BV(WDP2) | _BV(WDP0) | _BV(WDE))
#define WATCHDOG_1S (_BV(WDP2) | _BV(WDP1) | _BV(WDE))
#define WATCHDOG_2S (_BV(WDP2) | _BV(WDP1) | _BV(WDP0) | _BV(WDE))
#define WATCHDOG_4S (_BV(WDP3) | _BV(WDE))
#define WATCHDOG_8S (_BV(WDP3) | _BV(WDP0) | _BV(WDE))
#if 0 #if 0
#define W25X20CL_SIGNATURE_0 9 #define W25X20CL_SIGNATURE_0 9
#define W25X20CL_SIGNATURE_1 8 #define W25X20CL_SIGNATURE_1 8
@ -39,13 +26,6 @@ static unsigned const int __attribute__((section(".version")))
#define W25X20CL_SIGNATURE_2 0x01 #define W25X20CL_SIGNATURE_2 0x01
#endif #endif
static void watchdogConfig(uint8_t x) {
CRITICAL_SECTION_START
WDTCSR = _BV(WDCE) | _BV(WDE);
WDTCSR = x;
CRITICAL_SECTION_END
}
#define RECV_READY ((UCSR0A & _BV(RXC0)) != 0) #define RECV_READY ((UCSR0A & _BV(RXC0)) != 0)
static uint8_t getch(void) { static uint8_t getch(void) {
@ -74,7 +54,7 @@ static void putch(char ch) {
static void verifySpace() { static void verifySpace() {
if (getch() != CRC_EOP) { if (getch() != CRC_EOP) {
putch(STK_FAILED); putch(STK_FAILED);
watchdogConfig(WATCHDOG_16MS); // shorten WD timeout wdt_enable(WDTO_15MS); // shorten WD timeout
while (1) // and busy-loop so that WD causes while (1) // and busy-loop so that WD causes
; // a reset and app start. ; // a reset and app start.
} }
@ -172,7 +152,7 @@ uint8_t optiboot_w25x20cl_enter()
spi_init(); spi_init();
w25x20cl_init(); w25x20cl_init();
watchdogConfig(WATCHDOG_OFF); wdt_disable();
/* Forever loop: exits by causing WDT reset */ /* Forever loop: exits by causing WDT reset */
for (;;) { for (;;) {
@ -311,7 +291,7 @@ uint8_t optiboot_w25x20cl_enter()
} }
else if (ch == STK_LEAVE_PROGMODE) { /* 'Q' */ else if (ch == STK_LEAVE_PROGMODE) { /* 'Q' */
// Adaboot no-wait mod // Adaboot no-wait mod
watchdogConfig(WATCHDOG_16MS); wdt_enable(WDTO_15MS);
verifySpace(); verifySpace();
} }
else { else {