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
Hallo Marko Das Jahr wird in Speicherstelle 05 auf den Bits 6 und 7 gespeichert. MFG Dieter
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
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
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
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
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 :)
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
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
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
ok funtzt nu :)....zumindest des einstellen....nur beim auslesen gibts noch probs....geht das genausom wie schreiben??nur eben anderes R/W signal??
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.