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.
@ 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.
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
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
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 !
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.
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.
Für den Anfang würde es auch ein BCD to 7 Segment machen. Dann kommt er mit einem 8Bit Port aus.
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
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
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
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.
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.
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
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.
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.
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.
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
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.
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?
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.
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)
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.
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
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
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
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 :-)))
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.
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
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.
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.
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.
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
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...
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?
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.
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.
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! :)
> 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")
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
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.
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.
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.
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.