Vielen Dank für deine Antwort Robert!
Auf die Uhrenregister wird im Normalfall ca. alle 7ms zugegriffen;
sprich gelesen. Wenn besondere Ereignissen eintreten auch öfter.
Mit folgender Routine wird ca. alle 7ms auf die Uhr zugegriffen und
auf LCD ausgegeben.
sprintf(LCD_Puffer," %02d.%02d.%02d ",RTC_DOM,RTC_MONTH,RTC_YEAR);
switch (RTC_DOW){
case 0: LCD_Puffer[0] = 'S'; LCD_Puffer[1] = 'o'; break;
case 1: LCD_Puffer[0] = 'M'; LCD_Puffer[1] = 'o'; break;
case 2: LCD_Puffer[0] = 'D'; LCD_Puffer[1] = 'i'; break;
case 3: LCD_Puffer[0] = 'M'; LCD_Puffer[1] = 'i'; break;
case 4: LCD_Puffer[0] = 'D'; LCD_Puffer[1] = 'o'; break;
case 5: LCD_Puffer[0] = 'F'; LCD_Puffer[1] = 'r'; break;
case 6: LCD_Puffer[0] = 'S'; LCD_Puffer[1] = 'a'; break;
default:{LCD_Puffer[0] = 'E'; LCD_Puffer[1] = 'R';}break;
}
sprintf(&LCD_Puffer[13],"%02d:%02d:%02d",RTC_HOUR,RTC_MIN,RTC_SEC);
Was meinst du mit HW-SW konflikt? Etwa wenn die HW den Registerwert
ändert,
und ich in diesem Moment die Register auslese? Wenn das so wäre, wie
soll ich der Uhr jeweils trauen, ob sie gerade richtig ist?
Ob der Wert nur vorübergehend auf 0 ist, weiß ich nicht, da ich nicht
einen
ganzen Monat abgewartet habe bis sich der Wert ändert. Für einige
Minuten, Stunden blieb sie jedenfalls auf 0 (solange ich sie nicht
wieder manuell
richtig gesetzt habe).
Hab im Datenblatt gelesen, dass es noch weitere Register gibt in denen
die
Uhr dargestellt ist. Es sind (32bit)Register die z.B. Sekunden, Minuten,
Stunden auf einmal beinhalten. Sollten diese Register zum Aulesen
verwendet werden?
Oder sollte man die Uhreregister nur 1-2mal die Sekunde auslesen; sie in
Variablen legen, und mit diesen Variablen (bis zur nächsten
Uhrenregister Auslesung) arbeiten?
Viele Grüße
Markus