Forum: Mikrocontroller und Digitale Elektronik I2C externer Speicher


von Subbl (Gast)


Lesenswert?

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

von KoF (Gast)


Lesenswert?

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

von Subbl (Gast)


Lesenswert?

Genau das ist mein Problem, dass man bei google 1Mio Anbindungen gibt.
Mir reicht nämlich eine!

von KoF (Gast)


Lesenswert?

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.

von KoF (Gast)


Lesenswert?

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

von Subbl (Gast)


Lesenswert?

Danke

Aber kannst du mir das in C-Code geben, weil ich bin noch nich so fit
mit µC!

Subbl

von KoF (Gast)


Angehängte Dateien:

Lesenswert?

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!

von Alex (Gast)


Lesenswert?

@ Subb1

Schreib mir eine mail und du bekommst kommentierten Code samt
Beschreibung für avr-gcc.

Alex

von KoF (Gast)


Lesenswert?

ok, er geht nicht!
ich muß jetzt erst mal suchen, ob bei meinen adressen & co was falsch
ist.

von Zotteljedi (Gast)


Lesenswert?

@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.

von Dirk Wiebel (Gast)


Lesenswert?

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;
}

von Alex (Gast)


Lesenswert?

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

von Zotteljedi (Gast)


Lesenswert?

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.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

In der Hoffnung, einen zotteligen Jedi glücklich gemacht zu haben ...

von Zotteljedi (Gast)


Lesenswert?

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.

von KoF (Gast)


Lesenswert?

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.

von Alex (Gast)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

"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

von KoF (Gast)


Lesenswert?

ich berufe mich auf das datenblatt von microchip.

aber du hast mit deiner übersicht recht.
trotzdem ist der 24c64 nur für 100khz ausgelegt.

von Peter D. (peda)


Lesenswert?

"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

von KoF (Gast)


Lesenswert?

>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?

von Bobl (Gast)


Lesenswert?

Hallo Subbl!

Hast du das mit dem externen EEPROM hinbekommen?
Wenn ja, könntest du mir gegebenenfalls den Code per E-Mail zusenden?

von Bobl (Gast)


Lesenswert?

Hallo.....

von Alex (Gast)


Lesenswert?

Wo hängt es denn?

von Bobl (Gast)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

Habe es doch hier in diesem Thread veröffentlicht :-)
Musst nur mal ein bischen scrollen, dann wirst du es finden.

von Bobl (Gast)


Lesenswert?

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.

von Alex (Gast)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

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