Hallo, Ich bin auf der Suche nach einer eleganten Debug-Möglichkeit mit AVR-Studio. Ich habe mehrere Dateien in meinem Projekt (main.c, lcd.c, uart.c usw.). Wenn ich jetzt das .elf-extrakt in AVR-Studio lade und debugge, bleibt der Debugger immer an verschiedenen Stellen hängen. Zum Beispiel dann, wenn er ein Busy-Flag aus dem LCD auslesen will, was es ja im Software-Debugger nicht gibt. Damit ich trotzdem debuggen kann, wollte ich jetzt mittels Compilerschaltern diese kritischen Stellen wie folgt umgehen: In meiner Datei main.c schreibe ich "#define SW_DEBUG" und direkt am Anfang der vermeintlichen Funktionen (wo der Debugger hängenbleiben würde) schreibe ich: #ifdef SW_DEBUG return; #endif Leider funktioniert das nicht. Habe ich da was nicht richtig verstanden? Der AVR-Studio-Debugger springt trotzdem in die so modifizierten Funktionen, obwohl ich den Compilerschalter gesetzt habe. Hat von Euch vielleicht einer eine Idee was ich falsch mache? Oder hat jemand eine andere Idee, wie man seine Software simulieren kann, auch wenn auf bestimmte Ereignisse von Außen gewartet wird. Eine Möglichkeit wäre sicherlich die entsprechenden Portpins des Simulators per Hand zu setzen, aber das ist mir zu aufwändig, da manchmal hunderte Male auf Busy Flags und anderes gewartet wird. Im vorraus besten Dank, Oliver
Wenn in main.c SW_DEBUG gesetzt wird, dann erfährt lcd.c nichts davon. Im Studio gibt es getrennte Profiles für Debug und Optim. In der Debug-Version schon im Studio das SW_DEBUG setzen, das kriegt dann jedes Modul mit.
Danke, das war mein Problem. Wenn ich SW_DEBUG in lcd.c setze funktioniert es wie gewünscht. Wie meintest Du den zweiten Teil Deiner Antwort? Wo kann ich im Studio SW_DEBUG setzen?
Menu Project/Config... Active Config...: "debug" auswählen oder erzeugen. Links "Custom Options" und -DSW_DEBUG anfügen.
Reden wir von dem selben Programm? Ich habe AVR Studio 4.12 und kann kein Menu Project/Config finden. Im Menü Projekt kann ich nur New,Open,Save,Close auswählen!? Welche Version meinst Du?
Menü: Project Gaanz unten: Configuration Options Darauf hin geht ein Dialog auf: Dort wählst du in der linken Leiste gaaanz unten die Custom Options aus und kannst daraufhin dem Compiler die Compilerflags mitgeben. Ein mögliches Compilerflag ist es, dass er beim compilieren deinen Switch von vorne herein vorgibt: -DSW_DEBUG Eine völlig andere Möglichkeit ist es, wenn du dir von hier http://www.helmix.at/hapsim/ den Simulator holst und nach dem AVR-Studio startest. Der Simulator verbindet sich dann mit dem WinAVR-Debugger und hängt dann ein virtuelles LCD (oder ein paar Led oder Taster) an die simulierten Ports an.
Hallo, sorry, das ich erst jetzt antworte! Ich habe meinen eigenen Bericht nicht mehr wiedergefunden. Hatte ihn die ganze Zeit im µC-Forum gesucht und nicht gefunden, aber egal. Jetzt weiß ich auch, warum ich die Settings für den Compilerswitch nicht finden konnte! Ich hatte im Studio nur das *.elf file geöffnet, welches ich mit WinAVR generiert habe. Ich wußte bis dato gar nicht, das ich im AVR-Studio neben Assembler auch die Möglichkeit der C-Programmierung habe. Liegt wohl daran, das ich die Umstellung von Assembler auf C über das Tutorial gemacht habe und da ist nur die Rede vom "Programmers Notepad" Auf jeden Fall freue ich mich riesig, dass ich im Studio auch alle Möglichkeiten habe, da ich aus Assemblerzeiten dran gewöhnt bin. Das mit dem Compilerflag funktioniert jetzt auch, obwohl ich nicht verstehe, was das "-D" vor meinem "SW_DEBUG" genau bedeutet- vielleicht define? Auf jeden Fall funktionierts! Die Sache mit dem LCD-Simulator habe ich jetzt auch versucht und muss sagen, dass das genau das ist, was ich schon immer vermisst habe! Hätte ich das schon früher gewusst, hätte ich mir einige Stunden am AVR-Simulator sparen können. Man lernt nie aus! Allerbesten Dank nochmal für die Hilfen! Oliver
In der Kommandozeile von gcc kannst Du mit der Option -D NAME ein Define machen. Das hat dieselbe Wirkung wie ein #define NAME Viel Spass, Stefan
> Das hat dieselbe Wirkung wie ein > #define NAME Genauer: wie ein #define NAME 1
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.