Hallo,
eigentlich glaubte ich, inzwischen Mikrocontroller-Datenblätter lesen zu
können. Diesmal brauche ich aber etwas Hilfe:
Ich möchte "einfach" Werte ins EEPROM eines Attiny2313 schreiben und sie
daraus lesen.
Leider scheint das Schreiben jedoch schon schiefzugehen, da ich stets
0xFF auslese, egal was ich vorher hineingeschrieben habe.
Die Schreibfunktion habe ich gemäß Datenblatt erstellt:
1 | void EEPROM_write(unsigned int addr, unsigned char data){
|
2 | /* Wait for completion of previous write */
|
3 | while(EECR & (1<<EEPE));
|
4 | /* Set up address and data registers */
|
5 | EEAR = addr;
|
6 | EEDR = data;
|
7 | /* Write logical one to EEMPE */
|
8 | EECR |= (1<<EEMPE);
|
9 | /* Start eeprom write by setting EEPE */
|
10 | EECR |= (1<<EEPE);
|
11 | while(EECR & (1<<EEPE));
|
12 | return;
|
13 | }
|
Der Controller läuft mit 8MHz Int. RC-Oszillator.
Das Merkwürdige daran: Selbst im "AVR-Simulator" tritt der gleiche
Effekt auf. Es scheint, als würde EEPE niemals gesetzt werden (und damit
nie der Wert ins EEPROM geschrieben).
Kann mir jemand sagen, wo der Fehler ist?
Über Antworten würde ich mich sehr freuen!
Schöne Grüße,
Alex