- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 8 von 8

Thema: RTC für kalte Tage.....

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von oderlachs Beitrag anzeigen
    Code:
    void SET_Day(uint8_t s_day)
    {
            if (s_day < 1) s_day = 1;
            s_day = Decimal_To_BCD(7);     // mal 7 festgelegt zum Test für Sonntag
            TWI_Start();
            TWI_Write_Adr(0xD0);    /* Sende Chip Adresse = 0xD0 für DS1307*/
            TWI_Write_Data(0x03);   /* drittes Zeitregister = weekday*/
            TWI_R_Start();          /* Repeated start */
            TWI_Write_Adr(0xD0);    /* Write Adresse schreiben*/
            TWI_Write_Data(s_day);  // BCD Wert ins Register schreiben 7 für Sonntag
            TWI_Stop();
    }
    Ich hab jetzt nicht ins Datenblatt geschaut, aber was mir auffällt:
    Es geht mit Start los, ok. Dann kommt die Adresse und das R/W Bit. Soweit auch ok.

    Nur eine Bemerkung: Auch wenn ich die Funktion "TWI_Write_Adr()" nicht kenne, sollte sie melden, ob ein ACK vom Slave gekommen ist. Wenn man das auswertet weiß man, ob der Slave sich angesprochen fühlt, die Adresse also richtig ist.

    Jetzt kommt die Registeradresse, auch ok.

    Aber warum jetzt ein Start? Der Slave ist im "Write Mode" (R/W Bit war auf Write), also kann man jetzt den Wert ins Register schreiben. So ist das jedenfalls bei den meissten I2C Bausteinen gängig. Nur wenn man lesen will, bricht man die Übertragung nach dem Schreiben der Registeradresse ab und startet neu mit R/W Bit auf Read. Zusammengefasst : Das zweite Start() und Write_adr() weglassen.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo Klebwax !

    Vielen Dank !!
    Du hast genau das mir aufgezeigt, was ich eben gerade selber herrausfand.

    Aber warum jetzt ein Start? Der Slave ist im "Write Mode" (R/W Bit war auf Write), also kann man jetzt den Wert ins Register schreiben. So ist das jedenfalls bei den meissten I2C Bausteinen gängig. Nur wenn man lesen will, bricht man die Übertragung nach dem Schreiben der Registeradresse ab und startet neu mit R/W Bit auf Read. Zusammengefasst : Das zweite Start() und Write_adr() weglassen.
    Nun ja wenn man zu oft gestört wird mit anderen Aufgaben, da kann man solche Stolpersteine mit einbauen und übersehen. Aber es ist schön zu wissen , das zur Not immer Helfer zu finden sind.

    Einen schönen Sonntag noch

    Gruss und Dank

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. DSLogic - Kickstarter noch 12 Tage
    Von Kampi im Forum Open Source Software Projekte
    Antworten: 9
    Letzter Beitrag: 07.06.2017, 15:48
  2. Ein paar tage mit dem RP6
    Von Stephan90 im Forum Robby RP6
    Antworten: 1
    Letzter Beitrag: 08.07.2013, 16:30
  3. [ERLEDIGT] Kalte Lötstelle von LGA Lötstelle fixen . Geht das, wenn ja wie ?
    Von Ritchie im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 30.06.2013, 14:20
  4. suche Greifarm für 3-Tage-Dauerbetrieb
    Von scharK im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 27.04.2008, 18:50
  5. Mal eben für heisse Tage gebastelt :D
    Von squelver im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 9
    Letzter Beitrag: 07.08.2006, 10:26

Berechtigungen

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

Labornetzteil AliExpress