Forum: Compiler & IDEs serielles EEPROM


von Izoard (Gast)


Lesenswert?

Ich möchte mit einem seriellen EEPROM (24C16) kommunizieren. Soll ich
das Programm besser in C oder Assembler schreibe...

Hat jemand ein code-Beispiel?

von Izoard (Gast)


Lesenswert?

hmm, werde es in Assembler schreiben...

habe Code gefunden:
http://www.mikrocontroller.net/forum/read-1-32030.html


???? Beim EEPROM M24C16 schreiben sie im Datenblatt Seite 2, und 5
(table 3), dass E0-E2 not connected sind! Heisst denn die Slave Adresse
nur 1010000b ??? Kann man dann nur 1 M24C16 an den I2C Bus
anschliessen?`
THANKS

IZOARDS

von Michael (Gast)


Lesenswert?

Ob die Adressleitungen beachtet werden oder (leider) auch nicht hängt
vom Hersteller ab: Datenblatt.

Nach meiner Erfahrung werden die Adressen bei STM, Atmel und Rohm
beachtet. Nicht jedoch bei Infineon und Mircochip.

von Izoard (Gast)


Angehängte Dateien:

Lesenswert?

Was heisst, wenn sie nicht beachtet werden? Bedeutet das wirklich, dass
man nicht mehr als 1 EEPROM anschliessen kann! Hat dann dieses EEPROM
die Adresse 1010000b?

Danke

von Michael (Gast)


Lesenswert?

Korrektur: meine Angaben beziehen sich auf die Typen ..02/04/08. Beim
24C16 geht immer nur ein Baustein auf Adresse 1010xxxy (binär).
Dabei werden die 'x'-Bits zur Adressierung der Seite und das folgende
Byte zur Adressierung innerhalb der Seite verwendet: 8 x 256 Byte =
2KB. Die größeren EEPROMs verwenden neben der Basisadresse 0hAx zwei
weitere Bytes als Adresse. Dafür braucht man angepaßte IIC-Routinen.

von Berndt Brandes (Gast)


Lesenswert?

Stimmt leider, gerade bei diesen 24cxx EEPROMS muß man aufpassen (genau
das Datenblatt von dem nehmen den man hat). Erst wenn sie größer als 2k
Byte sind, geht's wieder besser (dann kommt intern eine 2-Byte
Adresse, die hält dann bis 64k Byte oder 24C512). Die meisten
Hersteller haben eben nur an 8 Pages zu je 256 Byte gedacht. Die
Aufteilung der Pages in Devices war denen dabei egal. z.B. gehen in der
Regel auch nur 2 Stück zu je 1k Byte.
Find ich auch schade.

/Berndt

von Jörg Wunsch (Gast)


Lesenswert?

Achso, 24Cxx sind ja I²C.  Falls Du Hardware-TWI in Deinem AVR
hast (Du hast nicht geschrieben, was für einen Du nimmst), dann
hat die avr-libc Doku (die auch mit dem WinAVR Deiner Wahl mit auf
Deiner Platte installiert wird) Beispielcode für ebendiese
EEPROMs.

von Izoard (Gast)


Lesenswert?

Vielen Dank für die Antworten!!! Ich werde den At2313 einsetzen!


Wieso muss eigentlich die SCL Leitung mit einem Pull-Up Widerstand
verbunden werden?

http://www.sprut.de/electronic/pic/grund/i2c.htm



Ich dachte die SCL Leitung wird nur vom Master (uC) gesteuert?

von Berndt Brandes (Gast)


Lesenswert?

Nein, SCL wird nicht nur vom Master gesteuert! Ein Slave darf diese
Leitung auf L halten, wenn er Zeit braucht. Der Master wird also für
eine steigende Taktflanke seinen Ausgangstransistor abschalten (er will
H machen) und erst wenn auch der letzte Slave fertig ist und er seinen
auch abschaltet, kommt die Flanke. Der Master muß also seinen Takt
rücklesen!

Soll jetzt nicht etwa bedeuten, das das immer passiert. Die wenigsten
mir bekannten Bausteine tun das, aber wenn ein Slave aus einem
Mikrocontroller besteht und also evtl. Bearbeitungszeit für einen Takt
braucht, kann er sich die auf diese Weise nehmen.

in der Regel gilt für IIC: die mindest H-Zeit wird vom Master (der darf
nämlich erst ab der tatsächlichen Flanke zählen), die max L-Zeit vom
langsamsten Slave bestimmt.

/Berndt

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.