twitest.c-EEPROM-24C512-Problem

OP #1387636
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.