PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Simulator



Bulldozer
04.03.2010, 17:12
Hallo zusammen,

ich habe eine Variable deklariert und möchte Ihren Verlauf im Simulator und "watch" anschauen. Unter value steht aber immer nur "lacation not valid". Was mache ich falsch?

Meine Variable habe ich folgendermaßen definiert:

.....

int Input1 , Input2;

....

Hat jemand ne Idee?

RedBaron
04.03.2010, 19:10
Moin,

wahrscheinlich hat der Compiler ein Register zum speichern benutzt.

Besserwessi
04.03.2010, 19:21
Das mit dem rgister sehe ich auch so.

Um die Variable dennoch im Simulator zu verfolgen, kann man für die Simulation den Code ohne Optimierung übersetzten. Wenn das nicht geht (z.B. wegen delay), hilft es oft wenn man die Variablem als Volatile definiert.

Stefan0985
05.03.2010, 08:36
Ich hab zumindest ein ähnliches Problem.
Ich benutze AVR Studio um eine Atmega128 zu programmieren.
Ich hab alle delay sachen rausgeschmissen, habe optimization auf -O0 gestellt (statt -Os zuvor). aber trotzdem macht mein Programm nicht was es machen soll wenn ich "build and run" klicke, steht da zum beispiel x=0x004; wo der gelbe pfeil hinzeigt nimmt x irgendein Wert an und nicht 0x004. Oder ALLE variablen ändern sich zugleich zu irgendeinem x-beliebigen Wert wenn ich mit F10 oder F11 weiterklicke. Oder ein array nimmt für alle felder den selben Wert an wenn da steht arr1[1]=0xFF; steht überall FF. zum verzweifeln.
ich habe in meinem programm variablen auch als uint32_t und uint16_t oder unsigned char definiert, aber das dürfte doch kein problem sein oder? und ein array uint16_t mit 8192 Werte. (ich denke nicht, dass, das problem hierbei liegt, ich wollte nur noch ein paar infos zusätzlich geben)

danke schon mal

Besserwessi
05.03.2010, 10:02
Ein Array mit 8192 Werte zu je 2 bytes braucht kBytes an Speicher. Das ist schon mehr als der Mega128 hat. Danach muß man sich über fast nichts mehr wundern, außer natürlich ein funktionierende Programm.

Wie der Simulator eine Überlauf beim RAM behandelt weiss ich nicht, aber dier konstanten Werte FF wären eine logische Möglichkeit.

Jaecko
05.03.2010, 18:37
Wenn der Monsterarray "global", also ausserhalb einer Funktion deklariert wurde, müsste doch der Compiler das anzeigen, dass mehr als 100% data belegt sind.