mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM auslesen


Autor: Tobias Zahn (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
Die Funktion aus dem Anhang soll pro Schleifendurchlauf zwei int Werte
aus dem EEPROM holen und an die Funktion übergeben.
Das macht sie aber nicht, warum verstehe ich nicht :-(

Danke schonmal für eure Hilfe
Tobias

Autor: Christian Zietz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher uC? Welcher Compiler?

Autor: Tobias Zahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Contoller: AT90S8515
Codevision Compiler

Autor: Christian Zietz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie ergibt Dein C-Code keinen Sinn:

         *ptr_to_eeprom=tmp;
         length = *ptr_to_eeprom;

Das schreibt zunächst tmp ins EEPROM (dahin wo auch immer ptr_to_eeprom
gerade hinzeigt) und liest daraufhin length von der Stelle aus dem
EEPROM, wo Du gerade tmp hingeschrieben hast. Gleich darauf machst Du
sowas nochmal.

Christian

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"... warum verstehe ich nicht :-("


Weil Du das Datenblatt nicht gelesen hast !!!


Du kannst noch so lange einen Pointer ptr_to_eeprom nennen, er zeigt
trotzdem stur ins SRAM !


Also ab und erstmal das Datenblatt gelesen.
In den neueren (ATMega8515) sind sogar fix und fertige C-Beispiele.


Peter

Autor: Tobias Zahn (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo!
Ich hab das Beispiel aus der Codevision - Hilfe verwendet, ich dachte
nicht, dass das nicht geht.
Die neue Funktion ist im Anhang (gebastelt aus dem Datenblatt) sie
meldet:
undefined symbol EEWE und EERE

was muss ich machen, damit das tut?

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ich hab das Beispiel aus der Codevision - Hilfe verwendet"


Sorry, hatte das "Codevision" übersehen.

Wenns da so steht dann sollte es ja auch gehen.


Beim AVR-GCC muß man es so machen, wie im Datenblatt (io.h includieren)
oder die Macros aus eeprom.h benutzen.

Beim ACR-GCC zeigen Pointer immer in den SRAM, Ausnahme
Funktionspointer, die zeigen ins Flash.

Der Codevision hat eine nicht dem C-Standard entsprechende Erweiterung,
(eeprom *) zeigt dann wohl wirklich in den EEPROM, aber eben nur beim
Codevision.

Du must aber auf alle Fälle dem Pointer ptr_to_eeprom eine Adresse
zuweisen, sonst gehts in den Wald.



Peter

Autor: Tobias Zahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich versteh trotzdem net wie ich das im Codevision machen muss, hat
vllt. einer nen Link oder so dazu?
Ich find leider nix :-(

Weil ne Adresse zuweißen tu ich eigendlich... :/

Tobias

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Weil ne Adresse zuweißen tu ich eigendlich... :/"

wo denn ?


ptr_to_eeprom = DieAdresseVonDerIchLesenWill;

DieVariable = *ptr_to_eeprom; // und nun lese ich


Peter

Autor: Tobias Zahn (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi!
Danke, jetzt funktioniert es scheinbar...

Tobias

Autor: chose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde mit Codevision nicht mittels Pointer aufs EE zugreifen.
Besser gehts mit einem Array. Da brauchst keine Adressen usw.
Das Problem ist, dass du mit int-Pointern nur auf int-Werten zugreifen
kannst.

char Temp;
char  eeprom Stm_Sp[500];     //Array für 500 EE-Bytes


Temp = Stm_Sp[2];            //Liest den 2. Wert aus dem EE-Array
Stm_Sp[2] = 12;              //schreibt 12 in das EEprom.

SG chose

Autor: chose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Adresszuweisungen sollten so aussehen:

ptr_to_eeprom  =  &tmp[0];      //Was soll tmp sein ?

Literaturtip: C für Mikrocontroller, Burkhard Mann


SG

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.