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
#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; }
@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.
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.
Ü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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.