Forum: Mikrocontroller und Digitale Elektronik PCF8583 (RTC) Sekunden bis 89?


von Dennis B. (Firma: Home) (deboman)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe heute meinen PCF8583 in Betrieb genommen. Die Kommunikation 
über das I2C-Interface (Fleury-lib) funktioniert. Allerdings wollte ich 
die Sekunden auslesen und mir ist aufgefallen, dass er irgendwie bis 
"89" zählt.
Im Folgenden findet ihr den dafür verantwortlichen C-Code.
1
  unsigned char ret;
2
  
3
  while(1)
4
  {
5
    
6
    i2c_start_wait(PCF8583+I2C_WRITE);
7
    i2c_write(0x02);
8
    i2c_start_wait(PCF8583+I2C_READ);    
9
    ret = i2c_readNak();
10
    i2c_stop();
11
    
12
  }

Ich habe noch ein Screenshot vom AVRStudio angefügt. Während des 
Debuggen ist mir aber aufgefallen, dass er einerseits bis "89" zählt und 
wenn ich mir die Zahl in Hex anschaue A-F überspringt.

Hat vielleicht jemand einen Tipp? Irgendwie bin ich ein bisschen ratlos.

von MWS (Gast)


Lesenswert?

Dennis B. schrieb:
> dass er einerseits bis "89" zählt

89 wär' ein wenig ungewöhnlich.

> wenn ich mir die Zahl in Hex anschaue A-F überspringt.

Dir ist bekannt was BCD ist ?

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Der Zählt ned bis 89.
Bit [7:4] sind die Zehnersekunden in BCD
Bit [7:4] sind Einersekunden in BCD.

Und jetz machs DB auf, da stehts genau drin wie die Register bestückt 
sind oder nimm gleich das hier:
http://fritzler-avr.de/HP/Librarys/PCF8583_his.php
Hab auch gleich die Registertrennungen als Bild drinne.

von Willi (Gast)


Lesenswert?

Dennis B. schrieb:
> Allerdings wollte ich
> die Sekunden auslesen und mir ist aufgefallen, dass er irgendwie bis
> "89" zählt.

In der Tat, aber er schafft das in 59 Sekunden :-)

von Jobst M. (jobstens-de)


Lesenswert?

Dennis B. schrieb:
> wenn ich mir die Zahl in Hex anschaue

... siehst Du die Sekunden ... nicht aufgefallen?

:-D


Gruß

Jobst

von Dennis B. (Firma: Home) (deboman)


Lesenswert?

Danke für eure Antworten. Das Datenblatt habe ich mir natürlich 
durchgeschaut. Allerdings habe ich keinen Wink gefunden, der mein 
Problem erklären könnte.

Wie ich dem Datenblatt entnehmen kann, sind die Sekunden folgendermaßen 
aufgeteilt, wie Martin es beschrieben hat:
Bit [7:4] Zehner
Bit [3:0] Einer

Ja aber wie soll ich mir denn jetzt die Werte 60-89 erklären? Am 
Controlregister habe ich nicht geändert. Dieses ist noch jungfreulich. 
OSC ist extern angeschlossen etc.

z.B: 89 --> 1000 (8) und 1001 (9). Das ist mir schon bewusst. Das ist 
doch schon mein Sekundenwert oder vertue ich mich?

Vielleicht habe ich irgendwo einen doofen Denkfehler oder sehe den Wald 
vor lauter Bäumen nicht mehr.

von (prx) A. K. (prx)


Lesenswert?

Dennis B. schrieb:
> z.B: 89 --> 1000 (8) und 1001 (9). Das ist mir schon bewusst.

Mitnichten. Der Debugger zeigt den Wert dezimal an.
Dezimal 89 = Hex 59 = BCD Ziffern 5 und 9.

von Dennis B. (Firma: Home) (deboman)


Lesenswert?

Um Gotte Willen...so einfach? Danke!
Ich glaube ich hätte hier noch Stunden sitzen können und hätte es nicht 
gesehen.

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.