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

Re: PCF8583 geht immer noch nicht Kategorie: Programmierung (von cedric - 5.06.2005 13:50)
Als Antwort auf Re: PCF8583 geht immer noch nicht von Thomas L - 24.05.2005 17:13

Hallo!

Ich hatte das gleiche Problem und habe den Fehler beim 'init' von 'pcf8583' gefunden.
Das Problem tritt auf, wenn kein 'watchdogtimeout' gesetzt wird. In diesem Fall wird
das vorher gesetzte 'capture' nicht wieder gelöst. Es muss ein 'i2c.stop()' nach der
'watchdogtimeout'-Abfrage eingefügt werden (siehe geänderter Quelltext):


/*************************************/
/* 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 or 1)
  {
   reg=i2c.readlast() and 0x05;
   i2c.cstop();
   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(); // hier sinnlos (es wurde nicht gecaptured!?) !?
 return 0;
}




MfG
cedric


    Antwort schreiben


Antworten: