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
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
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
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.
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.
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.
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
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.
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
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.