mikrocontroller.net

Forum: Compiler & IDEs EEPROM array in ein SRAM array casten


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man ein EEPROM array in ein SRAM array casten?

Bsp.
ich habe eine Funktion:

unsigned char cp(unsigned char* array1,unsigned char* array1){}

nun möchte ich mit dieser Funktion Daten aus dem EEPROM vergleichen mit 
Daten aus dem SRAM.

also:
eeprom unsigned char eep_arr[10]={1,2,3,4,5,6,7,8,9,0};
unsigned char arr[10]={1,2,3,4,5,6,7,8,9,0};

cp(eep_arr,arr);                    // das gefällt dem Compiler nicht
cp((unsigned char)eep_arr,arr);     //das gefällt dem Compiler, aber ist dies auch das was ich beabsichtige?
cp((unsigned char*)eep_arr,arr);    //das gefällt dem Compiler auch, aber ist dies auch das was ich beabsichtige?

Leider kann ich dies nicht in der Hardware testen, deshalb meine Frage.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich ist das falsch:
unsigned char cp(unsigned char* array1,unsigned char* array1){}

und so ist es Richtig:
unsigned char cp(unsigned char* array1,unsigned char* array2){}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen schrieb:
> Kann man ein EEPROM array in ein SRAM array casten?

Können tust du schon, der Compiler kann sich gegen einen Cast nicht 
wehren. Ein Cast ist schlieslich das ultimate Mittel eines 
C-Programmierers, wie er dem Compiler so ziemlich alles unterjubeln 
kann.
Aber richtig ist es nicht.
Und das liegt daran, dass man auf Daten im EEPROM anders zugreifen muss, 
als auf Daten im SRAM.

Du hast 2 Möglichkeiten:
* entweder du schreibst dir selbst eine spezielle cp-Funktion, die weiß,
  dass zb. der 2-te Parameter ein Pointer auf Daten im EEPROM ist, und
  das entsprechend berücksichtigt
* oder du zerteilst die Operation in 2 Schritte
  a) die Daten aus dem EEPROM in ein Hilfsarray im SRAM lasen
  b) damit hast du dann die zu vergleichenden Daten beide im SRAM
     vorliegen und kannst deine ursprüngliche cp-Funktion benutzen.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und das liegt daran, dass man auf Daten im EEPROM anders zugreifen muss,
als auf Daten im SRAM.
ok, hab ich mir fast gedacht, aber gewust hab ich es nicht.

Danke!

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.