I2C-Modul abfragen


#1

Hallo,

ich kämpfe gerade mit der I2C-Programmierung eines RTC-Moduls. Auf dem Microbit konnte ich das Auslesen (und Einstellen) der Uhrzeit eines DS1307-Moduls erfolgreich testen und zwar mit Python als auch mit Microbit-PXT-Editor und nachfolgendem Code. Leider liefert mit der Calliope bei Verwendung des Calliope-PXT-Editors mit dem gleichen Code keine korrekten Daten.

Code:
let wert = 0
let bcd = 0
basic.forever(() => {
for (let index = 0; index <= 6; index++) {
pins.i2cWriteNumber(104, index, NumberFormat.UInt8LE, false)
bcd = pins.i2cReadNumber(104, NumberFormat.UInt8LE, false)
wert = (bcd - bcd % 16) / 16 * 10 + bcd % 16
serial.writeValue("" + index + “”, wert)
}
basic.pause(30000)
})

Toni
PS: Guten Rutsch


#2

Ich antworte mir mal selbst:

Mit Verwunderung habe ich festgestellt, dass es auch ohne RTC-Modul Daten gibt. Also muss jemand auf der Adresse 0x68 (104) des RTC-Moduls auf I2C senden. Ein Blick in den Schaltplan des Calliope zeigt, das auf ihm ein anderer Gyrosensor verbaut ist als auf dem Microbit, nämlich der Bosch BMX055. Und dieser verwendet wohl - wie der DS1307 meines RTC-Moduls - die Adresse 0x68.

Leider lässt sich die Adresse des RTC-Moduls nicht “umbiegen” und ich versuche es mit einem anderen.

Edit: Anfrage ans Calliope-Team: Könntet ihr eine Übersicht der belegten Adressen erstellen?

Das Projekt ist trotzdem fertig, aber eben nur für den microbit: https://www.hackster.io/ToniTaste/micro-bit-als-binaruhr-mit-rtc-6ee881

Toni


#3

Versuche es mit einem anderen Uhrmodul wie hier:


#4

Danke für die Rückmeldung. Ich werde mal so ein Modul bestellen und dann die Programmierung von Ingo übertragen. Mittlerweile läuft der Microbit seit Neujahr mit dem DS1307-Modul, leider aber nicht sehr genau.

Toni


#5

schau mal!
https://github.com/Tinkertanker/pxt-realtimeclock-ds1307