Hallo, ich überlege mir gerade wofür die Deklaration von Konstanten mit dem Zusatz "PROGMEM" gut ist, bzw. was sie bewirkt. Da ja erst mal alle Konstanten und Variablen auf jeden Fall einen Platz im Programmspeicher haben, sonst kennt sie der Controller ja nicht, sehe ich nur die Wahrscheinlichkeit, dass sie beim Ausführen des Programms nicht wie andere Variablen ( und Konstanten ?) keinen Platz im RAM reserviert bekommen. Alle anderen Variablen und auch Konstanten bekommen beim Start der Programms Platz im RAM. Und der Zusatz "const" gibt dem Compiler die Möglichkeit einen Fehler auszugeben falls ich doch irgendwo im Programm auf die Idee komme dieser Konstante etwas zuzuweisen. Um Platz im RAM zu sparen müsste man dann aber eigentlich jeder Konstante den Zusatz "PROGMEM" verpassen. Wo macht es Sinn dies nicht zu tun den eigentlich will und darf ich sie ja eh nicht ändern? Danke und Gruß
Typische Anwendungen für PROGMEM sind Strings (Menüausgabe), größere Lookup-Tables und ähnliche statische Dinge, die einen großen Teil des verfügbaren RAMs fressen würden. Bei Konstanten, die gerade mal ein Byte belegen, macht man sich den Gedanken gar nicht. Im Prinzip ist es eine Abwägung: Zugriffe auf Konstanten im PROGMEM brauchen einige Maschinenzyklen mehr als auf solche im RAM. Dafür verbrauchen Konstanten im Flash halt kein RAM. Entscheide selbst...
Oliver schrieb: > Im Prinzip ist es eine Abwägung: Zugriffe auf Konstanten im PROGMEM > brauchen einige Maschinenzyklen mehr als auf solche im RAM. Dafür > verbrauchen Konstanten im Flash halt kein RAM. Ja, stimmt, die Zugriffszeit hab ich ganz vergessen. Danke für den Hinweis!
Einfache Konstanten sind in den meisten Fällen mit #defines gut zu erschlagen. Was dann weder FLASH noch RAM noch extra Zugriffszeit kostet. Konstanten im Flash machen, außer für Strings, auch noch für Dinge wie z.B. Default Werte Sinn. Hat man ein Gerät mit veränderbaren Einstellungen und will eine Default Einstellung vorhalten, die bei Bedarf geladen wird, kann diese gut im Flash abgelegt werden.
cyblord ---- schrieb: > Konstanten im Flash machen, außer für Strings, auch noch für Dinge wie > z.B. Default Werte Sinn. Hat man ein Gerät mit veränderbaren > Einstellungen und will eine Default Einstellung vorhalten, die bei > Bedarf geladen wird, kann diese gut im Flash abgelegt werden. Super Anmerkung, hatte ich so noch gar nicht gesehen. Gruß Max
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.