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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.