Forum: Mikrocontroller und Digitale Elektronik i2c EEPROM


von Peter Kasi (Gast)


Lesenswert?

Hi,
ich versuche gerade ein EEPROM (24LC01B von Microchip) an meinem m16c 
Testboard von Glyn zum laufen zu bekommen. Den passenden Sourcecode hab 
ich mir von www.m16canz.com/sampcode.htm heruntergeladen (Sample 24). In 
ihrem Beispiel verwenden die zwar den Atmel AT24C04 I2C Serial EEPROM, 
aber nach Vergleich der Datenblätter müssten die beiden gleich 
ansprechbar sein. Lesen scheint auch zu funken, aber beim schreiben kann 
ich nur die erste Seite beschreiben (hab ich auch für die 8 byte 
angepasst), oder nur das erste Byte bei byteweises Schreiben. 
Wiederholtes schreiben schlägt fehl (ich mach auch immer schön das 
ACK-Polling um zu sehen ob der EEPROM wieder bereit ist). Hat das mal 
jemand zum laufen gebracht, wäre echt dankbar für jede Hilfe.
Gruß
Peter

PS: Vielleicht hab ich auch irgendwas in den Datenblättern übersehen, 
aber ich komm einfach nicht dahinter...

von Reini (Gast)


Lesenswert?

kurze NAchfrage: welche 8 Bytes hast du angepaßt ? Die Adresse sollte 
fest auf A0 bleiben, nur der zweite Hexwert muß auf 0x00, 0x10, 0x20, 
0x30, ... usw. angepast werden.

Ich werde das Program morgen testen und dann morgen abend mich bei Dir 
melden.

von Peter Kasi (Gast)


Lesenswert?

die 8 Bytes für Seitenweises schreiben, im Orginalsource werden 16 Bytes 
pro Seite geschrieben, der 24LC01B hat aber nur einen 8 Byte großen 
Seitenpuffer. Die Adresse erhöhe ich deshalb auch in 8ter Schritten 
0x00, 0x08, 0x10,...
Die Adresse für den Chip bleibt fest auf A0, ist in Sample24 genauso 
(Wenn ich es richtig verstanden habe sollte es aber dort anders sein, da 
die so nicht den kompletten Speicher adressieren können)
Gruß
Peter

von Reini (Gast)


Lesenswert?

Hallo Peter,
das Programm läuft so auf meinem "Eigenbau" leider nicht. Ich habe eine 
andere Version die läuft, die kann ich dir morgen mailen.
Ich habe mir den Source-Code auch mal angesehen, hast du in der Datei 
"i2c_eeprom" auch den Bytecounter in der Funktion void 
i2c_eeprom_page_write(...) auf <8 geändert ?

von Peter Kasi (Gast)


Lesenswert?

@Reini,
ja hab ich geändert (war das was ich mit den 8 Byte meinte). Schick mir 
mal deine Version. Was verwendest du für ein EEPROM?

Hab das heute noch mal (fast den ganzen Tag) durchgetestet, komm aber 
einfach nicht dahinter, lesen funktioniert ja ohne Probleme, nur 
schreiben macht Probleme. Vielleicht kann mir ja jemand zumindest sagen 
ob die Hardware korrekt ist:
24LC01B von Microchip 2,5 V version an 5V die das Evaluationboard 
liefert (laut Datenbaltt on 2,5 bis 5,5 max. 7V zu verwenden, auf jeden 
Fall im grünen Bereich).
Als Pullups für den I2C Bus hab ich zwei 4k7 Widerstände verwendet (im 
Datenblatt stand 10 k für 100 KHz, funktioniert aber gar nicht). A0-A3 + 
Vss + WP an Masse, SCL und SDA an PIN 29 + 30 des m16c (wie rum weiß ich 
grad nicht hab's leider nicht vor mir liegen, ist aber korrekt) und Vcc 
an 5V . Hab inzwischen auch schon 3 verschiedene 24LC01B verwendet, 
funkt aber bei keinem richtig.

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.