Ich habe:
- Raspberry Pi mit 2015-05-05-raspbian-wheezy
- ds1307 angeschlossen (es ist eine Adafruit-Platine, Pullup-Widerstände nicht installiert).
Wie mache ich:
- Treiber konfigurieren
- Stellen Sie sicher, dass der Pi beim Start tatsächlich die RTC-Zeit verwendet.
Ich habe den ersten Teil gemacht, soweit ich das beurteilen kann, aber mit dem zweiten kein Glück. Viele der dortigen Informationen, einschließlich der Adafruit-Anweisungen, sind aus diesem Grund veraltet: https://www.raspberrypi.org/forums/viewtopic.php?t=97314
Also, erster Schritt: Sie aktivieren das I2c und die Treiber in raspi-config, fügen dtoverlay=i2c-rtc,ds1307
sie am Ende von /boot/config.txt hinzu, und Sie haben Treiber und hwclock
arbeiten anscheinend jetzt für mich (i2cdetect kann nicht mehr ausgeführt werden) dazu später).
Sie müssen jetzt fake-hwclock entfernen und so einrichten, dass der RTC beim Start tatsächlich gelesen wird. Ich habe versucht, diesen Rat zu befolgen - der weitgehend mit anderen Dingen übereinstimmt, die ich gesehen habe und der sehr neu ist - https://www.raspberrypi.org/forums/viewtopic.php?p=842661#p842661
(das ist für eine andere RTC, aber ich folge nur dem zweiten Teil über das Entfernen von Fake-Hwclock und so weiter).
Aber kein Glück, und die 'zu kommentierenden Zeilen' existieren auf meinem Pi nicht. Mein Pi kommt mit 1. Januar 1970 00:00 und hwclock -r
sagt, dass die RTC beschädigt ist. Auch wenn ich mich seit dem Einstellen der RTC und dem Neustart des Pi nicht ausgeschaltet habe, scheint es, dass es durch den Start beschädigt wurde.
Ich konnte i2cdetect auch überhaupt nicht ausführen. Es beschwert sich, dass die Geräte / dev / i2c (etwas) nicht existieren - und tatsächlich nicht ...
Zwischenupdate
OK, ich habe festgestellt, dass:
- Die Beschädigung bezieht sich nur auf die Uhrzeit- / Datumsinformationen. Wenn ich i2cset verwende, um das NVRAM mit einem Muster zu füllen, werden diese Informationen beim Neustart nicht geändert, aber das Jahr geht auf 0x66
- Wenn ich das
,ds1307
aus der Zeiledtoverlay=i2c-rtc,ds1307
in config.txt entferne, wird das System gestartet, ohne die RTC zu beschädigen! Dies unterstützt die Idee, dass der Treiber selbst die Daten beschädigt. Ich habe mir den Treibercode angesehen, und er geht durch die Zeit und ändert Dinge, die er nicht mag (z. B. ändert er das 12-Stunden- bis 24-Stunden-Format). Vielleicht liegt das Problem darin, dass der Treiber zu einem Zeitpunkt installiert wird, an dem der I2C-Port nicht betriebsbereit ist (möglicherweise weil die Uhren nicht bereit sind?). - Wenn ich dies nach dem Start
sudo sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device'
mache: Der Treiber rtc_ds1307 wird geladen und / dev / rtc0 wird angezeigt. Und die Zeit ist noch in Ordnung. Und das kann als Grundlage für das Modifizieren der Init-Skripte verwendet werden - Noch ein lustiges Detail: Wenn ich es
hwclock -s
direkt nach dem Schreiben in /sys/..../new_device in einem Skript verwende, schlägt es fehl. Es muss einsleep 0.5
oder etwas dazwischen geben.
Es scheint also, dass ich jetzt ein System habe, das heruntergefahren und gestartet werden kann und die richtige Zeit hat - ich werde dies bald richtig aufschreiben.
dtparam=i2c1=on
zu config.txt wie für micksulley im Januar arbeitete raspberrypi.org/forums/viewtopic.php?f=28&t=97639 - Reboot. Immer noch kein / dev / i2c *, immer noch kein i2cdetect.
sudo invoke-rc.d hwclock.sh start
macht nichts, es wird beendet, weil es /run/udev
existiert. Aber sudo invoke-rc.d hwclock.sh show
liest die Uhr, und sudo invoke-rc.d hwclock.sh stop
kopiert die Systemuhr auf Hardware - Uhr.