Forum: Mikrocontroller und Digitale Elektronik PIC18F45k22 Flash Speicher nutzen


von Marc R. (Gast)


Lesenswert?

Hallo zusammen!

Ich stehe momentan vor einem Problem, bei dem ich nicht weiss wie ich es 
lösen kann.
Bis jetzt habe ich nur uC's von Atmel verwendet und bin denen von 
Microchip aus dem Weg gegangen. (Zum Glück)

Nun zu meinem Problem:
Zuerst einmal ich programmiere in C in MPLAB 8.66 und und benutze das 
C18 Toolchain. Mein Controler ist ein PIC18F45K22.
Ich möchte nun ein zweidimensionales Array (64 x 24 8-bit Variablen) im 
Flash abspeichern. Dieses Array soll nach dem programmieren nur einmal 
geschrieben werden und später im Betreib nur noch asugelesen werden 
können.

Wie kann ich am einfachsten ein Array im Flash abspeichern, ohne mir 
meine Programmdaten zu überschreiben?

Wird das Flash bei einem erneuten Programmiervorgang (z.B. 
Softwareupdate) automatisch gelöscht?

Danke für eure Antworten!

von Max H. (hartl192)


Lesenswert?

Marc Räz schrieb:
> (Zum Glück)
Was soll das heißen?


>Wie kann ich am einfachsten ein Array im Flash abspeichern, ohne mir
>meine Programmdaten zu überschreiben?
1
const rom unsigned char Array2D[64][24]

: Bearbeitet durch User
von Kein Name (Gast)


Lesenswert?

> soll nach dem programmieren nur einmal geschrieben werden

Ähm... soll beim programmieren geschrieben werden? Oder wirklich erst 
programmiert, im Betrieb einmal geschrieben und danach nur mehr gelesen?

von Marc R. (Gast)


Lesenswert?

@ Max H.: Danke dir, da hätte ich eigentlich selbst drauf kommen müssen. 
Kann ich dann das Array ganz normal auslesen, wie eine Variable, welche 
im RAM abgespeichert ist?
Ja, diese Microchip-Controller und deren Datenblätter sind mir sehr 
unsympathisch, aber das ist halt Geschmacksache :-)

@ Gast: Wenn möglich sollte das Array beim Programmieren in den 
Controller gebrannt werden und dann nur noch ausgelesen werden können. 
Sollte aber mit dem "rom" bei der Deklaration möglich sein oder sehe ich 
das falsch?

von Max H. (hartl192)


Lesenswert?

Marc Räz schrieb:
> Sollte aber mit dem "rom" bei der Deklaration möglich sein oder sehe ich
> das falsch?
Ja, ich habe mit "const rom unsigned char" mal für ein Projekt den 
Zeichensatz für ein KS0108 LCD im rom gespeichert. Abgefunden wird es 
wie ein normales Array, man kann aber wie der Name sagt nur daraus 
Lesen.

von Kein Name (Gast)


Lesenswert?

Ja, macht man einfach mit dem "rom". Gibt nur ein Problem - das zieht 
sich dann durch alle Funktionen.
Gibt z.B. ein strlen(char*) und strlen(rom char*).

von Marc R. (Gast)


Lesenswert?

@ Max H.: Okay, ich habe mein Array nun so deklariert, hat prima 
geklappt! Ich werde morgen die ersten Test machen und sehe dann, wie 
sich das ganze verhält. Vielen dank!

@ Gast: Ja, von dem bin ich ausgegangen, aber danke für den Hinweis.

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.