Forum: Mikrocontroller und Digitale Elektronik C, pic30, fkonstantes array im eeprom oder programmspeicher ablegen


von Camel C. (camelcoder)


Lesenswert?

hallo leute,

ich such mich hier dumm und dämlich ... man kommt irgendwie vom 
hundertsten ins tausendste ...

mein problem:

speicherplatz!
ich hab ein rudel char arrays (da sind befehle für peripherie drin), die 
ändern sich nicht. daher ist es ja quatsch die im ram abzulegen. 
deswegen hätte ich die gern im eeprom oder programmspeicher.
wie krieg ich das hin?

sprut hilft mir da auch nicht weiter, da steht nur assemblerzeug zu 
eeprom, und im datasheet find ich auch nix.

landen const variablen im flash?
muss ich die in nem header file definieren?

danke schonmal

von holger (Gast)


Lesenswert?

>landen const variablen im flash?

Nö. Aber const rom.

von Camel C. (camelcoder)


Lesenswert?

also z.b.
1
const rom unsigned char myarray[2] = {0x00,0xff};
?

von holger (Gast)


Lesenswert?

>also z.b.

>const rom unsigned char myarray[2] = {0x00,0xff};

Nein, vergiss mein Gequatsche von vorhin. rom kennt der C30 nicht.
Das kennt nur der C18. Also versuchs nur mit const.

von (prx) A. K. (prx)


Lesenswert?

Oder versuch's mit dem Handbuch. Da steht das garantiert drin.

von Michael H. (morph1)


Lesenswert?

const __attribute__((space(auto_psv))) unsigned char xyz;

von Camel C. (camelcoder)


Lesenswert?

ah ok, wenn ich direkt nach '__attribute__((space(auto_psv)))' im C30 
handbuch suche find ichs ...
aber da kommt doch jemand ohne pic erfahrung nich drauf, dass das 
kapitel: "Defining Data for Managed PSV Access" was mit "variablen im 
programmspeicher ablegen" zu tun hat ...

ich glaub, ich seh trotzdem grade noch nicht so ganz durch ...
kann ich darauf dann ganz normal zugreifen? also:
1
//konstantes array definieren:
2
const __attribute__((space(auto_psv))) unsigned char myarray[2] = {0x00,0xff};
3
4
//selbiges lesen:
5
unsigned char mychar;
6
mychar = myarray[0];
7
8
//schreiben auch möglich?
9
myarray[1] = mychar;

von Michael H. (morph1)


Lesenswert?

ja kannst du, das macht dir das PSV, dessen funktion allerdings im 
handbuch gut beschrieben ist.

das mappt dir virtuell die daten ins ram, brauchst also nicht wie beim 
c18 da herumeiern und alle funktionen doppelt schreiben :)

von Camel C. (camelcoder)


Lesenswert?

dann mal ein dickes superdanke für die antwort!!

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.