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

Re: Watchdog Kategorie: Programmierung (von GPL - 29.09.2009 12:54)
Als Antwort auf Re: Watchdog von nitraM - 29.09.2009 7:40
Ich nutze:
C-Control II Station, OSOPT V3.1
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)