Detailfrage RTC DS3231

OP #7305758
Lesenswert?

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

Gast #7305763
Lesenswert?

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.

Gast #7305764
Lesenswert?

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)."

OP #7305782
Lesenswert?

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

#7305837
Lesenswert?

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).

Gast #7305844
Lesenswert?

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.

OP #7305849
Lesenswert?

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...

OP #7305957
Lesenswert?

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

Gast #7305973
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren