Daten zur Laufzeit sichern

OP #356577
Lesenswert?
• ▲
▼
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 #356579
Lesenswert?
• ▲
▼
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
OP #356580
Lesenswert?
• ▲
▼
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
void EEPROM_write(unsigned int uiAddress,unsigned char ucData)
2
{
3
  //wait for completion of previos write
4
  while(EECR & (1<<EEPE));
5

6
  //Set up adress and Data Registers
7
  EEAR = uiAddress;
8
  EEDR = ucData;
9
  
10
  //Write logical one to EEMPE
11
  EECR |= (1<<EEMPE);
12

13
  //Start writing
14
  EECR |= (1<<EEPE);
15
}
16

17

18
unsigned char EEPROM_read(unsigned int uiAddress)
19
{
20
  //Wait for completion of privious write
21
  while(EECR & (1<<EEPE));
22

23
  //Set up adress register
24
  EEAR = uiAddress;
25

26
  //Start eeprom read
27
  EECR |= (1<<EERE);
28

29
  //retunr data from Data Register
30
  return EEDR;
31
}

Main
1
    //initialisirung
2
    OCR0A = EEPROM_read(0);
3
    OCR1A = EEPROM_read(1);
4
    OCR2A = EEPROM_read(2);
5

6
.
7
.
8
.
9
    //Speichern der aktuellen einstellungen?????
10
    if(receive =='s')
11
    {
12
        EEPROM_write(0x00,OCR0A);
13
  EEPROM_write(0x01,OCR1A);
14
  EEPROM_write(0x02,OCR2A);
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 #356582
Lesenswert?
• ▲
▼
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)

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.