Forum: Mikrocontroller und Digitale Elektronik Brauch mal Hilfe bei I2C-bus


von norad (Gast)


Lesenswert?

Hallo! ich hoffe jemand kann helfen.
Ich verwende einen AT89C51ED2.

Nun!  ich hab mir ne Platine gebastelt wo der Controller und ne Uhr
drauf ist, ein PCF 8583.
Hab mir zum Ein-und Auslesen einen Treiber geschrieben.
Funktioniert auch soweit aber irgendwas Tickt da nicht richtig.

Hier mal der ein paar Codezeilen.


void main(void)
{
   int z;
   double b;
   unsigned char w = 0;
   P2=255;
   P0=255;
   NOTAUS = 0;
   Uhrschreiben(0x00,0x8B);   // Uhr Initialisieren und Stoppen
   Uhrschreiben(0x01,0x00);   // Millisekunden
   Uhrschreiben(0x02,0x00);   // Sekunden
   Uhrschreiben(0x03,0x50);   // Minuten : Byte soll an Port0 zur
Kontrolle ausgegeben werden
   Uhrschreiben(0x04,0x00);   // Stunden
   Uhrschreiben(0x05,0x00);   // Jahr / Tage
   Uhrschreiben(0x06,0x00);   // Wochentag/Monat


   //Uhrschreiben(0x00,0x03);
   error = 0;

   Uhrlesen(0x00);
   while(1)
   {
     Uhrlesen(0x00);             //Uhr auslesen
     Uhrlesen(0x00);             //wenn diese Zeile deaktiviert ist,
fängt es an zu blinken
                                 //D.h. die LEDS leuchten im wechsel
und zeigen die Werte
                                 // 11111111 = FFh oder 01010000 = 50h
an.
     P0=~uhrbuffer[3];           //Speicherstelle Minuten an Port 0
ausgeben.
     wait1();
     if(error == 1)
     {
         A3 = 0;
     }

   }

   while(1);



}


Also ich hab folgendes Problem:
Wenn ich permanent die Uhr mit  Uhrlesen(0x00); auslesen möchte
und dieser nur einmal pro durchlauf fangen meine Leds an zu blinken.

Wenn ich den Befehl zweimal hintereinander aufrufe bekomme ich das
gewünschte ergebnis.


Ich mach schon den ganzen Tag rum und komm nicht
hinter das Geheimnis warum es sich so verhält. :(


Vielleicht weiss von euch jemmand rat.

norad

von Schoasch (Gast)


Lesenswert?

Da müsstest du uns schon zeigen wie die Funktion "Uhrlesen" aufgebaut
ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.