C18 Compiler speicheradresse manuell festlegen

Gast #2640175
Lesenswert?

Hallo

Ich habe ein Pic Programm, bei dem ich zwei 256 Byte grosse Arrays habe. 
Sobald ich das Programm compilieren möchte kommt bei mir folgende 
Fehlermeldung:

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

Der Fehler kommt, weil die Arrays zu gross sind(wenn die Arrays kleiner 
sind geht es), obwohl der Pic knapp 4Kbyte speicher hat (Pic 18f4620) 
und ich sonst nicht viel Speicher brauche.

Nun möchte ich mal versuchen ob es geht, wenn ich die Speicher adressen 
der Arrays manuell vergebe.
Der Pic hat im RAM 15 Banken, mit je 256 Byte speicher. Wenn ich es 
jetzt irgendwie hinbekomme, dass z.B.Bank10 für Array1 ist und Bank11 
für Array2 ist, könnte es vielleicht gehen. Da das Problem 
wahrscheinlich daran liegt, dass der Pic innerhalb von einem Array die 
Bank nicht umschalten kann und der Compiler zu blöde ist das Array in 
eine Eigene Bank zu speichern.

Weiss jemand, wie ich mit dem C18 Compiler Speicheradressen von 
Variablen manuell festlegen kann?

liebe Grüsse
David
#2640465
Lesenswert?

David schrieb:

> Weiss jemand, wie ich mit dem C18 Compiler Speicheradressen von
> Variablen manuell festlegen kann?

Ja. Dein Compiler-Handbuch. Das befindet im "doc" Unterversichnis des 
C18 Installationsverzeichnisses und heißt hlpC18ug.chm. Da darfst Du 
ruhig reinschauen, das kostet nichts extra.

Da gehst Du dann auf "Suchen, tippst "Locating Data" ein, und wählst als 
Thema "Locating Data". Da steht dann genau, wie es geht.

fchk
Gast #2641310
Lesenswert?

Frank K. schrieb:
> Ja. Dein Compiler-Handbuch. Das befindet im "doc" Unterversichnis des
>
> C18 Installationsverzeichnisses und heißt hlpC18ug.chm. Da darfst Du
>
> ruhig reinschauen, das kostet nichts extra.
>
>
>
> Da gehst Du dann auf "Suchen, tippst "Locating Data" ein, und wählst als
>
> Thema "Locating Data". Da steht dann genau, wie es geht.

Cool Danke für die Hilfe
#2939299
Lesenswert?

David schrieb:
> "far ... array[256]" hat nichts gebracht. Die Compiler-Option war schon
> auf Large Data modell(all Ram Banks). Hat beides nichts gebracht.


Hallo ich hab auch das gleiche Problem:(
dass ich ein Array mit 256 Komponennten brauche aber der Compiler die 
selbe Fehlermeldung bringt,

wäre super wenn mir jemand sagen könnte wie/ wo ich die Einstellung
 Large Data modell einstellen kann

danke im Voraus für jede Hilfe

mgf
Alex
#2939411
Lesenswert?

Wie groß ist jede einzelne Variable? Byte, Int, Long, Float?? Ich kenne 
den Compiler und Controller nicht, aber eventuell kann er ein Array nur 
am Stück in eine Bank packen. Mit int Array[256] braucht er 512 Bytes, 
also mehr als eine Bank...
Versuche mal das Array so lange zu verkleinern, bis es nicht mehr 
knallt.
Bei welcher Größe ist das erreicht?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren