Hi, kleine Frage, betreibe hier gerade das o.g. Uhrenmodul. Läuft alles, nun bin ich beim Wochentag, wollte ich doch noch mit rein nehmen in die Ausgabe. Der steht aber auf 1, egal welches Datum ich dort eingebe. Wir der nicht von dem Modul berechnet und nur hoch gezählt? Fände ich unlogisch, da das Modul ja auch Schaltjahre berücksichtigt... die RTC soll doch genau diese Arbeit abnehmen...oder? Dazu gehört für mich auch die automatische Berechnung des Wochentages... Danke. MFG
Dieses Modul habe ich auch gerade auf dem Tisch liegen... Und ja, der Wochentag muss man manuell eingeben! Gruss Chregu
M. schrieb: > Der steht aber auf 1, egal welches Datum ich dort eingebe. Wir der nicht > von dem Modul berechnet und nur hoch gezählt? Nur hochgezählt. > Fände ich unlogisch, da das Modul ja auch Schaltjahre berücksichtigt... > die RTC soll doch genau diese Arbeit abnehmen...oder? Ist ja auch mit ein paar wenigen Gattern erledigt. > Dazu gehört für mich auch die automatische Berechnung des Wochentages... Darfst du ja machen, in dem angeschlossenen µC.
Steht auch im Datenblatt auf Seite 12: "The day-of-week register increments at midnight. Values that correspond to the day of week are user-defined but must be sequential (i.e., if 1 equals Sunday, then 2 equals Monday, and so on)."
danke, na dann muss ich wohl mein Menü noch etwas erweitern, tja. Seltsam, wie ich finde. H. H. schrieb: > Ist ja auch mit ein paar wenigen Gattern erledigt. Ist das so? Gibt ja diverse "Formeln" usw... Aber den "Trick" mit ein "paar" Gattern würde ich natürlich gern kennen. Dann implementiere ich das noch eben und kann mir den Menüpunkt zum Einstellen sparen... Danke. VG
M. schrieb: > Aber den "Trick" mit ein "paar" Gattern würde ich natürlich gern kennen. Ist doch kein Problem zu prüfen ob eine Zahl durch vier teilbar ist. Und selbst die im DS3231 nicht implementierten Regeln alle 100 bzw 400 Jahre wären ganz einfach.
Das RTC-Modul beinhaltet natürlich auch den Wochentag. Der muss noch in Klartext umgeschlüsselt werden, z.B. wie hier: https://wolles-elektronikkiste.de/ds3231-echtzeituhr
H. H. schrieb: > M. schrieb: >> Aber den "Trick" mit ein "paar" Gattern würde ich natürlich gern kennen. > > Ist doch kein Problem zu prüfen ob eine Zahl durch vier teilbar ist. > > Und selbst die im DS3231 nicht implementierten Regeln alle 100 bzw 400 > Jahre wären ganz einfach. Es geht hier um den Wochentag nicht um das Schaltjahr.
H. H. schrieb: > M. schrieb: >> Es geht hier um den Wochentag nicht um das Schaltjahr. > > Lies einfach nochmal. Du! Gruss Chregu
Christian M. schrieb: > H. H. schrieb: >> M. schrieb: >>> Es geht hier um den Wochentag nicht um das Schaltjahr. >> >> Lies einfach nochmal. > > Du! Um zu wissen, ob bspw der 70te Tag des Jahres ein Montag ist, musst du nicht nur wissen welcher Wochentag der erste des Jahres war, sondern auch ob Schaltjahr ist, damit der Montag dann entweder der 5.3 oder nur der 4.3 ist. (Daten nur grob geraten, bin grad zu kränklich zum rechnen, aber am Prinzip ändert sich nichts).
H. H. schrieb: > Lies einfach nochmal. Wie gesagt, es geht um den Wochentag, das SJ macht das Modul, steht dort ja auch geschrieben. Wie dem auch sei. Die Wochentagsberechnung habe ich schon mal selbst in c geschrieben, heute kann man das aber sicher an jeder Ecke runterladen... dann gehe ich mal suchen...
https://wiki.freitagsrunde.org/C-Kurs/Wochentag/Musterl%C3%B6sung sieht irgendwie scheiße aus :-) Ich schaue mich hier: Beitrag "Aus Datum Wochentag Kalenderwoche berechnen Wochentagsberechnung in C Code" mal um
:
Bearbeitet durch User
Ich bin der Meinung, daß der RTC-Wochentagszähler nur regelmäßig blind von 1-7 zählen muß. Da spielen Schaltjahre und das Datum keine Rolle. Montag folgt Sonntag, das ändert sich nie. Also kann der RTC-Wochentagszähler lustig ohne sich um Anderen zu kümmern, immer brav vor sich hinzählen.
Christian M. schrieb: > H. H. schrieb: >> M. schrieb: >>> Es geht hier um den Wochentag nicht um das Schaltjahr. >> >> Lies einfach nochmal. > > Du! M. schrieb: > Fände ich unlogisch, da das Modul ja auch Schaltjahre berücksichtigt...
H. Eggert schrieb: > RTC-Wochentagszähler lustig ohne sich um Anderen zu kümmern, immer brav > vor sich hinzählen. Ich stehe vor der Wahl ob ich einen Menüpunkt öffne um ihn stellen zu können oder ob er berechnet wird. Momentan scheint mir die Berechnung einfacher: int dayofweek(uint8_t day, uint8_t month, uint16_t year) { /** Zeller's congruence for the Gregorian calendar. **/ /** With 0=Monday, ... 5=Saturday, 6=Sunday **/ if (month < 3) { month += 12; year--; } return ((13*month+3)/5 + day + year + year/4 - year/100 + year/400) % 7; } fertig, eine Zeile Code...
Nachtrag: Es bleibt jeden selber vorbehalten an welchem Wochentag der Zähler sich richten soll. Bei mir ist halt Montag, Wochentag Nr. 1.
Hallo, woher die Probleme, warum nicht übers kompilieren. _DATE__ und __TIME_ (mit Doppelunterstrich), Software gibt es genug.
H. Eggert schrieb: > Bei mir ist halt Montag, Wochentag Nr. 1. So ist das ja auch normativ geregelt, in den meisten Ländern der Welt.
Den musst Du ja wirklich nur ein einziges Mal eingeben, da lohnt sich ein Menupunkt nicht, auch für Zeit und Datum. Habe heute einen Parser geschrieben, der aus einem String der seriellen Schnittstelle die Uhr stellt... Gruss Chregu
finde ich unlogisch dass das Ding das nicht macht. Das möchte ich aber. Egal, nun ist es eingebaut, wird anscheinend richtig berechnet, habe zwei weitere Daten getestet, stimmt. Nun mal beobachten... NERV
verunsichert mich ganz leicht dass der Rückgabewert des DOW Algorithmus oben ein int ist... Negative Wochentage? hmmm... naja, wird schon passen, habe da ein uint8_t draus gemacht... ach ja, und am ende eins drauf gerechnet damit es für die dumme RTC auch passt... Nun gibt man das Datum nach wie vor ein, der uc berechnet den DOW und schiebt ihn nach in die RTC...läuft Bei Modulo 7 +1 kommt auf jeden Fall immer was zwischen 1 und 7 raus, kann man sich die Zeilen zum prüfen auch sparen...praktisch
:
Bearbeitet durch User
Bei mir stelle ich den Wochentag einmal beim Stellen ein. Mit Terminal sende ich das Stellkommando: @hhmmssyymmddw<CRLF> , z.B. @2327302301043<CRLF>, "3" ist für Mittwoch Nach dem ersten Mal stellen kann man z.B. die Zeit mit einem Teilkommando stellen: @hhmmss<CRLF>, das Datum und Wochentag wird dann nicht beeinflußt. Man braucht nur so weit eingeben wie man will. Funktioniert gut genug für mich und erspart die Berechnungen. Solange die RTC BU Zelle nicht kaputt geht, läuft DOW für immer richtig. Mache das schon seit Jahrzehnten so. DOW ist ohnehin für mich nicht wichtig. Abgesehen davon, ist mir das UNIX Datetime Konzept lieber. Beim STM32F103 z.B. ist die RTC ohnehin ein 32-bit Zähler; finde ich viel bequemer.
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.