Forum: Compiler & IDEs PCF8583 am AVR Mega 32


von Gurke (Gast)


Lesenswert?

Hallo,
ich möchte über das IC mit I2C eine Uhrzeit lesen / schreiben. Ich weiss 
aber nicht, wie ich den Slave parametrieren und auslesen kann. Ich habe 
einen AVR 32 Mega und arbeite mit Programmer's Notepad. Die Hardware 
habe ich erstellt (www.fernando-heitor.de), nur mit der Adressierung 
habe ich Probleme.
Schonmal danke

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ziemlich allgemein gehalten, deine Frage.  Ohne genaue Beschreibung,
was bei dir denn nicht so recht klappt, wirst du kaum vernünftige
Hilfe bekommen.

Ich habe mal mit einem PCF8583 experimentiert, das Ergebnis hab' ich
aber nicht mehr.  Im Prinzip wird das Teil aber genauso wie ein
I²C-EEPROM angesprochen, und für den hast du bei der avr-libc ja das
twidemo dabei.  In der Tat habe ich damals die dort vorhandenen
Routinen benutzt, nur das main() war anders.

von Gurke (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe das Programm angehangen. Die Leseadresse sollte laut Vorgabe 
0xA1 sein, die Schreibadresse 0xA0. Als Rückgabewert bekomme ich aber 
beim i2c_start(Devclockwrite+I2C_WRITE) eine "1" zurück, also erreiche 
ich den Teilnehmer nicht.
Ich habe SCA und SCL mit je 2,7KOhm Pull-up Widerständen versehen.
Schonmal danke

von Gurke (Gast)


Lesenswert?

... oder kann das mit 7 oder 8-Bit-Adressierung zusammenhängen ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gurke wrote:

> ... oder kann das mit 7 oder 8-Bit-Adressierung zusammenhängen ?

Nein, I²C wird immer mit 7 Bits adressiert, weil Bit 0 zwischen
lesen und schreiben umschaltet.

von Gurke (Gast)


Lesenswert?

Hallo,
das Schreiben klappt jetzt mit Adresse 0xA0
(i2c_start(0xA0+I2C_WRITE);)
über die angegebene Leseadresse 0xA1 erreiche ich den Teilnehmer nicht.
(i2c_start(Devclockread+I2C_READ);)
woran könnte das liegen ?

von Gurke (Gast)


Lesenswert?

Wo finde ich denn twidemo ???
Schonmal vielen dank

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Wo finde ich denn twidemo ?

In der avr-libc-Doku.  Online z. B. hier:

http://www.nongnu.org/avr-libc/user-manual/group__twi__demo.html

Wenn du ein WinAVR hast, müsste es aber auch auf deiner Platte sein.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gurke wrote:

> über die angegebene Leseadresse 0xA1 erreiche ich den Teilnehmer nicht.
> (i2c_start(Devclockread+I2C_READ);)
> woran könnte das liegen ?

Daran, dass du Devclockread bereits zu 0xA1 definiert hast und dass du
I2C_READ nicht etwa einfach noch ver-oderst (|) sondern addierst (+)?

Du solltest dich wohl für eine von beiden Varianten entscheiden: das
R/¬W-Bit entweder mit ins #define nehmen oder separat hinzufügen (und
dann bitte mit "|").

von Gurke (Gast)


Lesenswert?

Alles klar, kaum machst man es richtig, schon funktioniert's.
Vielen Dank, echt super.

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.