Forum: Mikrocontroller und Digitale Elektronik internes EEPROM at89s8253


von kevin (Gast)


Lesenswert?

Hallo zusammen

Ich möchte das interne EEPROM  des at89s8253 ansteuern.
Ich haben hier im Forum auch schon gestöbert und etwas gefunden.
Dies habe ich kopiert und in mein Programm eingebunden.

Es läuft alles super, das ein- wie auch das auslesen.
Nun habe ich aber eine Frage beim einlesen:
Wenn ich jetzt so ein Array im EEPROM abspeichern will, muss
ich für jede Arraystelle eine neue zeile nehmen um einen Wert zu 
speichern?

Also z.b so:

arr[0]=12;
arr[1]=15;
arr[2]=28;
arr[3]=33;

oder kann ich es irgendwie auch alles aufeinmal abspeichenr wie das:

arr[4]={12,15,28,33};


Hier wäre noch mein code zum einlesen in das EEPROM falls dieser hilft.

unsigned char xdata arr[20];

void init(){

EECON |=  0x08; //EEMEM=1 Memory Select interner XDATA
EECON |=  0x10; //EEMWE=1 Write-Enable
EECON |=  0x20; //EELD=1  Page-Mode 32Byte

arr[0]= 12;
arr[1]= 15;
arr[2]= 28;
...

EECON &=  0xDF; //EELD=0 Page-Mode beenden
arr[19] = 17; // Schreiben auslösen (Kennbyte, nur Bsp.)
while (!(EECON & 0x02)); // Warten bis Bytes im EEPROM geschrieben sind
EECON &=  0xEF; //EEMWE=0 Write-Disable
EECON &= 0xF7;

}

von kevin (Gast)


Lesenswert?

Hat niemand eine Idee? :(

von Ralf (Gast)


Lesenswert?

> oder kann ich es irgendwie auch alles aufeinmal abspeichenr wie das:
> arr[4]={12,15,28,33};
Das geht nicht. Was du machen kannst ist eine Funktion, die die Adresse 
bzw. einen Pointer des XDATA-Arrays bekommt und in einer Schleife die 
jeweiligen Werte ins EEPROM schreibt.

Ralf

von kevin (Gast)


Lesenswert?

Ralf schrieb:
> Was du machen kannst ist eine Funktion, die die Adresse
>
> bzw. einen Pointer des XDATA-Arrays bekommt und in einer Schleife die
>
> jeweiligen Werte ins EEPROM schreibt.

Ja auf die Idee mit einer Schleife bin ich auch gekommen.
Nur die Werte die Ich einlesen muss sind nicht der Reihenfolge, sonder 
wild durcheinander und da kommt keine Schleife in Frage...

Eine andere Möglichkeit gibt es nicht?

von kevin (Gast)


Lesenswert?

So wie es aussieht muss ich jede Zahl einzeln eingeben... :(

von Ralf (Gast)


Lesenswert?

> Nur die Werte die Ich einlesen muss sind nicht der Reihenfolge, sonder
> wild durcheinander und da kommt keine Schleife in Frage...
Nur zur Klärung: Meinst du die Werte selbst oder die Position innerhalb 
des Arrays?
Im ersten Fall geht's mit einer Schleife, im zweiten Fall kannst du ein 
temporäres Array verwenden und füllen und dieses dann in einer Schleife 
schreiben.

Ralf

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.