Forum: Projekte & Code Uhr mit STM8Sxx3 und TM1637


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Okay, es ist die einmillionsteundeine Digitaluhr mit 
7-Segmentanzeigen...

Nachdem vor ein paar Wochen eine Mikrocontroller realisierte Uhr mit 
7-Segmentanzeigen nachgefragt wurde (und das dann sogar durchaus ein 
längerer Thread geworden ist) habe ich doch tatsächlich nach (wirklich) 
ein paar Jahrzehnten eine 7-Segment Uhr gebaut (bisher war es eine 
BCD-Uhr mit dem alten ATtiny2313).

In dem dortigen Thread hatte ich eine Uhr mittels ATmega und 
gemultiplexter Anzeige (und Transistoren als Stromtreiber) auf 
Steckbrett aufgebaut gehabt und dachte mir, nachdem die Preise für 
PCB-Fertigung ins Bodenlose gefallen waren ich mache mal wirklich ein 
aufgebaute Uhr und diese dann (so als meinen eigenen Anreiz) so 
preiswert wie möglich.

Die erste Überlegung war, das mit meinem "Billigliebling" PFS154 zu 
machen, aber hier ging mir der Speicher für die Funktionen, die die Uhr 
können sollte aus. Den nächstgünstigen (billigen) Controller mit dem ich 
umgehen kann war dann ein STM8S003 für 29 Cent bei www.lcsc.com (Stand 
22.01.2025). Anstelle von Transistoren als Stromtreiber habe ich dann 
den Anzeigentreiber TM1637 (16 Cent, Stand 22.01.2025) gewählt, der dann 
auch praktischerweise die Tastenanschlüsse gleich mit übernimmt (und es 
somit keiner 24 Transistoren bedarf).

Die Uhr ist 6-stellig, wobei eine 0.36" große 4-fach Anzeige die Stunden 
und Minuten darstellt, eine kleiner 0.28" große 2-fach Anzeige die 
Sekunden.

Die Uhr wurde nicht nach klassischer Methode durch das Hochzählen der 
Sekunden bis Überlauf von 59 nach 60 bei Erhöhung der Minuten, Überlauf 
der Minuten erhöht die Stunden, realsisiert, sondern sie lehnt sich an 
die C-Bibliothek time.h an bei der Uhrzeiten mittels Datumsstempel 
realisiert und manipuliert werden können.

So kommt hier denn auch meine, für Mikrocontroller abgespeckte Source, 
my_time.c / my_time.h zum Einsatz, die genau für den Einsatz in 
Mikrocontrollern entwickelt ist.

Dies macht dann auch möglich, dass die Uhr nicht nur die Uhrzeit, 
sondern auch das Datum anzeigen kann.

Wenn man dann schon dabei ist, habe ich die Funktionen für ein Auslesen 
eines DS18B20 Temperatursensors mit implementiert, so dass auch eine 
Temperaturanzeige gegeben ist.

In der Schaltung ist auch ein Ausgang für einen Lautsprecher vorhanden, 
der aber bei der derzeitigen Softwareversion noch keine Rolle spielt. 
Vielleicht mag ja der eine oder andere die Uhr um einen Wecker oder eine 
Stopuhr mit Signalton erweitern ?!?

Die Software ist ein reines Makefile-Projekt unter Linux und ein 
einfaches absetzen von make im Stammverzeichnis sollte das Projekt 
compilieren (sofern ein SDCC-Compiler systemweit verfügbar ist).

Ein kurzes (und sehr schlechtes, amateurhaftes) Video der Uhr gibt es 
hier:

https://www.youtube.com/shorts/3bqEEjXbZb8

Für denjenigen, der die Uhr tatsächlich nachbauen möchte sind im 
Zip-Archiv die Gerberfiles enthalten, welches direkt zu JLCPCB geschickt 
werden kann um sich hieraus eine Platine fertigen zu lassen. Die 
Platinengröße ist ca. 50x50 mm groß. Sollte es wirklich jemand 
interessieren und sich bei JLCPCB die Platinen fertigen lassen wollen, 
den Platz für die erlaubten 100x100 mm jedoch ausnutzen wollten kann man 
das ebenfalls hier angehängte Sprint-Layout

