internes EEPROM at89s8253

Gast #2087654
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;

}
Gast #2088531
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
Gast #2088544
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?
Gast #2090923
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.