Forum: Mikrocontroller und Digitale Elektronik Daten aus dem Programmspeicher lesen Mega8


von Guenter B. (gbl)


Lesenswert?

Hallo,

ich möchte Daten fest mit dem C-Programm im Flash eines Mega8 speichern.
Diese Daten (Bitmuster für ein Display) soll das Programm dann zur 
Laufzeit aus dem Speicher lesen.

In Basic (VC20/C64) gab es imho mal so eine Art "Data" und "Read" 
Befehl.

Es handelt sich um ca 2KB an Bitmustern, welche ich Byteweise auslesen 
und verarbeiten möchte.

Wie löse ich so etwas in C ?

Gruß

Günter

von Daniel V. (danvet)


Lesenswert?

Das kommt auf deinen Compiler an!
Suche mal nach _flash oder so.

von Guenter B. (gbl)


Lesenswert?

Ist es sinnvoll die Daten in Feldvariablen zu speichern ?

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Nein, denn dazu brauchst Du RAM. Und dein µC hat bloß 1kB davon, deshalb 
passen Deine Daten da gar nicht rein. ".db" (oder so) ist dein Freund.


Gruß
Jonathan

von Karl H. (kbuchegg)


Lesenswert?

> Ist es sinnvoll die Daten in Feldvariablen zu speichern ?

> Nein, denn dazu brauchst Du RAM. Und dein µC hat bloß 1kB davon, deshalb
> passen Deine Daten da gar nicht rein. ".db" (oder so) ist dein Freund.
>

> Wie löse ich so etwas in C ?

Array anlegen und dieses ins Flash verbannen passt wunderbar.
AVR-GCC-Tutorial
Im Abschnitt über "Flash" nachlesen.

von MWS (Gast)


Lesenswert?

Jonathan Strobl schrieb:
> ".db" (oder so) ist dein Freund.

Da hätte er mehr Freunde würde er Assembler benutzen, in C ist's PROGMEM 
und <avr/pgmspace.h>

von Johnny B. (johnnyb)


Lesenswert?

Kenne mich leider nicht mit Atmel uC aus, aber meist reicht es, das 
Array mit den Daten einfach als "const" zu deklarieren. Die 
Compiler/Linker sollten dann automatisch erkennen, dass die Daten in 
diesem Array nur gelesen werden und daher im Flash bleiben können.

Auf Nummer sicher geht man mit den anderen, oben beschriebenen Methoden 
(Array einer Section zuweisen und im Linker Script definieren, dass 
diese Section im Flash ist).
Aber wenns mit "const" alleine auch geht, kann man sich die Mühe ja 
sparen. ;-)

von Guenter B. (gbl)


Lesenswert?

Danke für die Hinweise.

Ich werde mich mit dem Flash-Abschnitt und Progmem auseinandersetzen.

Gruß

Günter

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
Noch kein Account? Hier anmelden.