Hallo, bei z.B. mega48 und mega328p (im Unterschied zu mega8) muß man zwingend am Anfang des Prog oder Bootloader neben wdt_disable() das WDRF zurücksetzen sonst gibt es endlose schnelle Resets. Hier z.B. an LED sichtbar ca. 15Hz resets, auch wenn der WDT z.B. auf höhere Periode 2.0s eingestellt wurde!? Fragen: * warum ist die endlos Reset-Periode sogar schneller als konfiguriert? welcher zusätzliche besondere Timer (da ja zumindest etwas startup code ausführen lassen muss) ist da am werkeln? * mit Bootloader: nach dem WDRF rücksetzen kann man das Bit nicht mehr per SW auf 1 setzen. (bleibt einfach 0.) Wie bringe ich das Bit am sinnvollsten ins C Programm (GCC)? so daß das Programm (ein einziges HEX-File) mit und ohne Bootloader arbeiten kann. Denn das Program informiert abnorme Resets auf User-Applikations-Ebene. (* warum wurde der Zwang des WDRF-Reset überhaupt eingeführt? wdt_disable() in AVR GCC tut ja nun auch nicht vollständig, was der Name suggeriert... und kann es nicht, sonst Info-Verlust ) PS: im Datenblatt (m48..328p, Seite 54) ist übrigens ein Fehler in dem Assembler watchdog disable code: "andi r16, (0xff & (0<<WDRF))" -> "andi r16, (0xff ^ (1<<WDRF))"
kxr schrieb: > * warum ist die endlos Reset-Periode sogar schneller als konfiguriert? Weil das IO-Register mit dem Prescaler für den Watchdog auf den Initialwert (entspricht ca. 15 ms) zurückgesetzt wird. Schließlich hat der Prozessor ja gerade einen Reset durchlaufen. > * mit Bootloader: nach dem WDRF rücksetzen kann man das Bit nicht mehr > per SW auf 1 setzen. (bleibt einfach 0.) Wie bringe ich das Bit am > sinnvollsten ins C Programm (GCC)? so daß das Programm (ein einziges > HEX-File) mit und ohne Bootloader arbeiten kann. Indem du es auf irgendeine bekannte Speicherstelle legst. Du könntest auch ein Register wie GPIO0 ... GPIO2 dafür benutzen, es dort zu speichern, dann kollidiert das nicht mit der Speicherbelegung durch den C-Compiler. > (* warum wurde der Zwang des WDRF-Reset überhaupt eingeführt? Offenbar, damit sichergestellt ist, dass sich die Applikation auch wirklich um den Watchdog "gekümmert" hat. > PS: im Datenblatt (m48..328p, Seite 54) ist übrigens ein Fehler in dem > Assembler watchdog disable code: "andi r16, (0xff & (0<<WDRF))" -> > "andi r16, (0xff ^ (1<<WDRF))" → support -at- atmel.com anschreiben
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.