Guten Tag miteinander.. Ich hab da ein kleines prombelm wo ich nicht wirklich weiß wie ich das angehen soll.. Und zwar möchte ich zur Laufzeit meines programms daten im EEPROM oder FLASH sichern so das bei erneutem einschalten des uC diese werte wieder aus dem speicher geladen werden können und der uC sozusagen auf den zustand vor dem ausschalten gesetzte werden kann.. jetzt kann ich das nicht statisch machen also die werte zb fest ins EEPROM schreiben da sich die werte auch wärend der Laufzeit ändern können.. wäre nett wenn mir jemand eine anhaltspunkt oder lösungsansatz geben könnte.. gruß Dominik
Gast
#356578
Includiere <avr/eeprom.h> Eine Beschreibung gibt's hier: http://www.nongnu.org/avr-libc/user-manual/group__avr__eeprom.html
Gast
#356579
DD DD, wie wäre es, deinen uC zusätzlich zur Stromversorgung noch zu puffern. Wenn die Stromversorgung wegfällt wird dann noch die Routine abgearbeitet, die die Daten ins EEPROM schreibt und dann macht auch der Controller die Augen zu
zu Hein: link geht nicht.. bzw ich hatte das schon ausprobiert.. sicher das das zu laufzeit geht.. hier mal mein Code.. Funktionen zum schreiben und lesen
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
Main
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
zu Patrick.. Den beitrag mit dem sichern von Daten wenn die Stromversorgung abbricht hab ich schon gelesen ist aber vorerst nicht nötig bei mir da ich den speicherbefehl von meinem rechner aus schicken möchte.. gruß Dominik
Gast
#356581
http://www.nongnu.org/avr-libc/user-manual/modules.html Dieser müßte funktionieren.
Gast
#356582
Folgende Funktionen sind dort bereits implementiert: uint8_t eeprom_read_byte (const uint8_t *addr) uint16_t eeprom_read_word (const uint16_t *addr) void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t n) void eeprom_write_byte (uint8_t *addr, uint8_t value) void eeprom_write_word (uint16_t *addr, uint16_t value) void eeprom_write_block (const void *pointer_ram, void *pointer_eeprom, size_t n)
wunderbar es geht ich danke recht herzlich für die hilfen.. mein problem war das ich die Adressen nicht gecastet hatte das hat ihm nich so gepasst jetzt gehts aber.. gruß