www.mikrocontroller.net

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


Autor: Camel Coder (camelcoder)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>landen const variablen im flash?

Nö. Aber const rom.

Autor: Camel Coder (camelcoder)
Datum:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder versuch's mit dem Handbuch. Da steht das garantiert drin.

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
const __attribute__((space(auto_psv))) unsigned char xyz;

Autor: Camel Coder (camelcoder)
Datum:

Bewertung
0 lesenswert
nicht 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:
//konstantes array definieren:
const __attribute__((space(auto_psv))) unsigned char myarray[2] = {0x00,0xff};

//selbiges lesen:
unsigned char mychar;
mychar = myarray[0];

//schreiben auch möglich?
myarray[1] = mychar;

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Camel Coder (camelcoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann mal ein dickes superdanke für die antwort!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.