mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik pic18f8722 array speicher


Autor: marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo leute,

ich beschäftige mich seit kurzem mit einem pic18f8722. in meinem 
projektchen würde ich gerne werte in mehreren arrys speichern. der daten 
speicher sollte ja grösser als 3000 byte sein. von daher wäre es schön, 
wenn man eine arry wie folgt erzeugen könnte

typedef unsigned char  u8;
#define GROESSE 3000
u8 daten[GROESSE];

was scheinbar nicht funktioniert. denn der compiler meckert mit:


Error - section '.udata_pic18f18722.o' can not fit the section. Section 
'.udata_pic18f18722.o' length=0x00000200
Errors    : 1

hat jemand eine idee, wie ich denn ganzen datenspeicher oder vielleicht 
auch noch den programmspeicher als datenspeicher nutzen kann.

das kap. 6.4 im MPLAB_C18_Getting_Started habe ich mir durchgelesen und 
nicht so verstanden, das ich es umsetzten könnte.

einen schönen tanz in den mai!

marc

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hab hier eine etwas ältere Version vom "Getting Started", aber in 
diesem wird auf exakt dein Problem eingegangen. Weiß ich weil ich es 
auch mal hatte ;)

Kurz gesagt: standardmäßig kann der C18 nur mit maximal 255 Byte großen 
Arrays umgehen. Um das hinzubiegen muss man das Linkerskript anpassen, 
eine größere Datensektion anlegen und diese dann dem Array zuweisen. Ist 
aber dort recht gut beschrieben.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein kleiner Tipp: der 18F8722 hat nur knappe 4k RAM. Wenn du da 
schon 3k für einen Datenspeicher abziehst solltest du aufpassen das es 
nicht irgendwann (zu) eng wird.

Autor: marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe noch etwas rumprobiert...

wenn man das arry in 13 * 256 bytes teilt kommt man auf 3328 bytes

typedef unsigned char  u8;

#pragma udata data1
u8 data1[256];
...
#pragma udata data13
u8 data13[256];

ob das der schönste weg ist mag ich mal bezweifeln. damit reize ich aber 
den speicher fast ganz aus.
vielleicht kennt ja einer einen schöneren weg!

danke

marc

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Machs im Linkerskript

ALT:
//DATABANK   NAME=gpr1       START=0x100          END=0x1FF
//DATABANK   NAME=gpr2       START=0x200          END=0x2FF
//DATABANK   NAME=gpr3       START=0x300          END=0x3FF
//DATABANK   NAME=gpr4       START=0x400          END=0x4FF

//DATABANK   NAME=gpr5       START=0x500          END=0x5FF
//DATABANK   NAME=gpr6       START=0x600          END=0x6FF
//DATABANK   NAME=gpr7       START=0x700          END=0x7FF
//DATABANK   NAME=gpr8       START=0x800          END=0x8FF

//DATABANK   NAME=gpr9       START=0x900          END=0x9FF
//DATABANK   NAME=gpr10      START=0xA00          END=0xAFF
//DATABANK   NAME=gpr11      START=0xB00          END=0xBFF

NEU:
DATABANK   NAME=gpr1       START=0x100          END=0xBFF

Entschuldige wenn ich das hier sage, aber C18 ist einfach
nur buggy und scheiße. Und ich weiß wovon ich rede.

Solche Klimmzüge muss man da oft machen:

// BytesPerCluster= BYTE_PER_SEC * secPerCluster; //this did not work 
with MCC18 !
 BytesPerCluster= BYTE_PER_SEC;
 BytesPerCluster *= secPerCluster;

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.