www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM 24C04 anbinden


Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

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

Autor: Helmut Lenzen (helmi1)
Datum:
Angehängte Dateien:

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

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

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

Autor: HildeK (Gast)
Datum:

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

Autor: Helmut Lenzen (helmi1)
Datum:

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

Autor: visitor (Gast)
Datum:

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

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also erstmal DANKE für eure Antworten.
Das I²C-Tutorial von NXP habe ich gelesen.
Dadurch ist mir schon viel klar geworden!
Ist I²C gleich TWI?
Und was wäre der Unterschied zwischen Software-I²C und Hardware I²C?
Mit freundlichen Grüßen,
Valentin Buck

Autor: visitor (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> 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.

Genau aus dem Grund ziehe ich auch SW-I2C vor.

Gruss Helmi

Autor: Erich (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erich schrieb:
> EEPROMs der Typreihen  93C46 , 93C56 , ... 93C86  sind erheblich
> einfacher anzusteuern.

Das ist rein subjektiv, "erheblich" ist der Unterschied aber 
keinesfalls.

Die 93Cxx sind mir außerdem zu schwachbrüstig, die 24Cxx gehen dagegen 
bis 128kByte.


Peter

Autor: Valentin Buck (nitnelav) Benutzerseite
Datum:

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

Autor: gust (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.