PROGMEM, EEMEM?

Gast #1932817
Lesenswert?
• ▲
▼
Hallo!

Mittlerweile weiß ich, was der EEProm für ein Speicher ist. Dort kann 
ich variablen erzeugen, oder Absolut addressierte Register permanent, 
also auch nach Reset noch existent mit Daten beschreiben.

Was aber ist PROGMEM? Wo genau liegt der Unterschied?

Wann soll ich PROGMEM und wann EEPROM-Speicher nutzen?

Danke für kurze Hilfestellung
Gast #1932958
Lesenswert?
• ▲
▼
naja, wenn man kurz vor dem RAM-ENDE steht, und mit der längeren 
zugriffszeit von variablen in der Laufzeit leben kann, könnte man die 
vars halt ins eeprom oder ins progmem auslagern, ohne einen anderen 
Controller zu nutzen. Ich schließe mich also dem "ist ja doof" an :)

Problem ist, dass wir hier einen kleinen (Baugröße) Controller nutzen 
müssen, der aber sehr viel speicher zur Verfügung stellt. Speicher für 
code und RAM. Angenommen wir nutzen hier einen ATMEGA8, könnte man 
seinen Bruder nehmen, der 32 statt 8 an speicher hat. Was tun, wenn dies 
nicht ausreicht?
Gast #1932965
Lesenswert?
• ▲
▼
Hi

>Der Vollständligkeit halber: Es gibt einen Weg, der aber bestimmte
>Randbedingungen / Einschränkungen hat.

>Ein Bootloader kann Flash Speicher beschreiben.

>Wenn also dein eigentliches Programm in den Bootloaderbereich passt,
>könntest du von dort aus z.B. den restlichen Flashbereich als permanente
>Datenablage nutzen.

Wenn die Bootlockbits unprogrammiert sind, gibt es keine Einschränkungen 
für SPM/(E)LPM.

MfG Spess
Gast #1932982
Lesenswert?
• ▲
▼
"mehr Beinchen" ist untersagt! Wir müssen sehr klein bauen!

Der Funktionsumfang ist extrem! z.B. gibt es eine Umschaltmöglichkeit 
von Master-Slave, wobei sich die Funktion komplett ändert. Diese 
Umschaltung soll aber nicht beim flashen oder durch Auswahl der 
Hardware, sondern duch den User WÄHREND der Laufzeit vollzogen werden 
können.

Somit haben wir den Anspruch z.B. auf einen ATMEGA128, ABER: wir können 
nur Baugrößen um den ATMEGA8 nutzen :(

Ideen?
#1933084
Lesenswert?
• ▲
▼
Anfänger schrieb:
> naja, wenn man kurz vor dem RAM-ENDE steht, und mit der längeren
> zugriffszeit von variablen in der Laufzeit leben kann, könnte man die
> vars halt ins eeprom oder ins progmem auslagern, ohne einen anderen
> Controller zu nutzen.

Und wenn dann dieses ebenfalls aufgebraucht ist?

> code und RAM. Angenommen wir nutzen hier einen ATMEGA8, könnte man
> seinen Bruder nehmen, der 32 statt 8 an speicher hat.

BIst du sicher, dass du verstanden hast worum es hier überhaupt geht? 
Ein Mega8 hat keine 8k SRAM.

> Was tun, wenn dies
> nicht ausreicht?

Wie gesagt den nächst größeren nehmen.

Allenfalls kann man darüber diskutieren, wie sinnvoll die von Atmel 
vorgegebenen Speichergrößen sind. Es ist ja schliesslich nicht 
gottgegeben, dass ein Mega8 nur 1k SRAM haben darf. Atmel hätte dem ja 
auch 2k spendieren können.
#1933094
Lesenswert?
• ▲
▼
Anfänger schrieb:

> Der Funktionsumfang ist extrem! z.B. gibt es eine Umschaltmöglichkeit
> von Master-Slave, wobei sich die Funktion komplett ändert. Diese
> Umschaltung soll aber nicht beim flashen oder durch Auswahl der
> Hardware, sondern duch den User WÄHREND der Laufzeit vollzogen werden
> können.

Und?


In den meisten Fällen besteht gerade bei Programmen von Leuten mit 
weniger als ein paar Jahren Erfahrung ein nicht ganz unerhebliche 
Möglichkeit, durch geschicktere Programmierung einiges an Platz 
einzusparen. Irgendwann ist natürlich immer Schluss, aber ein paar Bytes 
kann man meistens immer noch irgendwo rausholen.
#1933331
Lesenswert?
• ▲
▼
Karl heinz Buchegger schrieb:
> Allenfalls kann man darüber diskutieren, wie sinnvoll die von Atmel
> vorgegebenen Speichergrößen sind. Es ist ja schliesslich nicht
> gottgegeben, dass ein Mega8 nur 1k SRAM haben darf. Atmel hätte dem ja
> auch 2k spendieren können.

Von dem 1KB Ram brauchte ich meistens einen kleinen Bruchteil. Beim 
letzen Profekt brauchte ich ca. 140B. Wenn man mehr braucht sollte man 
halt einen größeren Chip einplanen. Und wenn der zu groß ist eine 
kleinere Bauform wählen. Vielleicht sollte man auch gar keinen AVR 
sondern etwas im 16-32bit Bereich nutzen - die haben meistens mehr Ram.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren