Hallo wer kann mir helfen? ich will an nen ATmega16 per Software I2C nen externen Speicher (AT24C64) anschließen. Ich hab des jetzt auch schon gelötet und wollte fragen ob schon irgendjemand nen fertigen C-code hat mit dem ich den Speicher ansteuern kann. Ich will dort einfach Daten speichern und später wieder abrufen. Danke im Vorraus Subbl
hmm, ich würde mal die seite www.google.de ansehen!!! ;-) da gibt es meine ich mind. 1 mio anbindungen zwischen nen atmel und nem 24c64!!! hast du auch die adress-pins richtig verbunden? nicht einfach nur vcc,gnd,sda,scl verbunden? ^^ ist halt ein allewelts bausstein! btw: ich mach in ein paar min das selbe, nur mit einem anderem uc
Genau das ist mein Problem, dass man bei google 1Mio Anbindungen gibt. Mir reicht nämlich eine!
patsch, da ist sie wieder, die hand an der strin... dann nehm doch irgend eine! ansonsten... ... erst einmal i2c zum laufen bekommen und dann das datenblatt lesen! ... daraus dann adressen, comandos,.. ermitteln. ... und dann noch testen ;-) so, jetzt such ich mir erstmal das datenblatt.
ok, erster blick ins datenblatt: byteweise schreiben: adressierung des bausteins: --------------------------- readaddr: 10100001 writeaddr: 10100000 adressierung des speichers: --------------------------- highbyte: 000xxxxx lowbyte: xxxxxxxx daten zum schreiben: -------------------- data: xxxxxxxx also sieht ein schreiben so aus, das du 1. write adresse übermitteln. 2. adressing high byte senden. 3. adressing low byte senden. 4. datenbyte senden und so das lesen 1. read adresse übermitteln. 2. adressing high byte senden. 3. adressing low byte senden. 4. datenbyte lesen
Danke Aber kannst du mir das in C-Code geben, weil ich bin noch nich so fit mit µC! Subbl
um i2c must du dich selber kümmern! ( ich hab keine ahnung von atmel!) das habe ich jetzt gerade in 2 min geschrieben!! es solte reichen um äußerst primitiv auf den 24c64 zuzugreifen! es ist jedoch noch nicht getestet! für verbesserungsvorschläge bin ich offen!
@ Subb1 Schreib mir eine mail und du bekommst kommentierten Code samt Beschreibung für avr-gcc. Alex
ok, er geht nicht! ich muß jetzt erst mal suchen, ob bei meinen adressen & co was falsch ist.
@Alex: Dein Code ist so wertvoll, daß Du ihn nicht jedem zur Verfügung stellen willst? Dann mach Dich mal drauf gefasst, daß Du auch in Monaten noch ständig Mails bekommst, mit Leuten die ein ähnliches Problem haben.
Hallo zusammen, hier ein einfaches Byte-Les/Schreib-Beispiel, quick and dirty, aus einem alten Projekt. Nutzt die Software-I2C-Lib von Peter Fleury. Gruß, Dirk #define device0 0xA6 #define device1 0xA2 void eeprom_WriteByte (unsigned int device, unsigned long address, unsigned char data) { i2c_start_wait(device+I2C_WRITE); i2c_write((address >> 8 )); i2c_write(address); i2c_write(data); i2c_stop(); } unsigned char eeprom_ReadByte (unsigned int device, unsigned long address) { unsigned char temp; i2c_start_wait(device+I2C_WRITE); i2c_write((address >> 8)); i2c_write(address); i2c_rep_start(device+I2C_READ); temp = i2c_readNak(); i2c_stop(); return temp; }
So ist es nicht, im Rahmen meines nächsten Homepage-Updates werde ich ihn dort veröffentlichen. Der Upload gestaltet sich nur per Modem immer sehr langwierig ... Alex
OK, ich wusste ja nicht wie viele MB Dein Quellcode hat... ;-)) Ansonsten wäre es sicher auch nicht so langwierig gewesen, den Quellcode hier im Forum als Dateianhang zu veröffentlichen.
Ich brauch's ja nicht, aber andere vielleicht. Mich musst Du da nicht glücklich machen. Allenfalls Dich selbst, daß nicht ständig jemand nachfragt, ob er es auch haben kann. Aber wenn Du es brauchst: Oh ja, Alex, Danke! DANKE! Du hast mich sehr glücklich gemacht.
oh ne, nech... ich such die ganze zeit fehler, wo keine mehr sind! ok, die routinen waren bugy, ich war halt zu schnell... aber nachdem ich die fehler beseitigt hatte lief es immer noch nicht :-( und, woran lag es? -> wofür steht wohl das c in 24c64? na? richtig, speed! c = 100 khz. und ich, ich habe einen high speed bus ~350khz... ich habe den bus jetzt gedrosselt ca 125khz. dann läuft er. was aber schade ist, den meine ad's laufen auf highspeed. ich werde jetzt mal sehen ob ich 24lc64 oder 24aa64 bekommen kann. die laufen auch mit highspeed.
Ich habe die Routinen ursprünglich für einen AT24C512 geschrieben. Der ist bei 5V bis 1MHz spezifiziert. Kannst du nicht einfach die Busgeschwindigkeit varriieren, wenn du andere Bausteine ansprechen möchtest?
"wofür steht wohl das c in 24c64? na? richtig, speed! c = 100 khz." Falsch ! Das C steht für CMOS. Ein L bedeutet oft "Low Voltage", d.h. <5V. Ein A bedeutet oft "Advanced", also nichts bestimmtes. Für genaue Angaben brauchst Du immer die komplette Herstellerbezeichnung und das Datenblatt. Der AT24C64A ist z.B. für 400kHz von 1,8-5V spezifiziert. Peter
ich berufe mich auf das datenblatt von microchip. aber du hast mit deiner übersicht recht. trotzdem ist der 24c64 nur für 100khz ausgelegt.
"trotzdem ist der 24c64 nur für 100khz ausgelegt." Warum trotzdem ? Ich habe nirgends was anderes behauptet. Ich habe nur suggeriert, daß man das Datenblatt vor dem Einsatz lesen sollte und besser noch vor dem Einkauf. Peter
>Ich habe nur suggeriert, daß man das Datenblatt vor dem Einsatz lesen
sollte und besser noch vor dem Einkauf.
hast ja recht. außerdem lag der inner grabbelkiste hier rum.
naja, das "kleine" eeprom ist eh klein.darum versuche ich jetzt mal
eine mmc am msp430 zum laufen zu bekommen.
hmm ob ich wohl fat bei 2kb ram hinbekommen werde?
naja erstmal sollte ich sie überhaupt zum laufen bekommen.
kennst du jemand, der das am msp schon hinbekommen hat?
Hallo Subbl! Hast du das mit dem externen EEPROM hinbekommen? Wenn ja, könntest du mir gegebenenfalls den Code per E-Mail zusenden?
Hallo Alex. Ich habe im Forum gelesen, dass du eine Ansteuerung für den At24C512 geschrieben hast. Ich bin kein Experte in C Programmierung. Ich benötige für meine Datenspeichererweiterung Hilfe. Könntest du mir die C Routinen per E-Mail senden? Ich wäre dir dafür sehr dankbar. lycra_hs@yahoo.de
Habe es doch hier in diesem Thread veröffentlicht :-) Musst nur mal ein bischen scrollen, dann wirst du es finden.
Hi Alex. Ich meine die I2C.C und I2C.H Dateien. In der Datei 24c64.c fehlen die Low-Level Routinen. Ich habe nämlich da ein Problem.
Will mich ja nicht lustig machen, aber du musst noch weiter runter scrollen :-) Die von dir angesprochenen Routinen hat doch der "King of Freaks" veröffentlicht. Diverse Beiträge später findest du dann meine (*.rar Archiv). Alex
Alternativ findest du Informationen jetzt auch hier: http://mc-project.de oder direkt: http://mc-project.de/Pages/mmc.html
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.