Forum: Mikrocontroller und Digitale Elektronik DS1302 hour-Register


von Varadero (Gast)


Lesenswert?

Hallo,

ich schreibe mir gerade eine Lib für die DS1302-RTC und bekomme ums 
verrecken das hours-Register nicht richtig ausgelesen. Alles Andere 
funktioniert. Ich verwende die RTC im 24h-Modus und mir erschließt sich 
nicht, welche Wertigkeit Bit 5 hat. Ich habe schon mehrere Möglichkeiten 
ausprobiert und lese entweder immer nur 21 Uhr aus oder Werte >24. Im 
Datenblatt (Seite 6) steht: "In the 24-hour mode, bit 5 is the second 
10-hour bit (20–23 hours)". Warum genau "second 10-hour bit"? Im 
Datenblatt steht doch, dass im 24h-Modus nur Bit 5 die Wertigkeit 
10(dec) besitzt?!

Wär klasse, wenn jemand mir das erläutern könnte, welche 
Wertigkeiten(dec) die Bits 5 bis 0 haben.

Besten Dank!

von Markus F. (mfro)


Lesenswert?

Varadero schrieb:
> ... Ich verwende die RTC im 24h-Modus und mir erschließt sich
> nicht, welche Wertigkeit Bit 5 hat. Ich habe schon mehrere Möglichkeiten
> ausprobiert und lese entweder immer nur 21 Uhr aus oder Werte >24. Im
> Datenblatt (Seite 6) steht: "In the 24-hour mode, bit 5 is the second
> 10-hour bit (20–23 hours)". Warum genau "second 10-hour bit"? Im
> Datenblatt steht doch, dass im 24h-Modus nur Bit 5 die Wertigkeit
> 10(dec) besitzt?!
>
> Wär klasse, wenn jemand mir das erläutern könnte, welche
> Wertigkeiten(dec) die Bits 5 bis 0 haben.
>
> Besten Dank!

Das das BCD-Darstellung (binary coded decimal) ist, ist dir klar?

von Micha W. (blackxiiv)


Lesenswert?

Hiho,

Das Stunden-Register ist in 2 Nibble (Halfbytes) aufgeteilt.
Also Einerstellen Bit 3-0, Zehenstellen Bit 7-4.

Im 12h Modus braust du Bit 5 ja nicht, daher AM/PM
12 Uhr wäre dann b0001-0010 NICHT!!! b0000-1100
19 Uhr wäre dann b0011-1001 Die erste 1 ist nur der AM/PM Status ;)
10 Uhr wäre dann b0001-0000 NICHT!!! b0000-1010

Die verwenden jeweils 4 bit für Einer- und Zehnerstellen. Ich glaube BCD 
Code funktioniert genauso.

Im 24H-Modus wäre 23 Uhr dann b0010-0011
Weil 0010 = 2 und 0011 = 3

Für 12H-Modus brauchst du ja nur Bit 4 weil du nie über 19 kommst und da 
wird Bit 5 dann nur als Status benutzt.

Schau dir mal BCD-Zahle an, dann kommst du drauf ;)

Achja, erster Absatz zu:
CLOCK/CALENDAR
The time and calendar information is obtained by reading the appropriate 
register bytes. Table 3 illustrates the RTC registers. The time and 
calendar are set or initialized by writing the appropriate register 
bytes. The contents of the time and calendar registers are in the 
binary-coded decimal (BCD) format.

Gruß,
Michi (:

: Bearbeitet durch User
von Varadero (Gast)


Lesenswert?

Dankeschön für die tolle Erklärung!
Das mit der BCD-Codierung war mir bewusst, ich habe nur halt nicht die 
Aufteilung für das hour-Register kapiert. Der Rest läuft ja. Hatte auch 
noch obendrein eine falsche Adresse ausgerechnet. Jetzt kann ich 
schreiben aber die Werte stimmen noch nicht richtig. Heute komme ich da 
nicht mehr hinter, aber morgen wird's dann klappen.

Vielen Dank!

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.