www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EEPROM beim Mega8


Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich versuche nun schon seit einer halben Stunde das EEPROM in meinem
Mega8 hier zum laufen zu bekommen. Ich benutze WinAVR und habe das C
Beispiel aus dem Datenblatt abgetippt. (Seite 20 und 21)

So sieht es ungefähr aus:
...
cli();
ausgabe = EEPROM_read(1);
sei();

Bei Ausgabe kommt immer 255 heraus. Ich habe nicht nur Adresse 1
versucht sondern auch einige andere. Die Funktion zum schreiben zeigt
auch keine Wirkung (EEPROM danach mit Pony Prog gelesen, war alles noch
auf 255)

Dann habe ich am Anfang des EEPROMS einige Bytes auf verschiedene Werte
gesetzt (wieder mit Pony Prog). Und wieder versucht es mit EEPROM_read
zu lesen, aber wieder alles nur 255.

Kann mir jmd helfen? Was kann ich übersehen haben?

Vielen Dank schonmal
Gruß Philipp

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bist Du sicher, dass Dein Programm die richtigen Adressen für die
EEPROM-Register benutzt?

Ansonsten noch der Hinweis, dass Du normal weder zum Lesen noch zum
Schreiben die Umklammerung mit cli()/sei() brauchst. Das machen die
Compiler-Lib-Funktionen schon intern, sofern es nötig ist (nur beim
Schreiben)...

Gruß
Johannes

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier doch nochmal der Code:


unsigned char EEPROM_read(unsigned int uiAddress) {
  while(EECR & (1<<EEWE));

  EEAR = uiAddress;

  EECR |= (1<<EERE);

  return EEDR;
  };


Als Adresse kann ich doch einfach 0 bis 511 einsetzen oder nicht?
EEARL wird ja komplett benutzt und von EEARH nur das erste bit.

Wenn ich die Interrupts vorher nicht abschalte, dann funktioniert es
nicht.

Vielen Dank schonmal
Gruß Philipp

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, wenn ich zuhause bin werd ich mal den ganzen EEPROM mit was
anderem als 0xFF füllen. ist nur so aufwendig das so in Pony Prog zu
ändern. (jmd einen Tipp wie ich einfacher die 512byte fülle?)

Und ich habe vor einige Zeit mal was gehört das man besser den Anfang
des EEPROMs nicht benutzen sollte. Das war im Zusammenhang mit dem
At90S2313. Ist da überhaupt was dran? Wenn ja, gilt es nur für den 2313
oder generell für die AVR EEPROMs?

Vielen Dank Gruß Philipp

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum verwendest Du nicht die Funktionen und Makros aus der AVR-LIBC
(aus WinAVR)? Dort ist doch schon alles vorhanden, was Du brauchst, und
das funktioniert auch. Schau mal auf S. 15 vom AVR-LIBC-Manula (Vers.
1.4.3).

Günter

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist eine Beschreibung, die funktioniert. Habs grad selber
programmiert.

http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Gruß
Flo

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Hilfe. Ich würde es gerne "zu Fuss" zum laufen
bekommen.

Ich glaube ich war auch zu blöd Pony Prog zu benutzen.

Ich habe das EEPROM eingelesen, dann Edit -> EditBufferEnabled
angeklickt. Jetzt konnte ich das eingelesene in Pony Prog bearbeiten.
Habe ein wenig was eingetippt und auf Write EEPROM geklickt. Dann hat
er geschrieben, mit Verify, und gesagt alles wäre ok. Wenn ich wieder
auf Read klicke liest er kurz und an dem Fenster ändert sich auch
nichts.

Schließe ich jetzt aber Pony Prog und starte es neu, dann stehen, nach
dem erneuten lesen, überall wieder 0xFF.

Kann ich den EEPROM so gar nciht mit Pony Prog bearbeiten?

Ich kann ja lange probieren da was auszulesen, wenn ich gar nichts
reingeschrieben hab...

Vielen Dank für eure Hilfe schonmal
Gruß Philipp

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ich schon wieder

das lesen ging, hab das EEPROM nun mit ner anderen Software über ISP
bearbeitet und das kann ich nun auch auchlesen. Da stand die ganze Zeit
wirklich 0xFF drin, deshalb hab ich das auch gelesen.

Wie das mit Pony Prog ging würde mich trotzdem interessieren.

Gruß Philipp
und dank an alle für die Hilfe

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.