mikrocontroller.net

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


Autor: Karl-alfred Römer (karl-alfred_roemer)
Datum:

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

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.