www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PCF8583


Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marko

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

MFG
Dieter

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank
jetzt habe ich das Prinzip verstanden

MFG
Marko

Autor: schleeper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: BernhardT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: schleeper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: schleeper (Gast)
Datum:
Angehängte Dateien:
  • RTC.txt (740 Bytes, 249 Downloads)

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: schleeper (Gast)
Datum:

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

Autor: BernhardT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: schleeper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.