Gibt es im Atmel Studio 6 ein globales define, mit dem ich zu compilierzeit feststellen kann, ob das JTAG-Interface zum debuggen oder nur zu, Programmieren genutzt wird? Ich programmiere den mega1284P per JTAG ohne zu debuggen. in dem fall kann ich per software das JTAG-Interface im AVR abschalten, weil ich die Pins anderweitig benötige.wenn ich nun aber am Debuggen bin, muss ich die Zeilen in denen ich JTAg abschalte auskommentieren. Dies möchte ich nun automatisieren!
Das kann eigentlich nicht funktionieren. Wenn du debuggst wurden deine Sourcen ja schon lange kompiliert, sprich es ist zu spät da irgendwelche #defines zu setzen Ich weiss nicht, ob man im Atmel Studio leicht zwischen einerm Build Release und einem Debug Release wechseln kann, so wie es zum Beispiel im Visual Studio geht(ich befürchte aber das es diese Option nicht gibt) Dort werden dann je nach gewähltem Release Mode unterschiedliche Defines gesetzt, und du könntest z.B. im Release Modus das JTAG Interface deaktivieren
Du hast in einem header file
1 | define DEBUG // Bei Normalbetrieb auskommentieren!! |
1 | #ifn defined DEBUG
|
2 | |
3 | // Hier kommt alles rein, was während dem Debuggen nicht gebraucht wird
|
4 | |
5 | #endif
|
Bugger schrieb: > #ifn defined DEBUG > // Hier kommt alles rein, was während dem Debuggen nicht gebraucht wird > #endif Das steht natürlich dann nicht im headerfile, sondern im c file
Max schrieb: > wenn ich nun aber am Debuggen bin, muss ich > die Zeilen in denen ich JTAg abschalte auskommentieren. Musst du nicht: das JTD-Bit muss ja in einer zeitlichen Abfolge zweimal hintereinander geschrieben werden, damit die Abschaltung wirksam wird. Wenn du nun einen Breakpoint auf den ersten dieser Befehle setzt und dann einzelschrittweise durch die zwei Zeilen gehst, dann ist die Zeitbedingung nicht mehr erfüllt, und die Abschaltung wird nicht wirksam.
das is ne gute idee, das werd ich machen. ich hatte nur die idee, das vielleicht von der entwicklungsumgebung ein globales define vorhanden sein könnte, mit dem ich beim compilieren schon erkennen kann ob debuggt werden soll oder nur geflasht
Ich glaube, Atmel Studio unterscheidet in der Tat zwischen "Release" und "Debug", weil sie das von der Microsoft-Umgebung so geerbt haben. Ob sie davon abhängig auch ein #define setzen, weiß ich nicht. Nur: letzten Endes wird man früher oder später immer mal gezwungen sein, exakt das fertige Programm zu debuggen, und nicht eins, was sich irgendwie davon dann doch wieder unterscheidet. Spätestens am Tag X, an dem entweder die Debug-Version gar nicht mehr in den Flash passt, oder aber die Debug-Version im Prinzip läuft (nur zu viele Ressourcen verbraucht), die Release-Version beim Kunden aber doch bloß nicht. Von der Warte her bin ich immer ganz vorsichtig mit solchen separaten Debug-Builds, und debugge lieber gleich die Version, die dann später auch produktiv werden soll. Eine weitere Möglichkeit, in der Firmware zu entscheiden, ob man das JTAG abklemmen soll oder nicht wäre es, wenn man noch einen freien Pin als Eingang übrig hat: den Pull-up dafür konfigurieren, und zum Debuggen dann den Pin auf low ziehen. Bevor die Firmware das JTD setzt, prüft sie, ob der Eingang auf low steht oder nicht.
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.