Gast
#1461279
Hallo, Ich habe hier ein etwas umfangreicheres Programm programmiert welches auf einem MEGA128 laufen soll. Ich verwende AVR Studio 4.17 Build666 mit GCC Plugin WinAVR-20090313. Etwas zu meinem Projekt, ich spreche periodisch externe Geräte per RS485 an (Master-Slave Mode) je mach ACK wird eine Aktion gestartet desweiteren lese ich eine Tasterturmatrix auch periodisch aus. Ein angeschlossenes Display ist mit einer Displaysteuerung versehen in der ich Programmparameter anpassen kann. Desweiteren habe ich noch 5 galvanisch getrennte Eingänge und 5 Relaiausgänge. Das ganze Programm ist Interruptgesteuert USAT,Timer usw. Ich habe den Ablauf als Tasks programmiert die wiederum auf Timer reagieren die gepullt werden in der ISR. Da ich bis jetzt noch keine Platzprobleme im Flash hatte habe ich immer mit -O0 übersetzt das auch das debuggen per JTAG vereinfachte. Nun habe ich jedoch das Problem das der Flash nun zu 96% voll ist was mit der recht umfangreichen Menusteuerung zu tun hat da die Strings im Flash liegen. Ich habe nun versucht die Optimierung von -O0 auf -Os umzustellen. Dabei hagelte es einige Fehler die ich mit einem Eintrag in Projekt->Config.Options->Custom Options->Custom Compilation Options "-lc" und "-lm" beheben konnte. Dies wurde hier im Forum diskutiert im Bezug mit der math.h oder so. Obwohl ich dies nicht verwende habe ich die Einstellungen mal probiert und sofort keine Fehler mehr. Wenn ich jedoch das Programm übersetze und in der uC übertrage funktionieren einige Programmteile nicht mehr. zB. die Tasterturmatix kann nicht mehr verwendet werden. Wenn ich nun in den debug mode gehe um mir die Variablen anschauen zu können zeigt mir Watch die Variable mit "Location not valit" an obwohl diese vier Zeilen oberhalb mit unsigned char variable deklariert wurde. Stelle ich die Optimierung wieder auf -O0 funktioniert wieder alles wunderbar. Hat jemand eine Idee oder einen Tipp an was es liegen könnte. Ich beschäftige mich sein ca. 1.5 Jahren mit uC und bin daher nich so der Profi. Ebenso bin ich mir nicht sicher ob ich in Config.Options alle richtig eingestellt habe. Danke Thomas