Hallo Leute, ich verzweifle langsam, was den Schreib- / Lesevorgang meines AT24C1024 betrifft. Ich verwende ein uC51-Derivat (MSC1210) und den besagten AT24C. Folgenden Code habe ich geschrieben: //SCHREIBEN if(i2c_selectslave(160+1)&0xFF00) printf("FEHLER"); else { WDSERV(); i2c_sendstart(); i2c_setbyte(160); i2c_setbyte(0x05); i2c_setbyte(0x05); i2c_setbyte(0x75); i2c_sendstop(); //LESEN i2c_sendstart(); i2c_selectslave(160+1); ack=i2c_receiveack(); if(ack==0) printf("DATA: %d",i2c_getbytee()); else { i2c_wait(); } i2c_sendstop(); Das ganze befindet sich momentan noch in einer Endlosschleife. Leider bekommen ich immer nur 255 ausgegeben. Woran kann das liegen? MfG und vielen Dank, Bastian
Bastian schrieb: > printf("DATA: %d",i2c_getbytee()); Schreibfehler bei i2c_getbytee() ? Hast Du einen Oszi um was messen zu können? Gruß
Hast du das schon gelesen ?: http://www.atmel.com/Images/doc1471.pdf Deine Bytes die du sendest sind falsch.
Hallo, getbytee ist korrekt :-) In den Wickenhäuser-Bibliotheken ist das leider so geschrieben worden. Oszi werde ich wohl gleich mal zu Rate ziehen.
Daniel V. schrieb: > Deine Bytes die du sendest sind falsch. Hallo Daniel, gelesen habe ich es, wahrscheinlich aber etwas überlesen :-( Was meinst Du mit den falsch gesendeten Bytes? Gruß, Bastian
Bastian schrieb: > Daniel V. schrieb: >> Deine Bytes die du sendest sind falsch. > > Hallo Daniel, > > gelesen habe ich es, wahrscheinlich aber etwas überlesen :-( > > Was meinst Du mit den falsch gesendeten Bytes? > > Gruß, > Bastian Sorry hab mich vertan, du schreibst ja zuerst auf das EEPROM, aaaaber: EEPROMs sind recht langsam, beachte daher die Schreibzeit Tw. Mal im Dokument nachlesen!
Hallo Basti. Eine andere Möglichkeit 'ACKNOWLEDGE POLLING' Das heisst, daß nach dem STOP, das das Schreiben initiiert, der MC solange in einer Schleife hängt, bis das EEPROM fertig ist und sein AKN sendet. Ist in allen Datenblätter der EE-PROMs, die ich kenne, beschrieben. Beim AT24C1024 Datenblatt: Seite 9 ziemlich unten. So eine Schleife, wie dort beschrieben, ist ja einfach zu implementieren. Dann bist du immer auf der sicheren Seite, Vielleicht hilft es weiter. 73 Wilhelm
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.