Frage zum: DS3231 RTC

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich hab mal ne Frage zum DS3231 RTC Module

    Infos vorweg:

    Nun hab ich widersprüchliche Informationen in ein mal der Python Lib und dann im Arduino Sketch, was mich ein wenig verwirrt :-/

    In der Python Lib steht:

    Code
    _REG_CONTROL = 0x07

    Im Arduino Sketch steht aber:

    Code
    #define ALARM_1_SECONDS    0x07
    #define ALARM_1_MINUTES    0x08
    #define ALARM_1_HOURS      0x09
    #define ALARM_1_DAY_DATE   0x0A
    #define ALARM_2_MINUTES    0x0B
    #define ALARM_2_HOURS      0x0C
    #define ALARM_2_DAY_DATE   0x0D    
    #define CONTROL            0x0E

    Aber was stimmt denn jetzt? :wallbash:

    Weil!! Im Datenblatt steht es so wie im Arduino Sketch aufgeführt wird :stumm: -> http://datasheets.maximintegrated.com/en/ds/DS3231.pdf Seite 11

    Oder hat sich da was geändert?
    Gibts verschiedene Revisionen die ich übersehen habe?

    Also wie kann sich derjenige, der erst am 27.09.2014 solch eine Python-Lib geschrieben hat, derart vertun? (quelle)


    PS: Ich weiß, man kann das RTC-Module auch über ein Kernel Module einbinden, aber ich möchte es lieber transparent über Python für mein RoPi Projekt verwenden ;)

  • So, nach einigen Versuchen habe ich das soweit analysieren können. Die Python Lib ist leider tatsächlich falsch, also zumindest der _REG_CONTROL Eintrag.

    Außerdem habe ich das testSDL_DS3231.py etwas angepasst, da sind 4 Zeilen drin die man nicht wirklich benötigt und zwar: Zeile 25; 26; 36; 38

    Das Script schreibt zudem beim ausführen die aktuelle Systemzeit in das RTC Module; über Zeile 29:

    Code
    ds3231.write_now()


    Man sollte also sicherstellen das die Systemzeit vor dem ausführen aktuell ist. Das erreiche ich auf all meinen Linux Rechnern am liebsten mit rdate:

    Code
    rdate chronos.zedat.fu-berlin.de

    Nachdem dann das RTC Module kalibriert wurde kann man zum testen die ds3231.write_now() Zeile auskommentieren und die Systemzeit des RaspberryPI's absichtlich verstellen:

    Code
    date -s "Sep 27 2014 12:46:00"

    Führt man dann das testSDL_DS3231.py Script aus sieht die Ausgabe so aus:

    Intervall: 10 Sekunden

    Weiterführend kann man dann natürlich die Ausgabe von DS3231 im Umkehrschluss auch verwenden um die "Raspberry Pi" (also Systemzeit) zu kalibrieren/stellen ;)


    PS: Zum verwenden der Python-Lib muss man noch folgende Schritte unternehmen:

    Code
    apt-get install i2c-tools python-smbus
    echo i2c-bcm2708 >> /etc/modules
    echo i2c-dev >> /etc/modules
    modprobe i2c-bcm2708
    modprobe i2c-dev
  • Zu dem oben erwähnten Kernel-Modul.
    Die dort angegebene Methode ist wohl nicht mehr korrekt.
    Ich habe hier diese gefunden, die das ganze über das "hwclock"-Script, dass beim starten des PI sehr früh aufgerufen wird, regelt:
    http://feilipu.me/2014/12/21/ds3231-for-raspberry-pi/

    Lustig ist, dass das dort beschriebene Modul über alle möglichen Online-Shops zu bekommen ist, in Deutschland aber nur über einen ;)
    http://cdn.shopify.com/s/files/1/0315…c_1024x1024.jpg
    http://scidre.de/shop/product_i…231-rtc-ic.html

    Ich habe das Uhrenmodell bei http://www.segor.de , unter den Typenbezeichnung "RealTimeClock (DS3231)"
    (RTC DS3231 mit Batterie) für 4,80€ bekommen.

    Computer ..... grrrrrr

    Einmal editiert, zuletzt von Rasp-Berlin (30. November 2015 um 18:26)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!