mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega32 EEprom


Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Egal an welcher Stelle ich den EEprom beschreibe. Beim Auslesen steht 
immer

0x01 0x01 0x01 0x02 0x02 0x02 0x02 usw.

Die ersten drei Byte werden mit der zweiten Schleife nicht 
überschrieben.

Ich habe keine Idee mehr, woran das liegen könnte. Das überschreiben der 
ersten drei geschriebenen Bytes klappt einfach nicht.

Vielleicht hat jemand eine Idee!?

Vielen Dank im voraus,
tom

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define EE_ADDR 0

int main(void)
{
 uint16_t i;


  for (i= 0; i<= 10; i++)
   eeprom_write_byte(i, 0x01);


  for (i= 0; i<= 10; i++)
   eeprom_write_byte(i, 0x02);

  return 0;
}

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der Adressraum des EEPROM eventuell größer als 255 ???

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steffen @Lutz Danke!

Die uint8_t i; taugt für Speicherstellen über 255 nicht. Ich weiß.

Nur es bleibt wie es ist. Bei der zweiten Schleife werden die ersten 
drei Stellen nicht überschrieben.

Selbst wenn ich die zweite Schleife, durch

eeprom_write_byte(0,0x02); ohne Schleife ersetze  steht da immer noch an 
der ersten SpeicherStelle 0x01!

eeprom_write_byte(4,0x02);  ersetzt andstandslos die 0x01 durch die 0x02 
an der vierten SpeicherStelle.

Die ersten drei Stellen sind irgendwie wie zugenagelt.
Einen anderer µC macht das gleiche.

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Inhalt der for-Schleifen solltest Du mal in geschweifte Klammern 
setzen. Die werden mit dem erforderlichen eeprom_busy_wait() for jedem 
Schreibvorgang  sowieso erforderlich. EEPROM ist nämlich verhältnismäßig 
langsam, schau mal ins Datenblatt wegen dem timing und busy-abfragen.

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens: Die interrupt.h brauchst Du bei dem Programm auch nicht. 
Welche Meldungen spuckt der Compiler eigentlich aus, da er ja als erstes 
Argument bei eeprom_write_byte() einen Pointer erwartet?

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.