Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Watchdog Kategorie: Programmierung (von GPL - 28.09.2009 22:01)
Als Antwort auf Re: Watchdog von nitraM - 28.09.2009 9:44
Ich nutze:
C-Control II Station, OSOPT V3.1
Hallo Drickes,

> pcf8583.init(1,1,1,0,1);          // Init ohne Auomatik...
> pcf8583.setWDtimeoutt(20); // WD-Time auf 2sec einstellen
> loop
> {
>   pcf8583.resetWD();           // WD im Programm regelmäÃ?ig zurücksetzen...

Auch meine Programmierexperimente mit dem Watchdog in der obenangeführten Form
(ohne den Watchdog-Thread) haben leider nie zu einem Erfolg geführt.
Ich stelle daher die Behauptung auf, dass der Fehler in dem Modul pcf8583.c2 in der
letzten Version 1.55
/* Version   : 1.55                                               */
/* Datum     : 19. Juli 2003                                      */
/* Geändert  : 15. Oktober 2007  
liegen muss.

Auch das Testprogramm rtctest.c2 funktioniert in dieser Konfiguration nicht!
/******************************************************************/
/* Test/Beispielprogramm für pcf8583.c2                           */
/*                                                                */
/* Autor     : André Helbig (www.cc2net.de)                       */
/* Benötigt  : ports.c2, hwcom.c2, pcf8583.c2, plm.c2, str.c2     */
/* Ausgabe über hwcom 57.600 Baud                                 */
/* (Teminal-Programm erforderlich, z.B. Hyperterminal)            */
/******************************************************************/

So jetzt habe ich mir mal die entscheidende Funktion im pcf8583.c2 :                          
/** Watchdog Timeout ********************************************/
function setWDtimeout(byte watchdogtimeout)
{
 if watchdogtimeout<=99 timeout=watchdogtimeout;
    else timeout=99;
}
genauer angesehen. Die tut eigentlich nicht viel. Vor allem setzt sie nicht die Uhrenregister!!!

Hier meine neue Version:
/** Watchdog Timeout ********************************************/
function setWDtimeout(byte watchdogtimeout)
{
 if watchdogtimeout<=99 timeout=watchdogtimeout;
    else timeout=99;
   
    /* neu */
   i2c.start(device);
   i2c.write(0x00);
   i2c.write(0x04 and timeout);
   i2c.cstop();
   i2c.start(device);
   i2c.write(0x08);
   i2c.write(0x4A);
   i2c.stop();
    /* neu bis hierher */
}
Und siehe da alle meine Testprogramme funktionieren! Aber leider nicht perfekt!
Bei pcf8583.setWDtimeoutt(xx);  funktionieren leider nicht alle Werte für xx!
Bitte überprüft das mal und wenn wir es hinbekommen, dann werden wir Andre um ein offizielles Update bitten!


GruÃ? GPL


    Antwort schreiben


Antworten:

Re: Watchdog (von nitraM - 29.09.2009 7:46)