Forum: Mikrocontroller und Digitale Elektronik Ram-Bereich PIC 18F2550


von Hubert (Gast)


Lesenswert?

Hallo,
ich habe eine Frage zu dem PIC 18f2550. Und zwar hat dieser laut 2048 
GPR´s. Doch kann es sein, dass ich diese gar nicht alle benutzen kann? 
Denn wenn ich diese beschreiben möchte, sagt mir mein C18 Compiler ab 
der vierten Bank, dass diese Bereiche für Stack etc. reserviert seien. 
Kann das sein? Stehen mir wirklich nur die ersten 2,5 der 8 Bänke (also 
~ 670 Variablen) zur Verfügung?

LG Hubert

von Martin S. (drunkenmunky)


Lesenswert?

Ins Datenblatt hast du aber schon mal geschaut, oder?

Banks 4 through 7 of the data memory are actually
mapped to special dual port RAM. When the USB
module is disabled, the GPRs in these banks are used
like any other GPR in the data memory space.

When the USB module is enabled, the memory in these
banks is allocated as buffer RAM for USB operation.
This area is shared between the microcontroller core
and the USB Serial Interface Engine (SIE) and is used
to transfer data directly between the two.

von Hubert (Gast)


Lesenswert?

Sowet so gut, aber die 3. Bank müsste mir aber dann zur Vefügung stehen. 
Laut Datenblatt ist der "STACK" nur 32 Byte groß, ich sollte also noch 
über 220 Byte zur Verfügung haben. Doch C18 steht mir nicheinmal 1 
einziges Byte ab adresse 0x300 zu?

LG Hubert

von Martin S. (drunkenmunky)


Lesenswert?

Wo wird dir denn das angezeigt?

Was steht denn da wieviel RAM du insgesamt zur Verfügung hast? Wenn das 
stimmt, kann es dir in C doch egal sein, wo die Daten gespeichert 
werden.

von holger (Gast)


Lesenswert?

Du kannst dir eine eigene Linker Datei basteln

DATABANK   NAME=gpr2       START=0x200          END=0x2FF
DATABANK   NAME=gpr3       START=0x300          END=0x3FF

STACK SIZE=0x100 RAM=gpr3

Das änderst du dann in

DATABANK   NAME=gpr2       START=0x200          END=0x37F
DATABANK   NAME=gpr3       START=0x380          END=0x3FF

STACK SIZE=0x80 RAM=gpr3

Ob du dann mit dem Stack hinkommst musst du selber probieren.

von Hubert (Gast)


Lesenswert?

Okay und woher weiss ich wieviel Speicher der STACK enötigit, muss ich 
das ausprobierebn ob sich das Programm aufhängt??
Un noch eine Frage, darf ich die größe der Bänke einfach so beliebig 
verändern, könnte ich auch eine 1500 Byte große Bank erstellen und die 
anderen einfach weglassen?

LG Hubert

von Hubert (Gast)


Lesenswert?

Kennt sich niemand damit aus? Wäre echt fantastisch wenn ich das mit den 
Datenregistern verstehen würde.

LG Hubert

von Tom (Gast)


Lesenswert?

Hallo Hubert,
ich kann dir leider auch keine Antwort geben. Aber ich hoffe es findet 
sich jemand, denn das würde mich auch interessieren.

Gruß

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.