Programmspreicher als Datenspeicher nutzen?

analog

Neues Mitglied
16. Juli 2011
26
0
1
62
Bad König
Sprachen
  1. ANSI C
Hallo zusammen,

ich hab mal gehört, dass man auch den Programmspeicher wie ein EEPROM verwenden kann, um Parameter nichtflüchtig abzuspeichern. Dafür gibt es ja wohl die SPM- und LPM-Befehle. Hat jemand Erfahrung damit??? Falls das wirklich geht: Was sind denn dann die Nachteile gegenüber EEPROM-Speicherung? Oder Vorteile??? Und vor allem: Wie sag ich meinem C-Compiler, dass er die Daten im Programmspeicher ablegen soll?

Hat das jemand von Euch schon einmal gemacht?

LG Andreas
 
Hallo Andreas,

im Eeprom kann man schnell mal Bytes während der Laufzeit speichern, das ist mit Flash nicht so einfach möglich. Der Flash-Speicher ist in Blöcken (pages) organisiert und dann gibt es noch Einschränkungen beim Zugriff. Eeprom-Speicher läßt sich ca. 100.000mal beschreiben, Flash-Speicher 1.000mal.

Wenn du allerdings in der Compilezeit Daten im Flash ablegen möchtest, ist das kein Problem. Sowas macht man ja oft, zum Beispiel zum Speichern von Zeichensatz-Daten, diese ändern sich auch in der Laufzeit nicht.

Hier ein Beispiel, wie man Daten im Flash-Speicher ablegt und darauf zugreift.

Grüße,
Dirk

Code:
#include <avr/pgmspace.h>
...

const uint8_t Daten_im_flash PROGMEM = {"0123456789ABCDEF"};

...

void routine(void)
{

  uint8_t i, index;

  index = 0;

  i = pgm_read_byte(&Daten_im_flash[index]);

  ...
}
 
Hallo,

also grundsätzlich gilt :

- Flash => Konstanten und Tabellen die sich eigentlich nicht mehr ändern (Zeichensatztabellen, Rechenkonstanten, Grenzwerte, ...)

- EEPROM => Kallibrierdaten, Einstellungen die nach der Inbetriebnahme eingestellt werden aber sonst relativ selten verändert werden.

- SRAM => alles was sich während der Laufzeit oft ändert (Variablen, Meßwerte, ...)

Für Werte die sich öfters ändern, die aber nicht flüchtig gespeichert werden sollen würde ich externe Speicher (SPI/I2C-EEPROMs, FRAMs, Flash, Batteriegepuffertes SRAM) einsetzen. Die kann man auch mal tauschen wenn sie denn hinüber sind und man sie gesockelt hat. Man kann sie auch als SD-Karte (bei Flash) einbauen.

Grundsätzlich haben I2C/SPI-EEPROMs als extra Bausteine gegenüber dem integrierten EEPROM eine längere Lebensdauer (läßt sich öfter beschreiben).

Gruß
Dino
 
Empfehlung SPI-EEPROM?

Danke für die Antwort, ist sicher der richtige Weg. Kannst Du mir evtl. ein SPI-EEPROM (idealerweise bei Reichelt erhältlich) empfehlen, mit dem Du selbst schon erfolgreich gearbeitet hast?

LG Andreas
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)