pablos:
Che il wdt_enable(WDTO_4S); non funzionasse sulla mega già lo avevi affrontato ti ricordi di questa discussione?
Arduino Forum
Non mi ricordavo di questo bug. Non avendo la MEGA, era una problematica affrontata in quella discussione e poi scordata del tutto.
magari c'e' qualche link che può servirti, sembrerebbe che bisogna caricare un altro bootloader
Comunque da quando leggo in giro, nessuno è riuscito a fare sto benedetto reset usando WDT sul 2560, senza toccare il bootloader
Sì, esatto. Ma di questo me n'ero accorto anch'io. Ti avevo infatti già detto che una delle differenze del bootloader della MEGA rispetto all'Optiboot stesse proprio nel fatto che l'Optiboot resetta il Watchdog di suo perché poi lo usa come timeout.
Ad abbondanza, ho trovato anche un'altra discussione su un altro forum in cui si parla di un problema identico al tuo:
http://www.electroyou.it/phpBB2/viewtopic.php?f=17&t=32610
Usando una 2009 la scheda non si resetta ma va in blocco proprio quando dovrebbe venir resettata dal WDT. Questo mi fa pensare che questa caratteristica non possa essere usata su chip dove c'è un bootloader che non prevede la disabilitazione del watchdog al suo riavvio. Per contro, un chip standalone senza bootloader non soffre di questi problemi (vedi il mio test con un Tiny85) né l'Arduino UNO né la LEONARDO per via del fatto che i loro bootloader resettano il watchdog.
Quindi con la MEGA devo per forza usare il jmp $0000 al posto del watchdog per resettare la scheda.