Re: Watchdog Kategorie: Programmierung (von GPL - 29.09.2009 12:54) | ||
Als Antwort auf Re: Watchdog von nitraM - 29.09.2009 7:40 | ||
| ||
Hallo nitraM! So leid es mir tut, Dein Programm löst keinen Reset bei mir aus! Warum es bei Dir läuft, ist mir ein Rätsel. >Da hast du zum Teil Recht, die Funktion begrenzt nur den Wertebereich des Timeout >auf 0-99, mehr soll und braucht sie auch nicht zu tun... >Die maximale Zeit wird in der Variablen timeout gespeichert, auf die die Funktion "resetWD()" >zurückgreift... Die Funktion resetWD() greift zwar auf die Variable timeout zu, aber keine Funktion hat vorher die Uhrenregister memory location 00 & memory location 08 initialisiert, wo z.B. die Timer und Alarmfunktionen eingestellt werden. Nachzulesen im Manual PCF8583_5.pdf. Hier meine neueste Version der Funktion setWDtimeout, die mit allen watchdogtimeout Werten funktioniert! /** Watchdog Timeout ********************************************/ function setWDtimeout(byte watchdogtimeout) { if watchdogtimeout<=99 timeout=watchdogtimeout; else timeout=99; /* neu */ i2c.start(device); i2c.write(0x00); // Im Uhren-Register 00 i2c.write(0x04); // alarm enable bit einschalten i2c.cstop(); i2c.start(device); i2c.write(0x08); // Im Uhren-Register 08 i2c.write(0x4A); // timer function auf Sekunden, timer interrupt enable einschalten // timer alarm enable einschalten i2c.stop(); /* neu bis hierher */ } Da geht auch Dein Programm!!! Gruss GPL > > thread main > { > hwcom.init(); > hwcom.setspeed(8); > pcf8583.init(1,1,1,0,1); // Init ohne Aktivierung des WD-Threads > pcf8583.setWDtimeout(10); // Setzen des WD-Timeouts > pcf8583.resetWD(); // manuelles Zurücksetzen des Watchdogs > loop > {hwcom.print("WD in 10 sec..."); > sleep 2000; > hwcom.print("WD in 8 sec..."); > sleep 2000; > hwcom.print("WD in 6 sec..."); > sleep 2000; > hwcom.print("WD in 4 sec..."); > pcf8583.resetWD(); // manuelles Zurücksetzen des Watchdogs > hwcom.print("WD zurückgesetzt..."); > hwcom.print("WD in 10 sec..."); > sleep 2000; > hwcom.print("WD in 8 sec..."); > sleep 2000; > hwcom.print("WD in 6 sec..."); > sleep 2000; > hwcom.print("WD in 4 sec..."); > sleep 2000; > hwcom.print("WD in 2 sec..."); > sleep 5000; > hwcom.print("das solltest du nicht mehr sehen..."); > halt; > } > } > > > > > > > > nitraM | ||
Antwort schreiben Antworten: Re: Watchdog (von nitraM - 29.09.2009 15:35) Re: Watchdog (von GPL - 29.09.2009 22:55) Re: Watchdog (von nitraM - 30.09.2009 10:57) Re: Watchdog (von drickes - 29.09.2009 19:19) Re: Watchdog (von nitraM - 29.09.2009 21:12) |