Forum: Mikrocontroller und Digitale Elektronik PCF8583


von Marko (Gast)


Lesenswert?

Hallo Leute

Ich möchte gerne ein PCF8583 über den I2C-Bus steuern.
Die Adressierung und das Prinzip der Uhrzeit habe ich verstanden.

Das Problem was ich habe, ist das Datum.
Ich finde im Internet verschiedene Adressierung für das Datum.

Einmal wird mit den Bits 7 und 6 von der Adresse 0x05 das Jahr bestimmt, 
und bei einem anderen Beispiel wird das Jahr in die Adresse 0x08 
geschrieben.
In die Adresse 0x08 habe ich ein Jahr reingeschrieben (als hex 
selbstverständlich), aber wenn das Datum hochzählt verändert sich das 
Jahr nicht(31.12.01).

Ich weiss auch nicht mehr weiter.
Es gibt mir nicht um ein Source Code, ich will nur das Prinzip der 
Adressierung des PCF8583 für das Datum verstehen.

Kann jemand mir das vielleicht erklären.
Danke im Vorraus.

Gruss
Marko

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo Marko

Das Jahr wird in Speicherstelle 05 auf den Bits 6 und 7 gespeichert.

MFG
Dieter

von Marko (Gast)


Lesenswert?

Aber wie geht das ?
Wenn ich nur 2 Bits für das Jahr habe.
Wie kann ich dadurch z.B. das Jahr 99 oder 2004 angeben.
Denn wie du weißt kann man mit 2 Bits nur 4 Zustände darstellen.



MFG
Marko

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo Marko

Das sehe ich auch so. Werte sind nur von 0 bis 3 möglich. Man muß halt 
das Jahr selbst pflegen. Man hat nach Start des RTC halt max. 4 Jahre 
Zeit, dies zu tuen, dann kommt ja wieder ein Überlauf von 3 auf 0.

Ich würde das im Programm machen und das Jahr dann in den RTC 
zurückschreiben, z.B.: in Speicherstelle &H10. Die kann man ja frei 
verwenden die restlichen 240 Bytes.

MFG
Dieter

von Marko (Gast)


Lesenswert?

Vielen Dank
jetzt habe ich das Prinzip verstanden

MFG
Marko

von schleeper (Gast)


Lesenswert?

hi all

ich bin auch gerade dabei die RTC zu programmieren..leider blick ich 
nicht ganz durch :(...
und zwar weiss ich nicht, wie ich jetzt, wenn ich die adresse der uhr 
auf den I2C gelegt hab und das acknowledge bekommen habe, weiter 
verfahren soll....wie kann ich die speicherzellen in der Uhr 
adressieren???

thx im vorraus

von BernhardT (Gast)


Lesenswert?

Hallo Schleeper,
du musst vorher ein pseudo-write durchführen siehe Datenblatt Seite 17. 
Wobei die Wordadresse deine gewünschte Leseadresse bezeichnet (Bsp. 
H'02' Bzw. 0x02 steht für die Sekunden siehe S. 7).
Gruß Bernhard

von schleeper (Gast)


Lesenswert?

ahaaa...
muß ich dass vor jedem schreiben machen??also jedesmal bevor ich auf 
irgendeinen speicher der uhr zugreife?
wenn ich die uhr komplett neu einstellen möchte, reicht es dann aus, 
einmal die wordadresse zu senden??hab bisher ein paar beispiele zur 
programmierung gefunden, und da wird es anscheinend nur anfangs gesendet 
und dannach wird anscheinend der speicherplatz immer um 1 erhöht....hab 
des glaub ich noch immernich so ganz kapiert :)

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo

Ja es reicht, wenn du die Uhr komplett stellen willst, nur einmal am 
Anfang die Adresse zu schreiben. Nach jedem Schreib oder auch 
Lesezugriff, erhöht sich der Adresszähler im Chip automatisch um 1.

MFG
Dieter

von schleeper (Gast)


Angehängte Dateien:

Lesenswert?

hi

ahhh ok also dann ahb ichs doch richtig verstanden....als anhang schick 
ich ma an kleinen auszug aus meinem prog mit..könntest du mir sagen, ob 
das so funktioniert??hab momentan leider nciht die nmöglichkeit es 
direkt auf der platine tu testen....

thx im vorraus

von Dieter Brüggemann (Gast)


Lesenswert?

Hallo

Wenn LCALL   ERR_I2C deine Abfrage auf das Ackn. ist, dann bedenke, daß 
nach einer Startbedingung kein Ackn. kommt.

Außerdem ist Adresse 00 das Control Register.
Sekunden kommen erst auf Adresse 02. Die Adresse wird erst nach dem 
schreiben des Datenbytes erhöht. Datenblatt Seite 16

Geht so also meiner Meinung nach nicht.

MFG
Dieter

von schleeper (Gast)


Lesenswert?

ok funtzt nu :)....zumindest des einstellen....nur beim auslesen gibts 
noch probs....geht das genausom wie schreiben??nur eben anderes R/W 
signal??

von BernhardT (Gast)


Lesenswert?

Schlepper,
nein, du fängst an wie beim schreiben (auch R/W = 0) anstelle der zu 
schreibenden Daten ein repead-start und noch mal die Slaveadresse (und 
hier erst R/W =1). Nach dem Daten einlesen muss der Master das akn 
senden wenn er weitere Daten lesen will, oder no-akn wenn nicht. Gibt es 
einfach Bildchen zu im Datenblatt ! (Seite 17.)
Gruß Bernhard

von schleeper (Gast)


Lesenswert?

aso ja ok....so hab ichs bisher ja programmiert...bin gerade nur 
ziemlich müde da ich bis 9 uhr dran gearbeitet hab und nich viel zeit 
zum schlafen hatte :)

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.