stm8_uhr_only.lay6

 um seine eigenen Schaltungen erweitern.

:-) :-) :-) viel Spaß beim Nörgeln und beim Negativbewerten,

Gruß,
JJ

von Jörg R. (solar77)


Lesenswert?

Ralph S. schrieb:
> Okay, es ist die einmillionsteundeine Digitaluhr mit
> 7-Segmentanzeigen...

> :-) :-) :-) viel Spaß beim Nörgeln und beim Negativbewerten,

Uhren kann man nie genug haben, noch vor digitalen Multimetern und 
Labornetzteilen:-)

Du hast das Projekt schön vorgestellt, es gibt keinen Grund für 
Negativbewertungen.

Ich frage mich nur woher der Tick (schönes Wortspiel) für Uhren 
herkommt?

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Ralph S. schrieb:
> STM8S003
Hat ST den nicht abgekündigt?

Beitrag #7815621 wurde vom Autor gelöscht.
von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

... kaum gepostet und dann gleich den ersten Fehler entdeckt: Nicht in
der Software, sondern in der Beschreibung.

Ich habe hier die Beschreibung für my_time gepostet, die für
GCC-basierende Compiler funktioniert.

In Ermangelung dessen, dass SDCC keine Strukturen als Funktionsargumente
bearbeiten kann und auch keine Strukturen zurückliefern kann,
funktioniert die SDCC-Variante von my_date über globale
Strukturvariable... sorry.

Michael schrieb:
> Ralph S. schrieb:
>> STM8S003
> Hat ST den nicht abgekündigt?

Na ja, wie soll ich sagen: zuerst war der von ST als "not recommended
for new designs" gesetzt, aber nach einer gewissen Zeit stand auf deren
Homepage für Marketing Status als "active":

https://www.st.com/en/microcontrollers-microprocessors/stm8s-series/products.html

Zudem hat www.lcsc.com 290890 Stück "in stock" wobei ich dann hier davon
ausgehe, dass die zumindest bei denen noch (und nicht nur bei denen)
eine zeitlang verfügbar sein werden.

Bei der letzten Bestellung dort, habe ich mir "sicherheitshalaber" noch
einmal 20 Stück mitbestellt, sodass zumindest für meinen Privatbedarf
hier der Vorrat bestimmt gedeckt ist.

von Ralph S. (jjflash)


Lesenswert?

Jörg R. schrieb:
> Ich frage mich nur woher der Tick (schönes Wortspiel) für Uhren
> herkommt?

:-) ich weiß gar nicht ob es diesen Tick gibt. Ich für meinen Teil mag 
Uhren eigentlich so gar nicht, weil sie mir jedesmal irgendeinen Termin 
zu einer bestimmten Uhrzeit vorgeben. Seit jeher weigere ich von daher, 
eine Armbanduhr zu tragen (und ich hasse Armbanduhren an mir regelrecht 
... :-) meine Frau hingegen hat davon unzählige Uhren, allerdings ist 
das für sie wohl auch eher eine Art Schmuck).

Wenn schon Uhren, dann irgendwie welche, die anderst sind:

In meiner Bastelecke "tickt" (wie oben erwähnt) eine BCD-Uhr (bei der 
viele den Kopf schütteln und meinen, dass man da doch keine Uhrzeit 
ablesen kann) und in meinem Wohnzimmer steht über meinem Dampfradio 
Loewe Opta Meteor eine Nixie-Uhr (herrlich schön im Dunklen beim 
Fernsehgucken abzulesen).

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
>> STM8S003
> Hat ST den nicht abgekündigt?

Macht nichts, der CH32V003 dürfte ein Ersatz sein, afaik pinkompatibel, 
nur einen anderen Compiler und ein anderes Programmierinterface 
brauchts.

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Ralph S. schrieb:
> Status als "active"
Gut zu hören.
Ist ein netter kleiner Controller.

Harald K. schrieb:
> CH32V003
Schickes Ding.
Sogar das DB sieht da sehr vollständig aus.
Wenn es dann irgendwann mal EU Distris dafür gibt und das Verständniss 
was über die pure Bauteillieferung hinaus alles an Nachweispflichten und 
Regularien im professionellem Verkehr zu erfüllen ist, könnten wir die 
mal näher ins Auge fassen.

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Wenn es dann irgendwann mal EU Distris dafür gibt und das Verständniss
> was über die pure Bauteillieferung hinaus alles an Nachweispflichten und
> Regularien im professionellem Verkehr zu erfüllen ist

Arbeitest Du in irgendeiner Behörde? Das tut mir leid.

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Harald K. schrieb:
> Arbeitest Du in irgendeiner Behörde? Das tut mir leid.

Nö, nur ein einem Bereich in dem auch DU darauf bestehen würdest das man 
zu jedem Zeitpunkt genau weiß was man wo aus welcher Quelle verbaut hat 
und das jede kleine Bauteiländerung zu einem äußerst kostenintensiven 
Rezertifizierungsprozess führt, weil nur so der hohe Standard erhalten 
werden kann.

Oder bist Du noch nie geflogen, warst medizinischen Maschinen 
ausgeliefert, hast Dein Leben automatischen Bremssystemen, 
Türsteuerungen und vielem anderen mehr anvertraut?

Arbeitest Du in einer Hinterhofbastelklitsche die Blinkeherzchen für 
Tankstellen herstellt?
Das tut mir leid.

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

Michael schrieb:
> Wenn es dann irgendwann mal EU Distris dafür gibt

Gibt's doch schon, Industrie Qualität! also echt jetzt :) Ich wollte nur 
mal kucken, was das eigentlich ist. Also den muss ich wirklich nicht 
kennen.

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Oder bist Du noch nie geflogen, warst medizinischen Maschinen
> ausgeliefert, hast Dein Leben automatischen Bremssystemen,
> Türsteuerungen und vielem anderen mehr anvertraut?

Viele, die dieses Forum frequentieren, tun dies, weil sie ein Hobby 
haben.

Ich würde mir vielmehr ernsthafte Sorgen machen, wenn Personen, die die 
von Dir indirekt angegesprochenen Dinge entwickeln, sich hier Ratschläge 
holen würden.

von Ralph S. (jjflash)


Lesenswert?

Harald K. schrieb:
> Ich würde mir vielmehr ernsthafte Sorgen machen, wenn Personen, die die
> von Dir indirekt angegesprochenen Dinge entwickeln, sich hier Ratschläge
> holen würden.

hm, da würde ich mir keine Sorgen machen! Hier gibt es Mitglieder, die 
sind schon "hochgut" und von denen kann man sich auch Ratschläge holen, 
die für sicherheitsrelevante Systeme gelten. Wohlbemerkt Ratschläge! 
Ergebnisse sind immer zu testen und in Langzeitversuchen zu evaluieren.

Nur, weil die von dir angesprochenen Personen auf ihrem Gebiet hohe 
Verantwortung tragen (und ich gehe davon aus, dass sie dieser auch 
gerecht werden), heißt das nicht, dass diese unfehlbar sind oder niemals 
irgendwelche Probleme habe (und sei es, dass sie einen Einstieg für 
etwas neues benötigen).

Durch viel lesen hier, kommt man bisweilen auf Problemlösungsideen, die 
man zuvor nicht hatte.

von Ralph S. (jjflash)


Lesenswert?

... und, um "Zoff" evtl. zu vermeiden: Chips wie Padauk PFS154, CH32V003 
oder Puya PY32f030 etc. sind sicherlich nicht dafür gemacht um in 
sicherheitsrelevanten Dingen oder in Hochrisikogerätschaften eingesetzt 
zu werden.

Aber in "Spielzeugen" und Billiggerätschaften wie Uhren oder 
Raumthermometer etc. haben sie schon ihren Sinn.

Bspw. bin ich für einen ehemaligen Auszubildenden (der im Rollstuhl 
sitzt) und dessen Vater am Werkeln, eine (für mich riesige) 
Modelleisenbahn mit Elektronik zu unterstützen. Hier ist das Problem, 
dass hierfür insgesamt 108 Weichen anzufahren sind. Der ursprüngliche 
Gedanke war, alles über Schieberegister zu machen. Hier sind dann zum 
einen 3 Steuerleitungen von Nöten und die wären von einem Modul zum 
nächsten verbunden gewesen. Irgendwie kein guter Ansatz.

Also: nächste Idee! Proprietärer unidirektionaler OneWire-Bus (PWM) der 
an einen PFS154 Controller geht und der 2 kaskadierte Schieberegister 
anfährt. PFS154 liest 8 I/O Pins ein (als Deviceadresse) und reagiert 
dann entsprechend, wenn er auf dem Bus seine Adresse "sieht". Am Eingang 
des PFS154 wird noch ein Schmitt-Trigger verbaut, damit die Leitung 
relativ störunempfindlich wird (funktioniert jetzt mit ca. 20 Meter 
länge).

Wenn hier der Chip nicht zertifiziert ist, schaltet im schlimmsten Fall 
eine Weiche nicht und eine Modelllok entgleist oder fährt auf eine 
andere auf.

Hmmm, nicht schön, aber davon geht dann die Welt nicht unter. Ich glaube 
es gibt tausende von Anwendungen dieser Art, bei der billigste 
Controller eine Rolle spielen können. Und (so als Schlußwort): es ist 
egal, ob der Controller mit 8, 16 oder 32-Bit werkelt, hauptsache er ist 
seiner Problemstellung gewachsen.

von Peter S. (peter_sch)


Lesenswert?

Harald K. schrieb:
> Michael schrieb:
>>> STM8S003
>> Hat ST den nicht abgekündigt?
>
> Macht nichts, der CH32V003 dürfte ein Ersatz sein, ...

Auch der N76S003 (mit 8051-Kern) sollte als Ersatz verwendbar sein.

von Ralph S. (jjflash)


Lesenswert?

Peter S. schrieb:
> Auch der N76S003 (mit 8051-Kern) sollte als Ersatz verwendbar sein.

Schmunzeln muß: Warum wollt ihr mir den STM8 "wegnehmen" und einen 
Ersatz dafür bringen? Den STM8 gibt es noch (und wahrscheinlich noch 
lange günstig).

All den "Ersatztypen" ist gemein: ich darf/muß dann wieder eine andere 
Toolchain lernen / ans laufen bekommen. Ich weiß noch, wie lange das mit 
dem PFS154 gedauert hat, bis ich mit dem einigermaßen vernünftig etwas 
anfangen konnte.

Einen CH32V003 habe ich bspw. hier und von Zeit zu Zeit versuche ich 
mich da mit mäßigem Erfolg an der Toolchain mit MounRiver... bei der 
riscv-gnu-toolchain scheue ich mich noch, die mehr als 6 GB downzuloaden 
und mir die Toolchain zu übersetzen (und ein Binary habe ich keines 
gefunden). Hier immerhin: Upload in den CH32V003 bekomme ich sogar 
mittels Bootloader hin.

Puya habe ich hier liegen (aber noch nicht angefasst) und mit Nuvoton 
bin ich am Fremdeln. MCS-51 würde zwar von der Toolchain her super zum 
SDCC passen, aber irgendwie will das hier nicht so recht.

Von daher: es gibt so irre viele günstige bis billige Controller in der 
Fassung: AVR (eher schon teuer), STM32, STM8 und Padauk. :-) ich brauche 
für so etwas einfaches wie die Uhr hier nicht wochenlange Versuche bis 
ich eine neue Familie im Griff habe (by the way: im Griff heißt für 
mich: Programmieren ohne IDE ... schön zu Fuß mittels Editor und 
makefile)

Aaaaaber: ich würde mich wirklich sehr über ausführliche "Geting 
started" Tutorials für die bisher genannten Controller freuen, wenn so 
ein Tutorial sich auf die Toolchain (nicht eine IDE) und dann auf Linux 
beziehen würde. Irgendwie finde ich da nichts wirklich "gescheites" im 
Netz: Alle schreiben von allen ab.

von Harald K. (kirnbichler)


Lesenswert?

Ralph S. schrieb:
> Einen CH32V003 habe ich bspw. hier und von Zeit zu Zeit versuche ich
> mich da mit mäßigem Erfolg an der Toolchain mit MounRiver..

Es gibt eine deutlich schlankere Alternative:

https://github.com/cnlohr/ch32v003fun

von Ralph S. (jjflash)


Lesenswert?

Harald K. schrieb:
> Es gibt eine deutlich schlankere Alternative:
>
> https://github.com/cnlohr/ch32v003fun

grrrrr .... das kenne ich natürlich, aaaaaaaber:
das gesamte Framework CH32V003FUN setzt einen bereits im System 
lauffähigen riscv-Compiler vorraus! Zudem (weil ich ja garantiert kein 
Platformio machen möchte) hat das ein sehr umfangreiches Makefile (bzw. 
ch32v003fun.mk welches ins Makefile inkludiert ist). Sollte ich das also 
wirklich mal machen (und irgendwie habe ich den Chip abgeschrieben) muß 
ich mir seeeeehr viel Zeit nehmen, weil meine PC-Hardware wirklich 
steinalt ist und ein compilierender Sourcen (6,3 GByte) garantiert ewig 
dauern wird (abgesehen von sicherlich genügend nicht installierter 
Abhängigkeiten).

Ich habe hier ein extrem abgespecktes Slackware-Linux (und arbeite damit 
sogar in einer Live-Version) damit ich noch gut damit werkeln kann 
(gerne auch in der Konsole).

Ob dein Fun-Framework wirklich schlanker ist als MounRiver kann sich 
erst dann zeigen, wenn der Compiler für CH32V003FUN installiert ist.

:-) :-) :-) :-) aber du kannst gerne den Source der Uhr hier nehmen, auf 
einen CH32V003 portieren und das Ergebnis dann mal zeigen. Würde mich 
wirklich interessieren.

von Harald K. (kirnbichler)


Lesenswert?

Ralph S. schrieb:
> das gesamte Framework CH32V003FUN setzt einen bereits im System
> lauffähigen riscv-Compiler vorraus!

Na gut, wenn die Rahmenbedingungen so ... besonders sind, wie bei Dir, 
dann kann ich Dein Magengrimmen nachvollziehen.

Wie bekommst Du dann aber den doch auch recht fetten Brocken des 
"mounriver studio" zum laufen?

Wenn man, wie ich, sich nicht zu fein ist, Windows zu verwenden, ist das 
gcc-Paket, das man bei "sysprogs" herunterladen kann, 22 MByte groß ...

von Ralph S. (jjflash)


Lesenswert?

Harald K. schrieb:
> Na gut, wenn die Rahmenbedingungen so ... besonders sind, wie bei Dir,
> dann kann ich Dein Magengrimmen nachvollziehen.

Okay, wenn ich wollte (aber darauf programmiere ich nicht) ... hätte ich 
auch noch einen Win11 PC (okay okay nicht fein) mit i7 12. Generation 
und 32 GB RAM (und dort auf einer anderen Bootpartition ein Ubuntu). :-) 
der Rechner wird jedoch für anderes genutzt. Ich habe mir schon überlegt 
gehabt, dort noch eine Bootpartition einzurichten um dann dort das 
Kompilieren vorzunehmen. Allerdings werd ich auch so nicht wirklich warm 
mit der Toolchain.

Harald K. schrieb:
> Wie bekommst Du dann aber den doch auch recht fetten Brocken des
> "mounriver studio" zum laufen?

Da hatte ich irgendwo ein Binary gefunden und ausprobiert und oh wunder 
(zu meiner Überraschung) funktionierte das. Allerdings wie gesagt sehe 
ich für mich den Sinn (außer meinem Spieltrieb) nicht, zwingend diesen 
Chip zu verwenden. Mit STM32 kenne ich wenigsten ein klein wenig aus und 
die Toolchain mit den von mir verwendeten Sourcen funktioniert so zur 
Zufriedenheit (ich verwende libopencm3) und die kleinen STM32F gibts ja 
mittlerweile auch schon ab 60 cent. Einen STM32C habe ich hier liegen 
(den proklamiert ST als Ersatz für 8-Bit Systeme) und für den muß ich 
mir einiges umbasteln und umbiegen (vom STM32G) und damit bin ich dann 
auch noch etwas beschäftigt.

:-) außerdem muß es auch mal mit meinem kleinen Terminaldisplay 
weitergehen... und das habe ich auf einem STM32F030 angefangen

von Peter S. (peter_sch)


Lesenswert?

Ralph S. schrieb:
> ... und mit Nuvoton
> bin ich am Fremdeln. MCS-51 würde zwar von der Toolchain her super zum
> SDCC passen, ...

Dann könntest Du Dir für die nächste Uhr auch mal die Controller von STC 
aus China anschauen, z.B. STC8G1K08. Diese verfügen über eine sehr 
einfaches I2C-Peripheral, das man auch zur Ansteuerung des TM1637 
"missbrauchen" kann.

von Ralph S. (jjflash)


Lesenswert?

heeey, lachen muss... ich mache keine nächste Uhr

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Harald K. schrieb:
> Ich würde mir vielmehr ernsthafte Sorgen machen, wenn Personen, die die
> von Dir indirekt angegesprochenen Dinge entwickeln, sich hier Ratschläge
> holen würden.

Ich bin Profi.
Selbst die Putzkraft hier im Büro könnte etwas sagen das mich auf die 
richtige Idee bringt.
Und da mc.net sich noch einen Rest Fachkompetenz bewahrt hat, gegen 
erheblichen Widerstand der YT Fraktion und eher fragwürdigen 
'Strömungen' ziehe ich durchaus Nutzen aus mc.net und gebe von zeit zu 
zeit auch was zurück.

Zumal ich ja mit keinem Wort die WCH MCU schlecht gemacht habe.
Nur beschäftige ich mich ca. 180Std jeden Monat mit Elektronik 
Entwicklung und allem was rundherum zu bewegen ist bis man von der Idee 
zu einem zertifizierten Produkt kommt.
Ich bin einfach nicht gewillt mich mit Dingen zu beschäftigen die 
nirgendwohin führen weil es bereits an den grundsätzlichen Dingen fehlt.
Und bei uns ist es auch ziemlich egal ob eine MCU 30Cent oder 3€ kostet.

Ich verfolge aber durchaus mit Interesse was die Hobby Fraktion so mit 
den China MCUs macht.
All das hat keinerlei Einfluss auf meine professionelle Handlungsweise.
Ich befolge die notwendigen Regeln meines Marktes und kann zugleich 
links und rechts des Weges schauen.
Toll oder?

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Ich befolge die notwendigen Regeln meines Marktes und kann zugleich
> links und rechts des Weges schauen.

Klingt unglaubwürdig, also der Teil nach "und".

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Harald K. schrieb:
> Klingt unglaubwürdig
Das ist hart.
Dabei ist mir die fachlich Meinung irgendwelcher Leute die mit irgendwas 
völlig anderem ihre Brötchen verdienen so überaus wichtig 😂

von Ralph S. (jjflash)


Lesenswert?

Michael schrieb:
> Ich verfolge aber durchaus mit Interesse was die Hobby Fraktion so mit
> den China MCUs macht.
> All das hat keinerlei Einfluss auf meine professionelle Handlungsweise.
> Ich befolge die notwendigen Regeln meines Marktes und kann zugleich
> links und rechts des Weges schauen.
> Toll oder?

genau so ... muß es sein! Und das ist gut (oder auch toll) !

Harald K. schrieb:
> Klingt unglaubwürdig, also der Teil nach "und".

Wieso ist das unglaubwürdig?

Dienstlich darf ich nur Dinge verbauen, die zertifiziert sind. Privat 
interessiert mich das dann nur am Rande!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.