www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten zur Laufzeit sichern


Autor: Dd Dd (neo120484)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Includiere <avr/eeprom.h>

Eine Beschreibung gibt's hier:

http://www.nongnu.org/avr-libc/user-manual/group__...

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dd Dd (neo120484)
Datum:

Bewertung
0 lesenswert
nicht 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
void EEPROM_write(unsigned int uiAddress,unsigned char ucData)
{
  //wait for completion of previos write
  while(EECR & (1<<EEPE));

  //Set up adress and Data Registers
  EEAR = uiAddress;
  EEDR = ucData;
  
  //Write logical one to EEMPE
  EECR |= (1<<EEMPE);

  //Start writing
  EECR |= (1<<EEPE);
}


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

  //Set up adress register
  EEAR = uiAddress;

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

  //retunr data from Data Register
  return EEDR;
}

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

.
.
.
    //Speichern der aktuellen einstellungen?????
    if(receive =='s')
    {
        EEPROM_write(0x00,OCR0A);
  EEPROM_write(0x01,OCR1A);
  EEPROM_write(0x02,OCR2A);
    }





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

Autor: Marx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Marx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Dd Dd (neo120484)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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ß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.