EEPROM via I2c programmieren

Gast #2879158
Lesenswert?

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
#2879255
Lesenswert?

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!
#2879592
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren