Interner Watchdog auch ohne Programmer

herbert-f:
Vielen Dank, ich werde mir einen Programmer "sicherheitshalber" besorgen. Kann mir bitte jemand einen Tipp geben wo ich die oben erwähnte Dokumentation für Watchdog-Timeout per Bootloader für den MEGA2560 finden kann?

Oh, ich sehe gerade, dass das sehr gute Tutorial auf tushev.org // Simon Tushev aus dem Internet verschwunden ist. So ein Pech! Mußt Du halt andere Infos im Internet suchen.

Die AVR libc hat drei Funktionen und einige Konstanten sind, die man benötigt, um Watchdog-Timer möglichst komfortabel einzurichten:
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html

Soweit ich das in der Library-Beschreibung sehe, reicht es aber nicht, das Watchdog-Timeout auf den längsten Wert 8s zu setzen, damit man hinterher noch genügend Zeit hat, dass ein Bootloader läuft und man dann in seinem Sketch einen Bootloader auch wieder deaktivieren kann. Grund: Zwar wird der Watchdog durch ein Reset nicht deaktiviert, aber sein Prescaler wird auf den kleinsten Wert von 15ms resettet. So dass aus einem 8s Watchdog-Timeout beim Reset ein 15ms Watchdog-Timeout wird.

Man kann dann den Watchdog nur innerhalb von 15ms nach einem Reset wieder deaktivieren.

Und das geht nur, wenn man entweder per Programmer einen Sketch hochladen kann, in dem man beim Programmstart ein wdt_disable() aufrufen kann. Oder man hat einen Bootloader drauf, der einen Code verwendet, um beim Start des Bootloaders eventuell vorhandene Watchdogs löscht.

Und da beißt sich die Katze in den Schwanz: Auch einen geänderten Bootloader, der einen vorhandenen Watchdog-Timer beim Start des Bootloaders löscht, kannst Du nur mit Programmer aufspielen. Genauso wie einen Sketch, der einen vorher eingerichteten Watchdog löscht. Also kommst Du ohne Programmer wohl nicht weiter, wenn Du nicht die Unbenutzbarkeit Deines Arduinos nach dem Watchdog-Experiment riskieren möchtest.

Die modernen 0,5 kB kleinen Arduino-Bootloader haben meines Erachtens keinen Code mehr drin, um einen Watchdog zu löschen. Alles für die kleine Bootloadergröße wegoptimiert.