Forum: Mikrocontroller und Digitale Elektronik twitest.c-EEPROM-24C512-Problem


von Karl-alfred R. (karl-alfred_roemer)


Lesenswert?

Hallo,

ich spiele gerade mit einem Atmel 24C512 BN6-EEPROM am Atmega8
herum. Habe mir dafür das Beispiel twitest.c heruntergeladen
http://savannah.nongnu.org/file/twitest.c?file_id=13910
F_CPU auf 1000000UL umgestellt und auf den Mega8 geflashed.

Hardwaremäßig habe ich mit einem 10-Poligen Steckpfostenstecker
an PortC des STK500 den 24C512 über einen Stecksockel verbunden.
Versorgungsspannung, Datenleitungen angeschlossen und die A0-A2
auf GND gelötet. Das Write-Protect-Pin habe ich offen gelassen.
Die Datenleitungen habe ich mit 2K2-Widerständen an Versorgungs
spannung (4,95V aus dem STK500) gelegt.Müsste eigentlich hardware-
mäßig alles stimmen.

Dennoch ist die Programmausgabe in HTerm nur "0000:"
Ich vermute, ich habe etwas mit den TWI-Adressen falsch gemacht.
Im Programm befindet sich folgender Kommentar zu den TWI-Adressen:

/*
 * TWI address for 24Cxx EEPROM:
 *
 * 1 0 1 0 E2  E1 E0 R/~W  24C01/24C02
 * 1 0 1 0 E2  E1 A8 R/~W  24C04
 * 1 0 1 0 E2  A9 A8 R/~W  24C08
 * 1 0 1 0 A10 A9 A8 R/~W  24C16
*/

Ich habe es so verstanden, dass die ersten vier Bits das
Gerät (1010 also schon mal irgend was mit 24CXX) identifizieren.
Es ist also schon mal kein Temperatursensor oder Beschleunigung-
ssensor.

Die Ax-Bits werden benötigt, falls mehrere Geräte der gleichen
Art angeschlossen werden. Man könnte z.B. acht 24C16 anschließen.
Was die E0 bis E2 sollen, habe ich noch NICHT verstanden.
Das letzte Bit dient dazu, dem Gerät anzuzeigen, ob man
schreiben oder lesen will.

Noch zwei Fragen:
1. Zunächst mal ist man auf die Gerätezahl von 128 geschränkt,
weil man ja nur 7 Bit zur Identifizierung hat. Damit könnte
man ja noch leben. (Obwohl: Es sind sicher Fälle denkbar, wo
diese Anzahl nicht reicht, für uns hier aber eher nicht)

2. Bei bestimmten Kombinationen von Geräten könnte es zu
Uneindeutigkeiten kommen:

Z.B. wenn ich einen 24C16 mit Bit1 bis Bit3 = 0 , dann wäre die 
TWI-Adresse 1010000x. Das ist aber auch die gleiche
Adresse, wie wenn ich meinen 24C512 zum Adresse Bit1 bis Bit3 = 0
anschließe.(Das Bit4 ist, falls ich das Datenblatt Seite 10 richtig
verstanden habe eh immer 0 bei diesem Baustein, weil die Device-
Address des 24C512 immer den Aufbau 1 0 1 0 0 Bit2 Bit1 R/W hat.

Falls ich die Device-Adressierung irgendwie falsch verstanden habe,
wäre es nett, wenn mir das jemand mal richtig erklären könnte.

Danke schon mal im Voraus
und viele Grüße
Karl

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.