Re: pcf-uhr-watchdog-falsche Antwort Kategorie: Programmierung (von Hans-Jürgen - 14.08.2005 9:13) | ||
Als Antwort auf Re: pcf-uhr-watchdog-falsche Antwort von JörgC - 10.08.2005 9:21 | ||
| ||
Hallo Jörg, danke für Deine Antwort. Es funktioniert! Mir ist noch was aufgefallen: Wird im init Befehl Watchdog Timeout auf 0 gesetzt gibt es ein Problem. Ich habe im Beitrag Nr.10737 genau dieses Problem auch gefunden. Die Lösung habe ich unten im Code eingefügt: else i2c.stop(); Ich überlege noch wie ich zwischen reset und Stromausfall unterscheiden könnte.Ich denke ich schreibe die Uhrzeit ständig in eine Variable des Uhrenbausteins. Ist die Zeitdifferenz deutlich grö�er als Time out so wars ein Stromausfall. Oder gibts eine bessere Lösung? Viele Grüsse Hans-Jürgen > Hier die abgeänderte Init: > > /*************************************/ > /* PCF8583 initialisieren */ > /*************************************/ > function init(byte A0,byte setCC2clock, byte autosync, byte watchdogtimeout, byte enableHostKey) returns byte > // watchdogtimeout = 0 bis 99 (sec.) > {byte reg; > if watchdogtimeout>99 timeout=99; else timeout=watchdogtimeout; > device=((A0!=0) and 0b10) or 160; > > if i2c.cstart(device) > { > i2c.write(0x00); > i2c.start(device or 1); > reg=i2c.readlast() and 0x05; > i2c.stop(); > > i2c.start(device); > i2c.write(0x00); > i2c.write(0x04 and (watchdogtimeout!=0)); > i2c.cstop(); > if watchdogtimeout > { > i2c.start(device); > i2c.write(0x08); > i2c.write(0x4A); > i2c.stop(); > } ************** else i2c.stop(); // capture lösen wenn watchdogtimeout nicht gesetzt ! ********* > if setCC2clock synccc2(); > if autosync run sync; > enHostKey=enableHostKey!=0; > if timeout run watchdog; > if reg==0x05 return 0x80; //= Reset durch Watchdog verursacht > else return 0xFF; > } > i2c.stop(); > return 0; > } > > > Viele Grüsse, > Jörg | ||
Antwort schreiben Antworten: Re: pcf-uhr-watchdog-falsche Antwort (von JörgC - 17.08.2005 16:09) |