Hallo Zusammen, ich versuche jetzt schon seit mehreren Tagen beim AVR128DA28 auf das EEPROM zu schreiben leider funktioniert das nicht so wie ich das gerne hätte. Über UPDI funktioniert das ganze! Also ich kann ein bestehendes EEPROM file runter schreiben und lese dann auch die korrekten Daten. Gehe ich jedoch nun her und schreibe im Programm auf das EEPROM so ändert sich der WERT dort nicht und ich lese nur den zuvor geschreibenen Wert oder 0xFF falls das EEPROM zuvor gelöscht wurde. Das hier ist mein aktueller Code: // LESEN DES EEPROM uint8_t eeprom_read(uint16_t address) { return *(uint8_t *)(EEPROM_START + address); } // SCHREIBEN DES EEPROM void eeprom_write(uint16_t address, uint8_t data) { // Wait for completion of any previous EEPROM or Flash operation while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm) { ; // Wait } // Issue Erase and Write command CCP = CCP_IOREG_gc; NVMCTRL.CTRLA = NVMCTRL_CMD_EEERWR_gc; // Write data to EEPROM address *(uint8_t *)(EEPROM_START + address) = data; // Clear the command CCP = CCP_IOREG_gc; NVMCTRL.CTRLA = NVMCTRL_CMD_NONE_gc; } // MAIN FUNCTION int main(void) { set_internal_oszillator(24000000, 0); USART1_init(); uint8_t data = 0; eeprom_write(0, 7); _delay_ms(1000); data = eeprom_read(0); /* Replace with your application code */ while (1) { USART1_sendFormattedString("Data: %d\r\n", data); _delay_ms(1000); } } Die write Funktion habe ich aus diesem Guide von Seite 8. Hat jemand eine Idee was das Problem sein könnte oder hatte ein Ähnliches verhalten? Zusätzliche Infos: Fuses alle auf Default F_CPU mit internem Oszillator auf 24MHz Leider habe ich die vorgabe die 2 Funktionen selbst zu schreiben also darf das avr/eeprom.h nicht nutzen. Ebenfalls ist die Vorgabe das ganze mittels C zu schreiben. Um das ganze mit bestehendem Code richtig zu integrieren. Hat jemand vielleicht eine funktionierende Funktion um auf das EEPROM zu schreiben?
:
Bearbeitet durch User
1 | Configuration Change Protection |
2 | |
3 | Register Key |
4 | |
5 | NVMCTRL.CTRLA SPM |
6 | NVMCTRL.CTRLB IOREG |
Oh mann das hatte ich voll übersehen, dass da unterschiedliche Keys sind... Jetzt funktioniert es vielen Dank!
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.