- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: Nachhilfe in C bzgl PCF 8583

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2003
    Beiträge
    28

    Nachhilfe in C bzgl PCF 8583

    EDIT: Problem die 1. dank Kjion gelöst !
    Danke !

    Da ich nicht noch einen Thread für fast das gleiche Problem eröffnen wollte hab ich Ihn kurzer Hand mal geändert

    Und nun zu meinem aktuellen Problem. Also mein PCF 8385 läuft mitlerweile und ich habe bis auf eine sich aus irgendeinem grund nicht ändernde stundenzahl auch eine schön laufende uhr.

    so weit so gut wollte ich mich am datum versuchen und hab mir entsprechende code zeilen die ich irgendwo im netz gefunden habe angeschaut ... leider blicke ich nicht ganz durch.

    Code:
    void GetDate()
    {
     int var_l=0,var_h=0,flag;
    
     tag  = read_rtc(0x05)&0x3F;
     monat  = read_rtc(0x06)&0x1F;
    
     // Da der PCF8583 nur 4 Jahre zählen kann, ist das Jahr in Adresse 0x10 gespeichert
     // Mit dem Inhalt in der Adresse 0x11 wird verglichen, ob sich das Jahr verändert hat
     jahr = (read_rtc(0x05)&0xC0)>>6;
     zeit[6]=jahr;
     flag=read_rtc(0x11);
     if(jahr!=flag)
      {flag=jahr;
       var_l=read_rtc(0x10);
       var_l++;
       if((var_l&0xf)>9)
        {
         var_l=var_l&0xF0;
         var_l=var_l+0x10;
        }
       write_rtc(0x10,var_l);
       write_rtc(0x11,flag);
      }
     jahr =read_rtc(0x10);
    
     //Hier wird der Wochentag bestimmt
     dow  = (read_rtc(0x06)&0xE0)>>5;
     dow  = dow+1;
    
     zeit[3]=hexd2decD(jahr);     // Das aktuelle Jahr wird in den Array gespeichert
     zeit[4]=hexd2decD(monat);    // Der aktuelle Monat wird in den Array gespeichert
     zeit[5]=hexd2decD(tag);      // Der aktuelle Tag wird in den Array gespeicher
     return;
    }
    Wäre nett wenn mir das jemand mal schritt für schritt erklären könnte ... vor allem das &-Zeichen bereitet mir Kopfschmerzen. Was wird da gemacht ?


    Danke !

    Mfg

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Vielleicht wäre auch der Rest des Codes interessant. Ich würde jetzt spontan darauf tippen, das entweder das LCD oder I2C den gesamten Port "belegt", also in der Software der ganze Port angesprochen wird und nicht nur die einzelnen Pins.
    Initialisisierst du vorher eigentlich die ganzen Register des ATmega16 ? Das könnte nämlich dazu führen, das der entsprechende Pin der Led zuerst als Eingang geschaltet ist und dann durch das LCD wieder zum Ausgang wird.

    Du könntest also mal überprüfen ob beides funktioniert wenn du sie an komplett verschiedene Ports hängst. Sollte dies der Fall sein, müsste man im Quelltext mal nachschauen was da gemacht wird...

    MfG Kjion

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    15.11.2003
    Beiträge
    28
    *Eröffnungspost geändert*

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests