Forum: Mikrocontroller und Digitale Elektronik Echtzeituhr mit DS1307 und Multiplexing 7 Seg Anzeige


von Rocco (Gast)


Lesenswert?

Ich möchte gerne eine Echtzeituhr mit DS1307 und Multiplexing 
Ansteuerung für sechs 7-Segment Anzeigen (hh.mm.ss) mittels ATmega8 
zusammenbauen. Dabei habe ich das Problem wenn ich das Multiplexing und 
die Abfrage der aktuellen Zeit über die I²C in der Main ausführe das 
Multiplexing nicht funktioniert. Grund ist das die Zeit zur Abfrage der 
aktuellen Zeit über die I²C zu lange dauert und somit die Anzeige 
flackert. Meine Überlegung ist das Multiplexing über einen Timer 
Interrupt zu machen. Meine Frage ist gibt es Probleme wenn die aktuelle 
Zeit gerade über die I²C abgefragt wird und ein Timer Interrupt ansteht.

von Falk B. (falk)


Lesenswert?

@ Rocco (Gast)

>zusammenbauen. Dabei habe ich das Problem wenn ich das Multiplexing und
>die Abfrage der aktuellen Zeit über die I²C in der Main ausführe das
>Multiplexing nicht funktioniert. Grund ist das die Zeit zur Abfrage der
>aktuellen Zeit über die I²C zu lange dauert und somit die Anzeige
>flackert.

Dann machst du was grundlegendes falsch.

> Meine Überlegung ist das Multiplexing über einen Timer
>Interrupt zu machen.

Richtig!

>Meine Frage ist gibt es Probleme wenn die aktuelle
>Zeit gerade über die I²C abgefragt wird und ein Timer Interrupt ansteht.

Wenn man es richtig macht, nein. Denn I2C kann als synchrone 
Schnittstelle auch mal kurz warten, wenn der Interrupt auftritt.

von Fred R. (fredylich)


Lesenswert?

Hallo Rocco,

warum nimmst du keinen MAX7219 für LED Ansteuerung?
Nutze ich in mein Projekt „Uhr mit Feiertagsanzeige“ sehr effektiv.

Mit freundlichen Grüßen

von Maxim B. (max182)


Lesenswert?

Fred R. schrieb:
> warum nimmst du keinen MAX7219 für LED Ansteuerung?

Ich kann Verwendung von MAX7219 nur befürworten. Bei Chinesen recht 
billig, ich habe 50 Stück gekauft, ohne steuerfreien Preis zu 
übersteigen.

Gegen MAX7219 können m.E. folgende Umstände sein:
1. wenn man Schema unter 4 Volt betreiben will
2. wenn man aus rein sportlicher Interesse alles von Null selber machen 
will.
3. wenn SPI auch viel anderes zu tun hat. Dann ist MAX7221 bessere Wahl, 
da voll SPI-kompatibel.

: Bearbeitet durch User
von Stephan (Gast)


Lesenswert?

Maxim B. schrieb:
> Ich kann Verwendung von MAX7219 nur befürworten.

Bei seiner Fragestellung ist zu befürchten das der MAX  ihn überfordern 
könnte. Ein par IO´s wackeln zu lassen ist was anderes als der MAX. Da 
gibts hier regelmäßig Leute die mit dem Init nicht klar kommen obwohl 
alles im Datenblatt steht.  Aber er kann ja die Uhr dann mit einem MAX 
pimpen !

von Peter D. (peda)


Lesenswert?

Rocco schrieb:
> Meine Überlegung ist das Multiplexing über einen Timer
> Interrupt zu machen.

So macht man es und nicht anders.

Rocco schrieb:
> Meine Frage ist gibt es Probleme wenn die aktuelle
> Zeit gerade über die I²C abgefragt wird und ein Timer Interrupt ansteht.

Nein, der Interupt unterbricht einfach das I2C.
Genau deshalb nimmt man ja einen Interrupt als MUX.

von Stefan F. (Gast)


Lesenswert?

Ich würde allerdings erwägen, auf die Sekunden zu verzichten. Denn bei 
6x Multiplexing könnte die Anzeige schon recht dunkel werden. Hängt 
natürlich von den konkreten LEDs ab.

Zur Not kannst du auch die Ausgänge des µC verstärken, um die LEDs mit 
mehr Strom zu betreiben. Ich persönlich würde diesen Aufwand aber nur 
treiben, wenn ich einen praktischen nutzen für die Sekunden hätte. Den 
Linienbus erreiche ich auch ohne Sekunden.

von Stephan (Gast)


Lesenswert?

Für den Anfang würde es auch ein BCD to 7 Segment machen. Dann kommt er 
mit einem 8Bit Port aus.

von Fred R. (fredylich)


Lesenswert?

Stephan schrieb:
> Bei seiner Fragestellung ist zu befürchten das der MAX  ihn überfordern
> könnte. Ein par IO´s wackeln zu lassen ist was anderes als der MAX. Da
> gibts hier regelmäßig Leute die mit dem Init nicht klar kommen obwohl
> alles im Datenblatt steht.  Aber er kann ja die Uhr dann mit einem MAX
> pimpen !

Bin nicht deiner Meinung!
Vielleicht kennt er den Max nicht. Die Fragestellung abzuwerden ist 
schon im Ansatz falsch.
Na gut deine Antwort zeigt Hilfsbereitschaft ohne jegliche Rückfrage. 
Aber ob Bereitschaft hilfreich ist bezweifle ich.
Die MAX optimal und für Bedürfnisse anzupassen, ist mit Datenblatt, 
nicht so einfach. Aber wenn dann ist diese Variante auch für 
„Einsteiger“  okay.

MfG

von Joachim B. (jar)


Lesenswert?

ich würde ja den DS1307 rauswerfen und den besseren genaueren DS3231 
nehmen, SW kompatibel bis auf die 56 Byte RAM das fehlt, dafür mit 
Alarmausgang als Wecker

: Bearbeitet durch User
von Maxim B. (max182)


Lesenswert?

DS3231 ist wirklich gut. Ich habe zur Probe neulich chinesische Modul 
mit DS3231 eingeschaltet. Alles läuft wunderschön, mit Programm-I2C und 
auch mit TWI auf 400 kHz.

Stefanus F. schrieb:
> Ich würde allerdings erwägen, auf die Sekunden zu verzichten. Denn bei
> 6x Multiplexing könnte die Anzeige schon recht dunkel werden.

Das ist nicht notwendig. AVR-Port kann bis 25 mA problemlos liefern. 
25/6~=4,2 mA; heutige LED-Anzeigen arbeiten gut auch mit 1,6 mA 
Durchschnitt. Für gemeinsame Elektrode braucht man einfache Transistor.

Fred R. schrieb:
> Die MAX optimal und für Bedürfnisse anzupassen, ist mit Datenblatt,
> nicht so einfach.
Und was ist dort so schwer? Ein paar Worte per SPI zu senden? Gibt es 
etwas noch leichteres in AVR-Bereich?

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Maxim B. schrieb:
> DS3231 ist wirklich gut. Ich habe zur Probe neulich chinesische Modul
> mit DS3231 eingeschaltet. Alles läuft wunderschön, mit Programm-I2C und
> auch mit TWI auf 400 kHz.

nur beim I2C EEPROM schreiben (ebay Module) muss ich auf 100kHz 
runtergehen, danach wieder 400kHz :)

Die Temperatur lesen von der DS3231 habe ich manuell nachgefummelt, 
spart einen DS18B20 und damit Port Pin.

von Maxim B. (max182)


Lesenswert?

Ach ja, es gibt dort noch EEPROM... Das habe ich völlig vergessen... 
Wozu braucht man so was mit Uhr zusammen? Vielleicht einfach entfernen, 
um Stromverbrauch zu reduzieren?

Was Temperatur betrifft: auf dem Modul stehen LED und noch Diode mit 
Widerstand für Akku-Aufladen. Es sieht so aus, daß dadurch die Platte 
spürbar wärmer wird. Als Beispiel: ich schalte Modul ein, es wird +21°C 
gezeigt. Nach ein paar Minuten schon +23°C. Deshalb kann man Modul kaum 
benutzen, um auch noch Zimmertemperatur zu messen. Es sei denn, man 
entfernt LED und Diode.

von Joachim B. (jar)


Lesenswert?

Maxim B. schrieb:
> Ach ja, es gibt dort noch EEPROM... Das habe ich völlig vergessen...
> Wozu braucht man so was mit Uhr zusammen?

ich speichere dort die letzte gestellte Uhrzeit ab ob MEZ oder MESZ.

Wenn der Atmel neu startet weiss ich ja nicht ob es 2:30 MEZ oder MESZ 
ist falls die Umstellung kam, OK von MEZ zu MESZ Umstellung gibt es 
keine 2:30 Uhr, aber bei MESZ zu MEZ Umstellung gibt es 2:30 genau 2x

Ausserdem speichere ich im EEPROM noch anderes weil ein Uhrenmodul 
billiger und leichter zu tauschen ist als ein Arduino, besonders meine 
mighty mini 1284p, um einen nano ist es ja nicht schade, aber die mighty 
mini 1284p sind teurer und schwerer zu beschaffen.

Ich mache den Code immer kompatibel, entwickle erst mal großzügig auf 
dem 1284p und wenn alles läuft reduziere ich bis es in den 328p passt, 
wenn der Code aber nicht passt bleibe ich beim mighty mini 1284p.

Maxim B. schrieb:
> Vielleicht einfach entfernen,
> um Stromverbrauch zu reduzieren?

wer es mag

von Maxim B. (max182)


Lesenswert?

Joachim B. schrieb:
> Ausserdem speichere ich im EEPROM noch anderes weil ein Uhrenmodul
> billiger und leichter zu tauschen ist als ein Arduino

Aber AVR hat gewöhnlich genug eigene EEPROM. 100 000 mal umschreibbar!
Wem das aber nicht genügt, dann lieber gleich 23LCV1024 nehmen.

von Joachim B. (jar)


Lesenswert?

Maxim B. schrieb:
> Aber AVR hat gewöhnlich genug eigene EEPROM. 100 000 mal umschreibbar!

Die Theorie vom AVR EEPROM ist mir bekannt, auch die Möglichkeiten der 
Verbesserung beim Beschreiben und die Minimierung von Schreibvorgänge 
sowie Rotation über alle Zellen, aber das macht neue Baustellen auf, ich 
kann mich nicht immer um alles kümmern, hinke eh SW mäßig schon 
hinterher, da muss ich mich nicht zerfieseln.
Ich wollte es einfach nicht, I2C von der Uhr wählen, ggffs noch ein 
externes auf DIL8 und dann darf es irgendwann sterben, vielleicht bin 
ich ja schneller.

von Stephan (Gast)


Lesenswert?

Joachim B. schrieb:
> ich speichere dort die letzte gestellte Uhrzeit ab ob MEZ oder MESZ.

Wozu ? Die RTC lüft doch weiter...ist ja der Sinn davon.

von Joachim B. (jar)


Lesenswert?

Stephan schrieb:
> Wozu ? Die RTC lüft doch weiter...ist ja der Sinn davon.

du schaltest ein, es war ein Stromausfall, die RTC zeigt 2:30 zur MEZ 
Umstellung

woher weisst du ob MEZ oder MESZ?
denn zum MEZ Umstellungsdatum gibt es genau 2x 2:30 -> 1x 2:30 MESZ und 
1x 2:30 MEZ

stelle ich die Uhr in der MESZ dann weiss ich das Time und Date sich auf 
MESZ bezieht
stelle ich die Uhr in der MEZ dann weiss ich das Time und Date sich auf 
MEZ bezieht

sarte ich also neu, schaue ich ins EEPROM sehe welche Zeit gilt, rechne 
neu wo ich aktuell bin MEZ oder MESZ korrigiere die Uhr und sichere den 
Status im EEPROM

von Joachim B. (jar)


Lesenswert?

Stephan schrieb:
> Wozu ? Die RTC lüft doch weiter...ist ja der Sinn davon.

dir RTC weiss nichts von MESZ oder MEZ, klar kann man JEDESMAL von UTC 
neu rechnen, mag ich aber nicht, oder ich müsste viele SW umstellen und 
manches ist vom Platz begrenzt.

Uhr lesen ist eine Sache, jedesmal neu rechnen eine andere.

von Maxim B. (max182)


Lesenswert?

Joachim B. schrieb:
> Uhr lesen ist eine Sache, jedesmal neu rechnen eine andere.

Aber rein rechnerische Aufwand ist eigentlich gleich. Einfach zwischen 
BCD und binar umrechnen oder dazu noch eine Stunde addieren. 0,1 us?

von Joachim B. (jar)


Lesenswert?

Maxim B. schrieb:
> Einfach zwischen
> BCD und binar umrechnen oder dazu noch eine Stunde addieren. 0,1 us?

verstehe ich was nicht oder du?

es geht nicht um BCD oder binär

es geht darum wenn du die Uhrzeit liest aus der RTC, liest du MEZ oder 
MESZ?, die RTC weiss von der Umstellung nichts,

ist genauso als wenn du deine schönste ArmbandUhr im Winter stellst auf 
13:00 Uhr in die Schublade legst und im Sommer wieder rausholst aus der 
Schublade  und dann umbindest und dich wunderst warum deine 13:00 Uhr 
Verabredung nicht anwesend ist, denn es ist Sommer und damit 14:00 Uhr!

Vielleicht fällts dir ja bei der Armbanduhr noch auf und korrigierst 
manuell, der µC kann das aber nicht wissen und weiss nicht ob die 
Uhrzeit korrigiert ist oder nicht.

Wenn der µC aber weiss das sie zu MEZ gestellt wurde und wir uns in der 
MESZ befinden dann kann er die Stunde addieren, sonst nicht.

von Stephan (Gast)


Lesenswert?

Dann stelle ich dir Uhr eine Stunde vor oder nach und gut. 2 Taster ein 
Tastendruck und voila. Du musst die Uhr doch eh mal stellen. Die Uhr 
wird bei Inbetriebnahme gestellt, Wert in die RTC rein und gut. Bei 
Umstellung Std hoch oder runter, rein in die RTC und wieder gut. Das I²C 
zu langsam ist glaube ich fast nicht. Aber ich habe da eine V3021 drin. 
Da mache ich alles direkt aus und in die RTC, sogar den Senkundenimpuls 
für die Punkte. Alles Live.
(Warum stehen die Leute immer so auf das umständliche I²C ?...laut 
gedacht)

von Stephan (Gast)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

Stephan schrieb:
> Bei
> Umstellung Std hoch oder runter

kannst du doch machen, ich will das nicht, ich ärgere mich schon das ich 
das bei meinen Ford von 2016 (mit RDS), dem teuren Backofen und der 
Microwelle machen muss, das ist einfach nicht 3. Jahrtausend oder 21. 
Jahrhundert!
Stunde vor oder zurück, das ist Mittelalter als die Pendeluhren erfunden 
wurden.

von Maxim B. (max182)


Lesenswert?

Joachim B. schrieb:
> die RTC weiss von der Umstellung nichts,

Muß auch nicht. Alles, was nach Umstellungszeit kommt, bekommt noch eine 
Stunde addiert. Schon in AVR.

Übrigens, ich habe eine Uhr. Baujahr 1984. Weißrußland (also kein 
besonders hoch entwickeltes Land). Und diese Uhr schaltet sich 
automatisch zwischen Sommer- und Winterzeit! Damals gab es weder I2C 
noch Flash überhaupt. Trotzdem...

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Maxim B. schrieb:
> Joachim B. schrieb:
>> die RTC weiss von der Umstellung nichts,
>
> Muß auch nicht. Alles, was nach Umstellungszeit kommt, bekommt noch eine
> Stunde addiert.

du verstehst es wirklich nicht,

und zurück?
https://www.der-postillon.com/2013/10/in-zeitschleife-gefangener-mann-stellt.html

µC liest die RTC
es ist 3:00 und stellt eine Stunde zurück,
µC liest die RTC
es ist wieder 3:00 MEZ und stellt eine Stunde zurück,
usw.usf.

Die RTC weiss nichts von MEZ oder MESZ deswegen das merken.

: Bearbeitet durch User
von Maxim B. (max182)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> µC liest die RTC
> es ist MEZ und stellt eine Stunde zurück,
> µC liest die RTC
> es ist MEZ und stellt eine Stunde zurück,
> usw.usf.

Die Uhr selbst braucht keine Umstellung. Es reicht, wenn AVR während der 
Sommerzeit immer eine Stunde addiert, vor dem die Zeit auf Anzeige 
gebracht wird.

Diese Uhr aus 1984 kann das auch. Arbeitet immer noch perfekt!
Damals gab es weder Flash noch Windows.

P.S. Ich verstehe wenig, warum DS innerlich so kompliziert aufgebaut 
ist. Es wäre ausreichend, eine uint32 als Zähler zu verwenden, das 
reicht für 136 Jahre. Diese Variable kann man viel schneller lesen, 
schreiben und vergleichen mit Wecker, als heutige BCD. Oder auch int32 - 
"nur" 68 Jahre (so viel lebt sowieso keine elektronische Uhr), dafür 
aber bequemer Vergleiche zu machen, als mit uint.

: Bearbeitet durch User
von Stephan (Gast)


Lesenswert?

Joachim B. schrieb:
> kannst du doch machen, ich will das nicht, ich ärgere mich schon das ich
> das bei meinen Ford von 2016 (mit RDS), dem teuren Backofen und der
> Microwelle machen muss, das ist einfach nicht 3. Jahrtausend oder 21.
> Jahrhundert!
> Stunde vor oder zurück, das ist Mittelalter als die Pendeluhren erfunden
> wurden.

und jetzt stelle Dir vor die hätten das so gemacht und dieses Jahr wäre 
die Abschaffung der SZ nicht ebgelehnt worden.
Dann hättest Du jetzt Edelschrott ! :-)))

Bewahre Deine Sourcen gut auf. Evtl. musst Du da noch mal ran :-)))

von Dirk (Gast)


Lesenswert?

Maxim B. schrieb:
> Diese Uhr aus 1984 kann das auch. Arbeitet immer noch perfekt!
bis zur Veröffentlichung von Windows95 (1995) endete die SZ in D jeweils 
am letzten Sonntag im September, während in den folgenden Jahren 
(zuletzt überprüft: 2017) die Umstellung jeweils am letzten Sonntag im 
Oktober definiert war, aber "perfekt!" kann ja auch etwas ungenauer 
sein.

Beitrag #5395278 wurde vom Autor gelöscht.
von Joachim B. (jar)


Lesenswert?

Maxim B. schrieb:
> Die Uhr selbst braucht keine Umstellung. Es reicht, wenn AVR während der
> Sommerzeit immer eine Stunde addiert, vor dem die Zeit auf Anzeige
> gebracht wird.

du verstehst es immer noch nicht:
> wenn AVR während der
> Sommerzeit immer eine Stunde addiert

bei jedem Neustart? bei jeder Abfrage der Uhr wenn festgestellt wird das 
es Zeit ist zum Umstellen der Sommerzeit?

vielleicht meinst du das Richtige aber kannst es nicht erklären?

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

gut das wir drüber geredet haben, ich könnte ja das MESZ Flag im 
Alarmregister2 der DS3231 sichern, spart das EEPROM Schreiben.
OK Die Korrektur muss natürlich noch erfolgen bei Erstzugriff.
Evt. brauche ich doch noch eine neue Leseroutine, aber das ist wieder 
Arbeit neben der Arbeit.

von Roland L. (Gast)


Lesenswert?

Joachim B. schrieb:
> bei jedem Neustart? bei jeder Abfrage der Uhr wenn festgestellt wird das
> es Zeit ist zum Umstellen der Sommerzeit?
>
> vielleicht meinst du das Richtige aber kannst es nicht erklären?

er meint, dass du die Uhr gar nicht umstellst. Die Uhr läuft immer mit 
MEZ. Wenn du den Wert ausgelesen hast, schaust du, ob Sommer oder Winter 
ist und zählst ggf. eine Stunde dazu.

von Rocco (Gast)


Lesenswert?

Danke für die schnelle und vielfaltige Hilfe. Werde nun versuchen einen 
Code in C zu schreiben wo ich das  Multiplexing über einen Timer
Interrupt machen (Bin Anfänger und hoffe es funktioniert). Ich werde den 
DS1307 benutzen da ich diesen schon habe. Bei eventuellen Problemen 
würde ich mich noch einmal im Forum melden.

von Maxim B. (max182)


Lesenswert?

Dirk schrieb:
> bis zur Veröffentlichung von Windows95 (1995) endete die SZ in D jeweils
> am letzten Sonntag im September, während in den folgenden Jahren
> (zuletzt überprüft: 2017) die Umstellung jeweils am letzten Sonntag im
> Oktober definiert war, aber "perfekt!" kann ja auch etwas ungenauer
> sein.

In dieser Uhr kann man einstellen, wann Sommerzeit beginnt und wann 
Winterzeit.

Stephan schrieb:
> und jetzt stelle Dir vor die hätten das so gemacht und dieses Jahr wäre
> die Abschaffung der SZ nicht ebgelehnt worden.

Hier helfen drei Variablen in EEPROM von AVR.
1. wann beginnt Sommerzeit
2. wann beginnt Winterzeit
3. Differenz zwischen Sommer- und Winterzeit.

Das sollte aus Menu einstellbar sein, so etwa wie Wecker. Am bequemsten 
geht das mit int32 oder uint32, wo Sekunden gespeichert sind (als Anfang 
kann man irgendwelche Zeitpunkt nehmen. Z.B. Programmierzeit oder auch 
z.B. heute ).

Lesen aus der Uhr:
1. aus allen gelesenen Bytes uint32 machen
2. entsprechend Variablen in EEPROM addieren/substrahieren
3. in Form umwandeln, die für Anzeige geeignet ist.

Schreiben in die Uhr:
1. aus Anzeigepuffer (wo auch Zeit in Menu eingestellt wird) uint32 
machen
2. entsprechend Variablen in EEPROM addieren/substrahieren
3. in Form umwandeln, die für DS paßt, und dorthin aufschreiben.

Solche Umwandlung macht in Wirklichkeit nicht so viel Arbeit zusätzlich, 
da für Anzeige alles sowieso angepaßt sein sollte.

: Bearbeitet durch User
von Dirk (Gast)


Lesenswert?

Maxim B. schrieb:
> In dieser Uhr kann man einstellen, wann Sommerzeit beginnt und wann
> Winterzeit.
Die Fähigkeiten von man stehen sicherlich außer Frage, allerdings 
erweisen sich solche gefühlten Fähigkeiten traditionsgemäß nach einem 
kurzen "Wie?" schnell als reines Gefühl...

von Maxim B. (max182)


Lesenswert?

Dirk schrieb:
> Die Fähigkeiten von man stehen sicherlich außer Frage, allerdings
> erweisen sich solche gefühlten Fähigkeiten traditionsgemäß nach einem
> kurzen "Wie?" schnell als reines Gefühl...

Damals hat man das mit Mittelalter-Elektronik in Serie gebaut, ohne 
Flash und ohne EEPROM. Hat man heute diese geistige Fähigkeiten nicht 
mehr?

von Joachim B. (jar)


Lesenswert?

Roland L. schrieb:
> er meint, dass du die Uhr gar nicht umstellst. Die Uhr läuft immer mit
> MEZ. Wenn du den Wert ausgelesen hast, schaust du, ob Sommer oder Winter
> ist und zählst ggf. eine Stunde dazu.

eben und das ist mir zu doof weil ich in jedem Programmcode wor ich die 
Uhr lese oder nur eine Uhren Variable lese den Code ändern müsste.
D.h. doch nichts weiter als das ich bei jeder Abrage prüfen und rechnen 
muss in jedem fertigen Programmteil in jedem Programm.

Deswegen ist es für mich eben einfacher am Programmstart festzustellen 
in welchem Modus die Uhr gerade läuft und die dann entsprechend zu 
stellen.
Dazu müsste ich aber wissen ob sie auf MEZ oder MESZ steht.

Ich meine wer bitte lässt daheim immer alle Uhren auf MEZ und rechnet 
bei jedem Blick auf den Kalender und Uhr die Uhrzeit um?
Das ist ein wenig weltfremd.

von Dirk B. (Gast)


Lesenswert?

Maxim B. schrieb:
> Dirk schrieb:
>> Die Fähigkeiten von man stehen sicherlich außer Frage, allerdings
>> erweisen sich solche gefühlten Fähigkeiten traditionsgemäß nach einem
>> kurzen "Wie?" schnell als reines Gefühl...
>
> Damals hat man das mit Mittelalter-Elektronik in Serie gebaut, ohne
> Flash und ohne EEPROM. Hat man heute diese geistige Fähigkeiten nicht
> mehr?
Diese geistigen Fähigkeiten "das" ohne einen Bezug zu erfragen sind 
heute (19.4.2018)sicherlich noch vorhanden und geistige Fähigkeiten kurz 
ein "Wie?" zu beantworten sind sicherlich technisch überflüssig.

Menschen die heutzutage noch geistige Fähigkeiten haben kurz
Maxim B. schrieb:
> In dieser Uhr kann man einstellen, wann Sommerzeit beginnt und wann
> Winterzeit.
anhand der Einstellungen bzgl. Monat letzter,erster,zweiter Sonntag ... 
Jahresberechnung (mind. dreistellig wg.  2000++ ?) der Casio Uhr aus den 
1980er zu erläutern, dürften eher selten sein.

von Maxim B. (max182)


Lesenswert?

Dirk B. schrieb:
> der Casio Uhr aus den
> 1980er zu erläutern, dürften eher selten sein.

Auch die Möglichkeit, digital Uhrgang zu korrigieren, die DS1307 noch 
nicht hat und erst DS3231 - diese Möglichkeit hat die Uhr aus 1984 schon 
auch! :)

von Dirk B. (Gast)


Lesenswert?

> Dirk B. schrieb:
>> Menschen die heutzutage noch geistige Fähigkeiten haben kurz
>> anhand der Einstellungen [..] der Casio Uhr aus den
>> 1980er zu erläutern, dürften eher selten sein.

Maxim B. schrieb:
[Möglichkeit nur einen Teil eines Satzes kopieren zu können]
> Auch die Möglichkeit [neben der Möglichkeit einen Halbsatz kopieren zu 
können],
> digital Uhrgang zu korrigieren, die DS1307 noch  nicht hat und erst > DS3231 - 
diese Möglichkeit hat die Uhr aus 1984 schon auch! :)
Die Möglichkeit eine Einstellung, bspw. ob das Jahr bei der Uhr aus 
1984 3- oder 4-stellig (Y2K) einstellbar ist, zu nennen fehlt bei "schon 
auch"

Wenn die Nennung einer Einstellung unmöglich ist, dann bleibt nur der 
Glaube an die Serie("Damals hat man das mit Mittelalter-Elektronik in 
Serie gebaut")

von Maxim B. (max182)


Lesenswert?

Dirk B. schrieb:
> Wenn die Nennung einer Einstellung unmöglich ist, dann bleibt nur der
> Glaube an die Serie

Was willst du damit sagen? Die Uhr macht, was heutige IC erst bekommen, 
aber sowieso schlecht? :)

Eigentlich Thema war: wozu noch zusätzlich IC EEPROM, wenn ATmega328P 
selbst sowieso 1KBytes EEPROM (Write/Erase Cycles: 100,000 EEPROM) hat? 
Um einfach mehr Strom zu verbrauchen? Oder wozu?
Wenn man jede Stunde einmal gleiche EEPROM-Adresse schreibt, wird 
100.000 Cycles in 11 Jahren 5 Monaten erreicht. Danach sollte man AVR 
ersetzen :)

Externe EEPROM hätte Sinn für STM32, da dort EEPROM nicht vorhanden ist 
- aber STM32 hat eigebaute Uhr-Einheit, dort braucht man Uhr-Modul auch 
nicht :)

: Bearbeitet durch User
von Weingut P. (weinbauer)


Lesenswert?

wozu das ganze EEPROM-geschreibsel? ... ist doch Quark an der Stelle 
weiter zu machen an der der Stromausfall war. Das ist dann die Nummer wo 
man morgens auf den Wecker schaut und sich nochmal umdreht weil ja noch 
"ewig Zeit" ist.

Die Uhr muss zumindest ne Weile ohne Mainpower laufen und gut ist.

3 Si-Dioden in Reihe von der +5V auf den "Bat", dazu noch n Widerstand 
zur Strombegrenzung und Batterie durch nen fetten Elko ersetzen und gut 
ist.

Und ja, ich hab das schonmal für n Projekt so gemacht und die Uhr läuft 
vom Elko locker ne Woche weiter.

Davon abgesehen, was das Multiplexing angeht ... in meinem Projekt hab 
ich ne 6x 16-Segment LED per Timer-Int laufen lassen, dazu den I²C per 
Interrupt, SPI (16-Bit ADC 15kHz) und UART (RS485 115kBaud), daneben 
noch n Timer für PWM (parasitäre 4-20mA galvanisch getrennt) ebenso, da 
flackert nichts und die Mainloop läuft auch noch flüssig.
Nutzt die Hardware wenn sie schon da ist, die Interrupts sind recht 
mächtig so sie richtig verwendet werden.

