mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik internes EEPROM at89s8253


Autor: kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

}

Autor: kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat niemand eine Idee? :(

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wie es aussieht muss ich jede Zahl einzeln eingeben... :(

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.