Fix bootloaders not starting user application if the HWB is grounded during watchdog reset.

This commit is contained in:
Dean Camera
2014-10-12 16:43:30 +11:00
parent 4c637c93ba
commit a09cb7e3d8
9 changed files with 59 additions and 49 deletions

View File

@@ -120,8 +120,19 @@ void Application_Jump_Check(void)
if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY))
JumpToApplication = true;
/* Clear reset source */
MCUSR &= ~(1 << EXTRF);
}
else
{
/* If the reset source was the bootloader and the key is correct, clear it and jump to the application;
* this can happen in the HWBE fuse is set, and the HBE pin is low during the watchdog reset */
if ((MCUSR & (1 << WDRF)) && (MagicBootKey == MAGIC_BOOT_KEY))
JumpToApplication = true;
/* Clear reset source */
MCUSR &= ~(1 << WDRF);
}
#endif
/* Don't run the user application if the reset vector is blank (no app loaded) */