AVR128DA EEPROM write

OP #7729615
Lesenswert?
• ▲
▼

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?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.