Problem mit C18 compiler von Microchip

OP #878337
Lesenswert?

Hallo zusammen,

Ich wollte heute ein Programm für Temperaturberechnung in C18 schreiben 
für den PIC18. Hab mir die Student Version geholt und installiert.
Nur mit dem C18 hab ich Problem wenn ein DoppeltArray mit 100 
Speicherbereiche defenieren will, spuckt mir Compiler ein Fehlermeldung 
"Error [1300] stack frame too large".
Hat jemand damit Erfahrung?  Kann es vielleicht wegen Demoversion sein?
Ein Teil meines Codes  finden Sie im Anhang.

Danke!
Angehängte Dateien:
#878350
Lesenswert?

> Kann es vielleicht wegen Demoversion sein?

Nö, definitiv nicht. Die Demo arbeitet für 30 Tage wie die gekaufte 
Version und danach lassen sich nur die höheren Optimierungsstufen nicht 
mehr nutzen.

Die Fehlermeldung sieht für mich eher danach aus, als ob für das Array 
nicht genügend Speicherbereich verfügbar ist.
Vielleicht mal mit Speichermodell large probieren.
Gast #878437
Lesenswert?

>Und was heisst es 800 Byte, das ist doch gar nichts. Wieso funktioniert
>es dann mit CCS compiler? Können Sie mir sagen was ich machen soll?

1. Bleib bei CCS ?
2. Array nicht lokal in der Funktion anlegen, sonst landet es auf dem 
Stack
3. Array global im RAM anlegen (wird auch nicht klappen wegen des 
Standard Linkerscripts, es sei denn du änderst es)
4. Wenn Array konstante Werte enthält einfach ins Flash legen

const rom float  utab[100][2] = ....
OP #879129
Lesenswert?

Vielen Dank.

Das Problem habe ich gelöst indem ich alle Werte als Globalvariable 
defeniert habe.

holger wrote:
>>Und was heisst es 800 Byte, das ist doch gar nichts. Wieso funktioniert
>>es dann mit CCS compiler? Können Sie mir sagen was ich machen soll?
>
> 1. Bleib bei CCS ?
> 2. Array nicht lokal in der Funktion anlegen, sonst landet es auf dem
> Stack
> 3. Array global im RAM anlegen (wird auch nicht klappen wegen des
> Standard Linkerscripts, es sei denn du änderst es)
> 4. Wenn Array konstante Werte enthält einfach ins Flash legen
>
> const rom float  utab[100][2] = ....

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