EEPROM 24C04 anbinden

OP Persönliche Seite #1724448
Lesenswert?

Hallo,
nun suche ich hier schon seit einiger Zeit nach einem Tutorial,
wie ich ein serielles EEPROM per I²C an einen µC anbinde.
Ich würde gerne C verwenden, und alles was ich gefunden
habe ist zum Thema PIC. Nun bin ich aber mit den AVRs vertrauter.
Gibt es irgendwo ein Tutorial, wie man die Dinger an einen µC 
anschließt?
Ich bräuchte auch erstmal eine Einführung in I²C, denn im Datenblatt des 
24C04, den ich verwenden möchte, stehen Dinge wie Device Select Code, 
und es gibt auch noch Pins mit denen sich dieser verändern lässt....
Ich würde mich freuen, wenn ihr mir helfen könntet!
Mit freundlichen Grüßen,
Valentin Buck
#1724456
Lesenswert?

Hallo  Valentin

Der Code hier ist zwar fuer einen MSP430 Prozessor und ein FM24CL04 Fram 
geschrieben aber leicht anzupassen auf deine Vorgaben.
Du must nur oben im Code die define Anweisungen fuer SDA und SCL aendern 
und nach dem schreiben 5mS warten oder das ACK Bit des EEPROMs abfragen 
und das wars auch schon.  Die Addresspins des EEPROMS muessen auf A0 = 1 
, A1 = 0, A2 = 0 stehen.

Gruss Helmi
Angehängte Dateien:
OP Persönliche Seite #1724519
Lesenswert?

Danke Helmi für den Code,
doch damit kann ich kaum etwas anfangen.
Mir fehlt einfach eine Einführung in I²C.
Das Problem mit den A-Pins ist ja jetzt gelöst, die stellen die Adresse 
dar.
Anscheinend werden Chips in I²C über so eine Adresse angesteuert und 
damit kann die dann einstellen, wenn man mehrere hat (oder?).
Könnte mir jemand ein Tutorial empfehlen?
Mit freundlichen Grüßen,
Valentin Buck
Gast #1724520
Lesenswert?

I2C stammt von Philips, jetzt NXP.
Nach Eingabe von "I2C specification" kommt bei Gugl als erstes und 
zweites:
www.nxp.com/documents/other/39340011.pdf
und
www.nxp.com/documents/user_manual/UM10204.pdf

Das sollte dich in I2C-Fragen weiterbringen.
#1724547
Lesenswert?

Valentin Buck schrieb:
> Anscheinend werden Chips in I²C über so eine Adresse angesteuert und
> damit kann die dann einstellen, wenn man mehrere hat (oder?).

So isses. In dem Fall von deinem EEPROM kann man jetzt 8 Stueck parallel 
schalten.

>Könnte mir jemand ein Tutorial empfehlen?

Wie HildeK schon sagte schau mal bei NXP rein. Das ist aber dann im 
grossen und ganzen der Code den ich dir gepostet habe.
Gast #1724555
Lesenswert?

Letztlich sollte auch ein Blick ins Datenblatt reichen, hier steht alles 
wissenswertes über I2C was du fürs Eeprom wissen musst.

Weiterhin solltest du für dich entscheiden, ob du die Atmel "hardware" 
TWI-Schnittstelle benutzt oder eine SW-I2c wie im obigen Msp430 
Beispiel.
Gast #1724577
Lesenswert?

TWI ist I2C => Atmel hat dem Kind nur einen anderen Namen gegeben !!!

TWI bedeutet, dass eine spezielle Elektronik im µC verbaut ist, welche 
sich um den Datentransfer bei I2C kümmert. D.h. du brauchst nur Daten in 
das Ausgangsregister legen und den Startknopf drücken. Danach läuft 
alles weitere automatisch ab. Der µC kann in der Zeit andere Aufgaben 
erledigen. Nach einer Übertragung kann die TWI-Unit ein Interrupt 
auslösen und du kannst ggf. weitere Daten nachlegen.

Bei SW-I2C musst du dich halt um alles (daten, takt und Acknolage) 
kümmern. Ist halt aufwendiger aber prinzipiell auf jedem µC möglich.
#1724959
Lesenswert?

Als Single-Master ziehe ich immer SW-I2C vor.
Es ist einfacher zu verstehen, kann sich durch Störimpulse nicht 
verklemmen und hat keine Bugs.
Auch von der Codegröße ist kaum ein Unterschied.
Es ist ohne großen Aufwand portabel und kann zwei beliebige IO-Pins 
benutzen.


HW-I2C hat nur den einen Vorteil, daß man es als Interrupt im 
Hintergrund laufen lassen könnte.


Peter
Gast #1725227
Lesenswert?

Falls die Bauteilauswahl noch flexibel ist:
EEPROMs der Typreihen  93C46 , 93C56 , ... 93C86  sind erheblich 
einfacher anzusteuern. Kapazitäten genannter Bauteile sind 1-16 kByte.
Da hat man getrennte Daten und Clock, sogar separate Data-In und 
Data-Out, wenn man möchte.
Der Nachteil ist, daß man 1-2 Steuerleitung mehr vom uC braucht, 
insgsamt 3 oder 4.
OP Persönliche Seite #1725523
Lesenswert?

Vielen Dank für eure Antworten!
Ich würde gerne den ATMEGA-8 verwenden,
und da sind die Pins PC5 und PC4 noch zu haben.
Ich denke, dass das Hardware-TWI auch den Vorteil hätte,
dass ich es einfacher verstehen würde.
Muss ich noch Imports tätigen?
In der avr-libc gibt es ja immerhin die <util/twi.h>...
Zu den verschiedenen Typen: Den 24C04 hätte ich hier,
deshalb würde ich den gerne benutzen.
Mit freundlichen Grüßen,
Valentin Buck

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren