PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablenwerte in AVR Studio anzeigen



Michael S.
27.03.2006, 22:57
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.

ogni42
28.03.2006, 08:45
Du hast wahrscheinlich einen Optimierungslevel >O0 eingeschaltet. Stell' mal in den Projekteinstellungen -O0 als Optimierungslevel ein, dann sollte es eigentlich gehen.

SprinterSB
28.03.2006, 09:08
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?

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).

Michael S.
28.03.2006, 12:54
Du hast wahrscheinlich einen Optimierungslevel >O0 eingeschaltet. Stell' mal in den Projekteinstellungen -O0 als Optimierungslevel ein, dann sollte es eigentlich gehen.

Danke für die Antworten. Es lag wirklich am Optimierunglevel. Hab jetzt mal auf 0 gestellt und siehe da, es funktioniert.

MfG Michael