Forum: Mikrocontroller und Digitale Elektronik LPC935 EEPROM-Programmierung


von Thorsten (Gast)


Lesenswert?

Hallo Zusammen...

Mit folgende kurzen Befehlszeilen kann ich einen Int-Wert ins EEPROM 
schreiben und auch wieder lesen.

if (Bit_da(0)==1) //wert in eeprom schreiben
    {
     EA=0;   // Interrupt Sperre setzen
     DEECON = 0x20; //eine Reihe, 64-Byte beschreiben für int-Wert>255
     DEEDAT = 511;    //Beispiel-Wert
     DEEADR = 0;
     EA =1; // Interrupt Sperre aufheben
     while ((DEECON&0x80)==0);
    }

if (Bit_da(2)==1) //Wert aus EEPROM auslesen
  {
    DEECON = 0;
    DEEADR = 0;
    while ((DEECON & 0x80) == 0);
    wert = DEEDAT;
    P2=wert;
  }


Welche Werte (Adresse) muss ich abändern, damit ich insgesamt 4 
unabhängige Int-Werte getrennt speichern und getrennt lesen kann?

Das habe ich leider nicht herausbekommen, trotz Datenblätter lesen...

Danke und Gruss, Thorsten.

von Robert W. (rweber)


Lesenswert?

Hi,

dann schau mal ins UserManual des '935 Kapitel 18. Da stehts genau 
beschrieben.

Gruss,
rweber

von Thorsten (Gast)


Lesenswert?

Das Manual habe ich mehrmals gelesen und einiges versucht. Leider bin 
ich trotzdem nicht dahintergekommen, wie ich dann exakt die 2 Byte 
herausgelesen bekomme. Bekomme immer nur die letzten acht Bit heraus, 
bei einem Int-Wert von 300 also nur die 44. Jetzt stehe ich leider ganz 
auf dem Schlauch.

Gruss, Thorsten

von R. W. (quakeman)


Lesenswert?

Thorsten schrieb:
> Das Manual habe ich mehrmals gelesen und einiges versucht. Leider bin
> ich trotzdem nicht dahintergekommen, wie ich dann exakt die 2 Byte
> herausgelesen bekomme. Bekomme immer nur die letzten acht Bit heraus,
> bei einem Int-Wert von 300 also nur die 44. Jetzt stehe ich leider ganz
> auf dem Schlauch.

Ich glaube, du hast da etwas missverstanden. Das EEProm ist byteweise 
aufgeteilt und dementsprechend kannst du keine Int Werte (16Bit) direkt 
speichern. Du musst diese erst in zwei einzelne Bytes aufteilen und 
getrennt speichern/abfragen.
In deinem Beispiel schreibst du "DEEDAT = 511" was unsinnig ist, da du 
nur Werte zwischen 0-255 reinschreiben kannst in das 8Bit Register. Du 
musst dich also selber darum kümmern, wie du deinen Int Wert mit 16Bit 
aufteilst in zwei 8Bit Werte und nach dem Laden wieder zusammenbaust. 
Aber die generelle Vorgehensweise hast du ja genau in deinem 
Beispielcode schon drin.

Ciao,
     Rainer

von Thorsten (Gast)


Lesenswert?

Danke für deine Hilfe.
Ich hatte es wirklich missverstanden. Leider ist dieses Thema ja nicht 
genau beschrieben im Manual und als Anfäger hat man es da nicht leicht.
 Gruss, Thorsten

von R. W. (quakeman)


Lesenswert?

Speziell zu der LPC900 Familie von 8051er Controllern kann ich dir das 
Buch auf www.c51.de empfehlen. Ich habe es mir damals selber gekauft und 
es erklärt sehr gut die Software sowie Hardware Aspekte dieser 
Controller. Es sind auch sehr viele Codebeispiele mit dabei um die 
einzelnen Funktionen exemplarisch zu benutzen. :)

Ciao,
     Rainer

von Thorsten (Gast)


Lesenswert?

Buch ist bestellt. Dann kann ja jetzt nix mehr schiefgehen. lol

Hoffe mal, das es mich weiterbringt. Danke für den Tip.
Gruss, Thorsten

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.