pxt-calliope-PCF85063-RTC Uhr-Modul

Bei den Erweiterungen im MakeCode befindet sich als letztes das RTC-Modul:

Ich habe dieses gekauft:

angeschlossen an A0 I2C und mit den Blöcken programmiert. Allerdings reagiert es nicht. Es wird die Zeit 00:00:00 angezeigt, das passiert aber auch wenn kein Modul angesteckt ist. Auch mit zwei verschiedenen neuen Knopfzellen geht nichts.

Ich finde kein Demo-Programm. Muss das Modul initialisiert werden, und wenn ja wie?

Oder gibt es noch ein anderes Modul und ich habe das falsche? Wo bekomme ich das richtige?

FG Lutz

Hallo Lutz,

leider laufen Uhrmodule mit dem DS1307 nicht auf dem Calliope mini da auf dem Calliope mini schon die I2C-Adresse des DS1307 belegt ist. Zur Zeit scheint das passende Modul nur bei Mouser oder Digikey lieferbar zu sein. Bis 50€ Bestellwert muss man allerdings 20€ Versandkosten bezahlen. Ab 50€ ist der Versand kostenlos.

Viele Grüße

Michael

Ich habe das Uhr-Modul von Mouser importiert und es funktioniert am Calliope. Wird das Modul am Calliope stecken gelassen wenn er aus ist, ist die Knopfzelle ganz schnell leer. Und lässt man es ohne Kabel liegen, geht die Uhr 1 bis 2 Sekunden am Tag falsch.

Für die weitere Entwicklung der Erweiterung (Blöcke) wünsche ich mir, dass auch ‚weekday‘ ausgelesen werden kann. Beim Stellen der Uhr muss man eine Zahl 0-6 eintragen, die man aber nicht zurück bekommt.

Viele Grüße
Lutz

Hallo Lutz,

falls Dein Seeed Studio Modul den PCF85063TP Chip hat, sollte diese Erweiterung funktionieren und die liefert jetzt auch den Wochentag als Text zurück:

Falls Du noch andere Funktionalitäten brauchst, implementiere ich die gerne.

Wichtiger Hinweis: Den PCF85063A - Chip unterstützt die Erweiterung nicht, die Codierung der Zeitanteile ist da etwas anders.

„High Precision“ ist der Baustein allerdings nicht, ist ja auch keine Atomuhr. Ich hatte die Uhr mal vor ca. 2 Jahren gestellt und die liefert mir aktuell 20 min Differenz zur aktuellen Zeit. Ich wollte den RTC Baustein ursprünglich für einen Datenlogger benutzen, es hatte sich aber aufgrund eines sowieso angeschlossenen GPS - Empfängers eine ganz andere Variante ergeben, die an Genauigkeit kaum zu übertreffen ist - dieser liefert natürlich die GMT Zeit mit.

Für einfache Experimente am Mini sollte der Baustein aber sicher reichen.

Ansonsten fallen mir für eine genaue Uhrzeit nur der Langwellen-Sender oder das Internet ein,
das habe ich aber noch nicht erforscht am Mini…

Gruß Raik

Hallo Raik,

vielen Dank für die Erweiterung. Der Wochentag wird bei mir jetzt angezeigt.

Gegenüber der Erweiterung, die bei makecode angeboten wird, fehlt mir „set clock output“. Diese hatte ich auf 1Hz gesetzt und die Lötstelle CLK mit einem Pin am Calliope verbunden. Dann habe ich jede Sekunde ein Ereignis, um die Zeitanzeige zu aktualisieren.

Oder kann man einen Ereignis-Block implementieren, der bei jeder Änderung der Sekunde aufgerufen wird?

Außerdem wundere ich mich, warum die „Teile“ als Text und nicht als Zahl ausgegeben werden. Es sind doch alles Zahlen, die ich aber erst von Text in Zahl umwandeln muss, um sie z.B. auf dem Uhr-Modul anzuzeigen.
Der Wochentag kann so ausgegeben werden, wie er beim Stellen der Uhr eingegeben wurde.

Viele Grüße
Lutz

Hallo Lutz,

gute Idee das mit dem Ereignis Block. Ich schaue mir bei Gelegenheit das andere Paket mal an.

Das mit dem return Type string hat zwei Gründe:

Zum einen wurde der Code entwickelt, als number gerade floating point werden durfte, vorher gab es nur Ganzzahlen und auch die passenden Operatoren. Deshalb auch der seltsam anmutende Code in DECtoBCD und BCDtoDEC. Der läuft nämlich auch in makecode v1.
String als return type ist da ganz einfach auch robuster und für die Darstellung sind die Vornullen auch gleich mit dabei.

Der zweite Grund ist, dass die gleiche Funktion auch den Namen des Wochentages liefern kann.

Mir ist schon klar, dass man string erst wieder wandeln muss wenn man rechnen will und die Vornullen gehören für diesen Anwendungsfall auch nicht rein. Ich werde ganz einfach eine zweite export Funktion anbieten.

Gruß Raik

Hallo Lutz,

ich habe gerade gesehen dass der Code des dl1ekm Paketes auf meinem Paket basiert und ich denke es wäre am besten wir entwickeln dort weiter. Das Paket funktioniert ja wohl auch mit dem PCF85063A - Chip und das mit dem Hardware Interrupt gefällt mir auch - wusste ich gar nicht dass das geht. Ich werde mal einen Request in git starten.

Gruß Raik

Hallo Raik,

über eine Weiterentwicklung der Erweiterung freuen wir uns natürlich. Die Version von dl1ekm
mussten wir in den letzten Updates der Beta leider entfernen, da keine MIT Lizenz hinterlegt ist (Add license · Issue #1 · dl1ekm/pxt-calliope-PCF85063-RTC · GitHub), Microsoft ist hier etwas strenger geworden als bisher.

Bei dir scheint die Lizenz ja hinterlegt zu sein, wir können daher ggf. auch gerne dein Repository verlinken.

1 „Gefällt mir“

Hallo Raik,

auf den Export als String müssen wir ja nicht verzichten. Ein zweite Export Funktion als Zahl wäre gut.

Der Hardware Interrupt ist auf dem Bild zu sehen. Ein Software-Ereignis-Block wäre allerdings besser, dann muss ich keinen extra Draht anlöten. Ich benutze Calliope in der Schule.

Lutz

Hallo Lutz,

schau Dir das aktualisierte Paket mal bitte an. Ich habe eine zusätzliche Funktion eingebaut, die die Anteile der Zeit als numerische Werte liefert. Der Event-Handler meldet sich immer zur vollen Minute. Ich habe beim Entwickeln festgestellt, dass die Sequenz zum Lesen der Zeit auf keinen Fall zweimal angesteuert werden darf, da gerät der Baustein durcheinander und man muss die Zeit neu stellen. Ich hoffe das abgefangen zu haben. Ansonsten habe ich versucht, die Rechenlast für den Mini zu klein wie möglich zu halten, aber doch die Umschaltsekunde auf die volle Minute zu erwischen. Es geht eben doch nichts über Hardware - Interrupt :wink:
Schau mal ob die Implementierung für Deinen Anwendungsfall hilft, ansonsten bauen wir gerne das Paket weiter aus.

Gruß Raik

2 „Gefällt mir“