von H.Joachim S. (crazyhorse)


Lesenswert?

Es zeichnet sich ein Ende der schwachsinnigen Zeitumstellerei ab. Mich 
hat's nie wirklich gestört, einen Nutzen habe ich aber auch nie gesehen. 
Weg damit.

von Codix (Gast)


Lesenswert?

Rocco schrieb:
> Meine Überlegung ist das Multiplexing über einen Timer
> Interrupt zu machen.

Das macht nur so. Multiplexing ist eine klassiche Aufgabe für einen 
Timer Interrupt.
Alle Aufgaben die zyklische ablaufen sollen gehören in eine Interrupt
Routine.
Hier mal ein kleines Beispiel, wie man so etwas realisieren kann.
1
ISR(TIMER0_COMPA_vect) // drive the display from left to the right
2
{
3
    static uint8_t idx=0;
4
    
5
    DATA_PORT &= ~(DATA_BITS);      // Clear data line
6
    SEG_PORT  &= ~(SEG_BITS);      // off
7
    
8
    switch(idx){
9
      
10
    case 0:    DATA_PORT |= (disp_buf[idx] & 0x0f);
11
          SEG_PORT |= (1 << SEG_0);
12
          idx=1;
13
          break;
14
    case 1:    DATA_PORT |= (disp_buf[idx] & 0x0f);
15
          SEG_PORT |= ( 1 << SEG_1);
16
          idx=2;
17
          break;  
18
    case 2:    DATA_PORT |= (disp_buf[idx] & 0x0f);
19
          SEG_PORT |= (1 << SEG_2);
20
          idx=3;
21
          break;
22
    case 3:    DATA_PORT |= (disp_buf[idx] & 0x0f);
23
          SEG_PORT |= ( 1 << SEG_3);
24
          idx=4;
25
          break;
26
    case 4:    DATA_PORT |= (disp_buf[idx] & 0x0f);
27
          SEG_PORT |= ( 1 << SEG_L13);
28
          idx=5;
29
          break;
30
    case 5:    DATA_PORT |= 0x0f;
31
          SEG_PORT |= ((disp_buf[idx] & 0x0f) | ( 1 << SEG_DP)); // the last entry in disp_buf contains the bit field for the dp-location
32
          idx=0;
33
          break;
34
35
    }
36
  
37
}
Die 7-Segmentanzeigen werden in diesem Beispiel von einem BCD to 7-SEG 
Decoder angesteuert. In diesem Projekt waren die Ports alle belegt, 
daher der Decoder.

von Bastian W. (jackfrost)


Lesenswert?

Joachim B. schrieb:
> Roland L. schrieb:
> er meint, dass du die Uhr gar nicht umstellst. Die Uhr läuft immer mit
> MEZ. Wenn du den Wert ausgelesen hast, schaust du, ob Sommer oder Winter
> ist und zählst ggf. eine Stunde dazu.
>
> eben und das ist mir zu doof weil ich in jedem Programmcode wor ich die
> Uhr lese oder nur eine Uhren Variable lese den Code ändern müsste.
> D.h. doch nichts weiter als das ich bei jeder Abrage prüfen und rechnen
> muss in jedem fertigen Programmteil in jedem Programm.


Deswegen läuft bei mir die RTC in UTC. Der xMega holt die Zeit,
prüft dann ob MEZ oder MESZ und addiert dann eine oder zwei Stunden. Das 
ganze steht dann in einen struct tm und der Rest vom Programm sieht nur 
eine Uhrzeit.

So kann ich die RTC sehr einfach über den Unixtimestamp synchronisieren

Gruß JackFrost

von Peter D. (peda)


Lesenswert?

Joachim B. schrieb:
> Ich meine wer bitte lässt daheim immer alle Uhren auf MEZ und rechnet
> bei jedem Blick auf den Kalender und Uhr die Uhrzeit um?

Du bist ja auch kein MC.
Für den MC braucht es kürzer als ein Wimpernschlag, jede Sekunde die 
32Bit-Sekunden in Uhrzeit mit Sommerzeitkorrektur umzurechnen.
Ich habe daher gleich einen RTC-Chip genomen, der in 32Bit Sekunden 
ausgibt.
Das macht dann auch Weckzeitenvergleiche viel einfacher.

von Joachim B. (jar)


Lesenswert?

Bastian W. schrieb:
> Deswegen läuft bei mir die RTC in UTC.

Peter D. schrieb:
> Für den MC braucht es kürzer als ein Wimpernschlag,

ja ihr seit ja auch echte Programmierer, für mich ist das halt eine 
Hürde was ich schon erklärte, aber jeder wie er mag oder, soviel 
Toleranz sollte möglich sein.

Es ging auch an den TO, er kann sich die Lösung aussuchen die ihm 
gefällt, entweder er rechnet immer um oder er stellt manuell bei 
Wechsel.

von Manfred (Gast)


Lesenswert?

Stephan schrieb:
>> das bei meinen Ford von 2016 (mit RDS),

Meinen habe ich dieses Jahr bekommen, da gibt es einen Menüpunkt "Mit 
GPS synchronisieren" und die Zeitzone, aber keine Auswahl Sommerzeit.

> und jetzt stelle Dir vor die hätten das so gemacht und dieses Jahr wäre
> die Abschaffung der SZ nicht ebgelehnt worden.
> Dann hättest Du jetzt Edelschrott ! :-)))

Zumindest beim Fernseherchen kann ich im Menü wählen, ob die 
automatische Umschaltung erfolgen soll oder nicht. Beim SAT-Receiver muß 
ich manuell "Sommerzeit Ein" setzen. Vielleicht sollte man diese Punkte 
auch beim Selbstbau mit einbeziehen, wenn es ein Bedienmenü gibt.

Dirk schrieb:
> bis zur Veröffentlichung von Windows95 (1995) endete die SZ in D jeweils
> am letzten Sonntag im September, während in den folgenden Jahren
> (zuletzt überprüft: 2017) die Umstellung jeweils am letzten Sonntag im
> Oktober definiert war

Bei Windows musste / konne man das in der Registry anpassen. Meine 
Heizungssteuerung ärgert mich genau damit, schaltet im Herbst zu früh 
auf die echte MEZ zurück - da muß ich zweimal manuell eingreifen.

von Dirk (Gast)


Lesenswert?

Manfred schrieb:
> Dirk schrieb:
>> bis zur Veröffentlichung von Windows95 (1995) endete die SZ *in D jeweils*
>> am letzten Sonntag im September, während in den folgenden Jahren
>> (zuletzt überprüft: 2017) die Umstellung jeweils am letzten Sonntag im
>> Oktober definiert war
>
> Bei Windows musste / konne man das in der Registry anpassen.
Nein, das jeweilige Ende der SZ in D{eutschland} wurde und wird in einem 
Gesetz definiert das durch die Verwendung von Alt-bzw.Jura-deutsch mit 
ganzen Sätzen und traditionell definierten Bezugswörtern eine große 
Auswahl an Definitionsmöglichkeiten hat. Das Zeitumstellung mehrerer 
Windowsvarianten, das du vermutlich aus einer Variante(95) gefühlt hast, 
ließ sich durch die Wahl eines Regelsatzes verändern, das ging und geht 
auch über die Registry, aber Menschen durften und dürfen auch das 
dafür vorgesehene Programm benutzen. Dein man hat dich mit dem Zwang 
vermutlich einfach auf die Schippe genommen und wenn du Kontakt zu 
jemanden hast der Zugang zu einer realen Windows-Registry hat, dann 
kannst du schnell überprüfen, dass die Story mit der Anpassung ein Fake 
ist, da u.a. in der Registry kein Wert vom Typ Regel existiert.
Heutige junge Menschen wissen ja teilweise nicht einmal was eine 
Einstellung ist ("Was willst du damit sagen?") was zusammen mit der 
Unkenntnis über die Entstehung von geschriebenen Texten für die ältere 
Generation etwas befremdlich wirkt. Frühere Menschen hatten noch nicht 
die Probleme eigenständig die beiden Tasten (in der Foto-Uhr-Version 
wohl Antennen) zum eigenständigen einstellen von Uhrzeit Wochentag,Tag 
und Monat   zu gebrauchen und selbst das zurückstellen um 24 Stunden 
alle 4 Jahre anfang März, wenn der fehlende 29.2. der Uhr eine mittlere 
Gangungenauigkeit von 1min/Tag eingebracht hat, war möglich.
Die Generation Vollversorgung, die nur automatisch kennt, ist sicher mit 
dem Foto besser bedient.

Für deine zukünftige Heizung wäre wohl das Eprom-Modell sinnvoll, da 
nach 25.000 Stunden (ca. 3Jahre) dann eh ein Update notwendig ist und so 
externe Änderungen unkompliziert automatisch mit berücksichtigt werden 
können. Ansonsten stellt es für µC, bei vorher programmierten Regeln, 
auch keine so große Herausforderung dar falls mal eine neue Sekunde 
angezeigt werden soll die SZ/Zeitzone/Mondstand etc. mitzuberechnen und 
dann nur 99,6% statt 99,61% Schlafmodus zu verbringen.

> Meine
> Heizungssteuerung ärgert mich genau damit, schaltet im Herbst zu früh
> auf die echte MEZ zurück - da muß ich zweimal manuell eingreifen.
Das ist sicherlich dramatisch wenn die "echte" (wohl gesetzliche) MEZ 
solche Wärmefolgen hat, dass ein Zwang unvermeidbar ist. Manchmal kann 
ein Gespräch mit den Wärmenutzern helfen ob diese einen Monat eine um 
jeweils eine Stunde zu früh einsetzende Kälteperiode verkraften könnten, 
manchmal  ist so etwas grausames wie manuelles Eingreifen aber auch 
heutzutage unvermeidlich. Für die Generation automatische Uhr gibt es 
Dienstleister, die im einem solchen Notfall auch eine Einstellung 
erledigen können.

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.