Du hast wahrscheinlich einen Optimierungslevel >O0 eingeschaltet. Stell' mal in den Projekteinstellungen -O0 als Optimierungslevel ein, dann sollte es eigentlich gehen.
Hallo zusammen!
Bin gerade dabei von Assembler auf C umzusteigen. Hab jetzt das erste Testprogramm geschrieben und wollte mir mal im AVR Studio ansehen was passiert. Das Programm scheint soweit zu laufen. Das Anzeigen der Variablen funktioniert nicht richtig (glaub ich). Das Programm sieht folgendermaßen aus.
#include <avr/io.h>
int main(void)
{
int test = 0;
while(1)
{
for(int a = 0 ; a < 30; a++)
{
test = test + 1;
}
PORTB = ~PORTB;
}
}
Die beiden Variablen test und a hab ich ins Watchfenster gezogen. Genau da ist das Problem.
Problem 1:
Bei der Variablen Test wird ständig "Location not Valid" angezeigt. Warum?
Problem 2:
Die Variable a wird zu Beginn der for Schleife mit 30 initialisiert und dann bei jedem Durchlauf dekrementiert. Müsste es nicht normalerweise umgekehrt sein?
Mach ich da was falsch oder kann man sich im AVR Studio die Variablen nicht so anzeigen lassen wie sie im C Code geschrieben sind? Falls es doch geht könnte mir vielleicht jemand sagen wie.
AVR Studio Version : 4.11 built 401
Danke im Vorraus für eure Hilfe.
Du hast wahrscheinlich einen Optimierungslevel >O0 eingeschaltet. Stell' mal in den Projekteinstellungen -O0 als Optimierungslevel ein, dann sollte es eigentlich gehen.
Nö, wieso? a wird nirgens verwendet und die Schleife 30 mal durchlaufen. Das ist die Semantik. Ob a im Endeffekt hochgezählt wird oder nicht, ist für den Programmablauf unerheblich, und ein Compiler kann das ändern, wenn er denkt, es ist günstiger so (Ist es auch).Zitat von Michael S.
Disclaimer: none. Sue me.
Danke für die Antworten. Es lag wirklich am Optimierunglevel. Hab jetzt mal auf 0 gestellt und siehe da, es funktioniert.Du hast wahrscheinlich einen Optimierungslevel >O0 eingeschaltet. Stell' mal in den Projekteinstellungen -O0 als Optimierungslevel ein, dann sollte es eigentlich gehen.
MfG Michael
Lesezeichen