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!
> 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.
>"Error [1300] stack frame too large".
Da hat er wohl recht. Dein Array ist immerhin 800 Bytes groß ;)
holger wrote: >>"Error [1300] stack frame too large". > > Da hat er wohl recht. Dein Array ist immerhin 800 Bytes groß ;) 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?
>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] = ....
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] = ....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.