aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid A. Mellis <d.mellis@arduino.cc>2008-09-06 22:17:58 +0000
committerDavid A. Mellis <d.mellis@arduino.cc>2008-09-06 22:17:58 +0000
commit080d18c6d2b2ec7c0ee8cad53226b5131a9e45dc (patch)
tree5ac0bddd2bceb049b45c8a8c3ba151e2541cee08
parent2ed2ee36e7c51f63ecf1391bf62fcd65ad35caa5 (diff)
Incorporating ladyada's watchdog timer changes into the bootloader source, but only compiling them in for the Pro and Pro Mini (since Nathan includes them in the bootloader he burns to the board). Added a WATCHDOG_MODS flag to the Makefile to specify that they should be included. Recompiled the pro .hex file to include them.
-rwxr-xr-xbootloaders/atmega168/ATmegaBOOT_168.c17
-rw-r--r--bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex158
-rwxr-xr-xbootloaders/atmega168/Makefile6
3 files changed, 100 insertions, 81 deletions
diff --git a/bootloaders/atmega168/ATmegaBOOT_168.c b/bootloaders/atmega168/ATmegaBOOT_168.c
index c542af1..7bbf24e 100755
--- a/bootloaders/atmega168/ATmegaBOOT_168.c
+++ b/bootloaders/atmega168/ATmegaBOOT_168.c
@@ -251,7 +251,19 @@ int main(void)
uint8_t ch,ch2;
uint16_t w;
+#ifdef WATCHDOG_MODS
+ ch = MCUSR;
+ MCUSR = 0;
+
+ WDTCSR |= _BV(WDCE) | _BV(WDE);
+ WDTCSR = 0;
+
+ // Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.
+ if (! (ch & _BV(EXTRF))) // if its a not an external reset...
+ app_start(); // skip bootloader
+#else
asm volatile("nop\n\t");
+#endif
/* set pin direction for bootloader pin and enable pullup */
/* for ATmega128, two pins need to be initialized */
@@ -445,6 +457,11 @@ int main(void)
/* Leave programming mode */
else if(ch=='Q') {
nothing_response();
+#ifdef WATCHDOG_MODS
+ // autoreset via watchdog (sneaky!)
+ WDTCSR = _BV(WDE);
+ while (1); // 16 ms
+#endif
}
diff --git a/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex b/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex
index f1d4fb0..03ff00c 100644
--- a/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex
+++ b/bootloaders/atmega168/ATmegaBOOT_168_pro_8MHz.hex
@@ -5,7 +5,7 @@
:103840000C944F1C0C944F1C0C944F1C0C944F1C4C
:103850000C944F1C0C944F1C0C944F1C0C944F1C3C
:103860000C944F1C0C944F1C11241FBECFEFD4E0BE
-:10387000DEBFCDBF11E0A0E0B1E0E8E1FFE302C0B0
+:10387000DEBFCDBF11E0A0E0B1E0ECE3FFE302C0AA
:1038800005900D92A230B107D9F712E0A2E0B1E0A5
:1038900001C01D92AD30B107E1F70C94311D0C94BD
:1038A000001CCF93DF93CDB7DEB724970FB6F89403
@@ -36,82 +36,84 @@
:103A300084E10E94E41C812F0E94E41C80E10E942A
:103A4000E41C1F910895282F882351F090E0809165
:103A5000C00087FFFCCF8091C6009F5F2917B9F790
-:103A60000895CFEFD4E0DEBFCDBF000089E18093A1
-:103A7000C4001092C50088E18093C10086E0809365
-:103A8000C2005098589A259A81E00E94511C0E94C9
-:103A9000B81C8033B1F18133B9F1803409F454C0DA
-:103AA000813409F45AC0823409F469C0853409F4B8
-:103AB0006CC0803531F1813521F1823511F18535C8
-:103AC00009F4B2C0863509F4BAC0843609F463C07B
-:103AD000843709F4BBC0853709F40EC1863709F471
-:103AE0004AC0809104018F5F80930401853079F68C
-:103AF000E0910201F091030109950E94B81C803306
-:103B000051F60E94EC1CC3CF0E94B81C803249F7CA
-:103B100084E10E94E41C81E40E94E41C86E50E948A
-:103B2000E41C82E50E94E41C80E20E94E41C89E41B
-:103B30000E94E41C83E50E94E41C80E50E94E41CD2
-:103B400080E10E94E41CA3CF0E94B81C8638C8F212
-:103B50000E94B81C0E94EC1C9ACF0E94B81C8038AE
-:103B600009F4F7C0813809F4F8C0823809F4F9C0C3
-:103B7000883909F4BDC080E00E94051D88CF84E12A
-:103B80000E94231D0E94EC1C82CF85E00E94231D11
-:103B90000E94EC1C7CCF0E94B81C809309020E94FA
-:103BA000B81C8093080280910C028E7F80930C02D7
-:103BB0000E94B81C853409F4C6C080910802909117
-:103BC0000902892B09F0ADC00E94B81C803209F0AF
-:103BD00088CF80910C0280FFC8C08091080290912C
-:103BE00009020097D1F02091060130910701E8E029
-:103BF000F1E0AC014E0F5F1FF999FECF32BD21BD40
-:103C0000819180BDFA9AF99A2F5F3F4F4E175F0757
-:103C100099F7309307012093060184E10E94E41C88
-:103C200080E10E94E41C33CF0E94B81C80930601FF
-:103C30000E94B81C809307010E94EC1C28CF84E0EE
-:103C40000E94231D80E00E94051D21CF0E94B81C08
-:103C5000809309020E94B81C809308020E94B81C3D
-:103C6000853409F4F4C080910C028E7F80930C029D
-:103C70008091060190910701880F991F9093070189
-:103C8000809306010E94B81C803209F000CF84E1C5
-:103C90000E94E41C2091080230910902211531058F
-:103CA00019F1C0E0D0E0E0910601F09107018091A8
-:103CB0000C0280FFC4C0F999FECFF2BDE1BDF89AB5
-:103CC00080B50E94E41CE0910601F0910701319655
-:103CD000F0930701E0930601209108023091090258
-:103CE0002196C217D30718F380E10E94E41CCFCEBF
-:103CF00083E00E94051DCBCE0E94B81C803209F0E3
-:103D0000F0CE84E10E94E41C8EE10E94E41C84E970
-:103D10000E94E41C86E00E94E41C80E10E94E41CF6
-:103D2000B6CEC0E0D0E008E011E00E94B81CF80177
-:103D300081938F0121968091080290910902C81702
-:103D4000D90798F341CF80910C02816080930C02D7
-:103D500034CF82E00E94051D9ACE81E00E94051DAD
-:103D600096CE80E10E94051D92CE8091070187FDCD
-:103D700080C010920B028091060190910701880F7C
-:103D8000991F90930701809306018091080280FF9C
-:103D900009C080910802909109020196909309024E
-:103DA00080930802F894F999FECF1127E09106015B
-:103DB000F0910701C8E0D1E08091080290910902DA
-:103DC000103091F40091570001700130D9F303E0F5
-:103DD00000935700E8950091570001700130D9F326
-:103DE00001E100935700E895099019900091570060
-:103DF00001700130D9F301E000935700E895139565
-:103E0000103498F011270091570001700130D9F358
-:103E100005E000935700E8950091570001700130CC
-:103E2000D9F301E100935700E8953296029709F023
-:103E3000C7CF103011F00296E5CF1124EECE81FFEE
-:103E40000CC03196F0930701E093060149CF8091B1
-:103E50000C02816080930C0215CF84910E94E41CB7
-:103E60002091080230910902E0910601F0910701CA
-:103E7000E8CF81E080930B027ECF0F931F930E94C7
-:103E8000B81C182F0E94E41C0E94B81C082F0E9426
-:103E9000E41C11362CF0175501363CF0075508C0CC
-:103EA0001033D4F310530136CCF700330CF0005329
-:103EB0001295107F100F812F992787FD90951F91E4
-:103EC0000F9108951F93282F992787FD9095807F44
-:103ED00090709595879595958795959587959595E6
-:103EE00087958A304CF0982F995A822F8F708A309C
-:103EF0004CF0182F195A08C0982F905D822F8F70A0
-:103F00008A30BCF7182F105D892F0E94E41C812F86
-:083F10000E94E41C1F910895BA
-:023F1800800027
+:103A60000895CFEFD4E0DEBFCDBF94B714BE8091F0
+:103A700060008861809360001092600091FFEFC148
+:103A800089E18093C4001092C50088E18093C10051
+:103A900086E08093C2005098589A259A81E00E944F
+:103AA000511C0E94B81C8033B9F18133C1F18034BC
+:103AB00009F455C0813409F45BC0823409F46AC04A
+:103AC000853409F46DC0803539F1813509F404C1BC
+:103AD000823511F1853509F4BDC0863509F4B3C0CE
+:103AE000843609F463C0843709F4FCC0853709F4CF
+:103AF000CEC0863709F44AC0809104018F5F80935D
+:103B00000401853071F6E0910201F09103010995FD
+:103B10000E94B81C803349F60E94EC1CC2CF0E9460
+:103B2000B81C803249F784E10E94E41C81E40E94C1
+:103B3000E41C86E50E94E41C82E50E94E41C80E20D
+:103B40000E94E41C89E40E94E41C83E50E94E41CBA
+:103B500080E50E94E41C80E10E94E41CA2CF0E9448
+:103B6000B81C8638C8F20E94B81C0E94EC1C99CF81
+:103B70000E94B81C803809F4ABC0813809F4A4C095
+:103B8000823809F49DC0883909F496C080E00E940B
+:103B9000051D87CF84E10E94231D0E94EC1C81CF6C
+:103BA00085E00E94231D0E94EC1C7BCF0E94B81C64
+:103BB000809309020E94B81C8093080280910C0235
+:103BC0008E7F80930C020E94B81C853429F480916A
+:103BD0000C02816080930C0280910802909109028E
+:103BE000892B09F042C00E94B81C803209F084CFB2
+:103BF00080910C0280FFC5C080910802909109025B
+:103C00000097D1F02091060130910701E8E0F1E042
+:103C1000AC014E0F5F1FF999FECF32BD21BD8191DE
+:103C200080BDFA9AF99A2F5F3F4FE417F50799F78D
+:103C3000309307012093060184E10E94E41C80E197
+:103C40000E94E41C2ECF84E00E94231D80E00E948D
+:103C5000051D27CF0E94B81C809306010E94B81C46
+:103C6000809307010E94EC1C1CCFC0E0D0E008E06C
+:103C700011E00E94B81CF80181938F012196809178
+:103C8000080290910902C817D90798F3ACCF0E9497
+:103C9000B81C803209F030CF84E10E94E41C8EE130
+:103CA0000E94E41C84E90E94E41C86E00E94E41C5B
+:103CB00080E10E94E41CF5CE83E00E94051DF1CE58
+:103CC00080E10E94051DEDCE81E00E94051DE9CE38
+:103CD00082E00E94051DE5CE0E94EC1C88E08093E6
+:103CE0006000FFCF0E94B81C809309020E94B81C9C
+:103CF000809308020E94B81C853409F4BEC08091EC
+:103D00000C028E7F80930C02809106019091070136
+:103D1000880F991F90930701809306010E94B81C99
+:103D2000803209F0BECE84E10E94E41C809108023A
+:103D300090910902009709F4BBCFC0E0D0E0E09178
+:103D40000601F091070120910C0220FF8EC0F99925
+:103D5000FECFF2BDE1BDF89A80B50E94E41CE0916F
+:103D60000601F09107013196F0930701E0930601F7
+:103D700080910802909109022196C817D90718F37B
+:103D800097CF8091070187FD66C010920B0280914A
+:103D9000060190910701880F991F90930701809366
+:103DA00006018091080280FF09C08091080290916D
+:103DB000090201969093090280930802F894F999F8
+:103DC000FECF1127E0910601F0910701C8E0D1E094
+:103DD0008091080290910902103091F400915700EF
+:103DE00001700130D9F303E000935700E89500918A
+:103DF000570001700130D9F301E100935700E895B5
+:103E0000099019900091570001700130D9F301E039
+:103E100000935700E8951395103498F011270091FE
+:103E2000570001700130D9F305E000935700E89581
+:103E30000091570001700130D9F301E10093570060
+:103E4000E8953296029709F0C7CF103011F002962C
+:103E5000E5CF1124F1CE81E080930B0298CFE09161
+:103E60000201F091030109950BCE21FF0CC03196A0
+:103E7000F0930701E09306017FCF80910C028160EF
+:103E800080930C024BCF84910E94E41C8091080225
+:103E900090910902E0910601F0910701E8CF0F939C
+:103EA0001F930E94B81C182F0E94E41C0E94B81C8B
+:103EB000082F0E94E41C11362CF0175501363CF0F7
+:103EC000075508C01033D4F310530136CCF7003334
+:103ED0000CF000531295107F100F812F992787FD4A
+:103EE00090951F910F9108951F93282F992787FD73
+:103EF0009095807F907095958795959587959595E8
+:103F00008795959587958A304CF0982F995A822FEE
+:103F10008F708A304CF0182F195A08C0982F905D76
+:103F2000822F8F708A30BCF7182F105D892F0E9466
+:0C3F3000E41C812F0E94E41C1F910895E6
+:023F3C00800003
:0400000300003800C1
:00000001FF
diff --git a/bootloaders/atmega168/Makefile b/bootloaders/atmega168/Makefile
index 6be8dbe..c55cfc9 100755
--- a/bootloaders/atmega168/Makefile
+++ b/bootloaders/atmega168/Makefile
@@ -81,21 +81,21 @@ lilypad_resonator: HFUSE = DD
lilypad_resonator: LFUSE = C6
pro8: TARGET = pro_8MHz
-pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1'
+pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro8: $(PROGRAM)_pro_8MHz.hex
pro8: AVR_FREQ = 8000000L
pro8: HFUSE = DD
pro8: LFUSE = C6
pro16: TARGET = pro_16MHz
-pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1'
+pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro16: $(PROGRAM)_pro_16MHz.hex
pro16: AVR_FREQ = 16000000L
pro16: HFUSE = DD
pro16: LFUSE = C6
pro20: TARGET = pro_20mhz
-pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1'
+pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
pro20: $(PROGRAM)_pro_20mhz.hex
pro20: AVR_FREQ = 20000000L
pro20: HFUSE = DD