Ich will eine Zeiterfassung für eine Rennstrecke schreiben (Start/Zielzeiten). Bevor ich mir das teure Equipment leiste, will ich eigentlich vorher das ganz Programm mal über ne Konsole testen. Wie kann ich das denn simulieren? Oder kann ich sogar den Controler selbst simulieren? Das AVR-GCC Tutorial gibt da leider auch nichts drüber her.
Hab mich jetzt für den Simulator im AVR Studio entschieden. Zuerst wollte ich mal den Simulator testen, mit folgendem Programm: #include <avr/io.h> int main(void) { int a,b,c=0; a=0; b=5; while (a<b) { a++; c=a+b; } } Ich habe mir (ab der while Schleife) in jede Zeile nen Break-Point gesetzt, allerdings reagiert der Debugger nicht auf diese. Der gelbe Pfeil springt direkt auf die letzte Zeile. Why?
Optimierung an? Der Compiler könnte die Schleife entfernen, da das Ergebnis von c vorrausgesagt werden kann.
Auch wenn ich die Zeile für die c-Berechnung ausblende, passiert das Gleiche... Wie schalte ich die Optimierung aus?
mach halt irgendwas mit dem Ergebnis, so dass es nicht wegpoptimiert werden kann. Zb auf einem Port ausgeben. Dein Programm ist mommentan ziemlich sinnlos, der Compiler merkt das und optimiert so ziemlich alles weg. Den Pfeil kannst du nicht dorthinsetzen, weil von deinem Programm in der Ausführung nichts mehr übrig bleibt.
1 | #include <avr/io.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | int a,b,c=0; |
6 | |
7 | DDRB = 0xFF; // kompletrten Port D auf Ausgang setzen |
8 | |
9 | a=0; |
10 | b=5; |
11 | |
12 | while (a<b) |
13 | {
|
14 | a++; |
15 | c=a+b; |
16 | |
17 | PORTD = c; // und c auf dem Port D ausgeben |
18 | }
|
19 | }
|
Jetzt kann er zumindest nicht mehr alles wegoptimieren, weil die Ausgabe auf dem Port erfolgen MUSS. Entweder das oder du schaltest die Optimierung ab.
Ok, das funzt mit dem debuggen. Und wie Optimierung will ich definitiv ausgeschaltet haben, wie geht das?
Eigentlich willst du die Optimierung beim realen Programmieren nicht abgeschaltet haben. Aber seis drum. Welche Entwcklungsumgebung verwendest du? Im AVR-Studio stellst du die Optimierung bei den Projekt-Optionen auf -O0 (das ist (Ohhh null)
Karl Heinz Buchegger schrieb: > Eigentlich willst du die Optimierung beim realen Programmieren nicht > abgeschaltet haben. Das stimmt, aber zum debuggen ist es für mich als Anfänger auch ok. > Welche Entwcklungsumgebung verwendest du? AVr Studio 5. Habe die Einstellungen gefunden. DANKE VIELMALS
Zum eigentlichen Thema zurück: Kann ich ne Ausgabe über Konsole generieren? Mit simplen printf scanf Befehlen?
Und lies dir das AVR-GCC-Tutorial durch. Ein µC, wie der AVR, programmiert sich ein wenig anders als dein Desktop PC. Insbesondere, für den Anfang, willst du nicht int verwenden, wenn du mit einem uint8_t auch durchkommst.
Karl Heinz Buchegger schrieb: > Den Pfeil kannst du nicht dorthinsetzen, weil von deinem Programm in der > Ausführung nichts mehr übrig bleibt. Ganz am Rande: Das hat eigentlich nix miteinander zu tun: Ob der Code optimiert wurde oder nicht — solange die entsprechende Debug-Infos 1) erzeugt werden und 2) adäquat vom Debugger verarbeitet werden kann man Pfeil auch dorthin setzen, wo der Code wegoptimiert ist (weil die entsprechende Debug-Info nämlich noch da ist und ausgewertet wird). Oder man kann sich den Wert wegoptimierter Variablen anzeigen lassen. 1) ist für GCC der Fall — vorausgesetzt, man bedient ihn richtig 2) ist für den AVR-Studio-Debugger offenbar nicht gegeben. Was verwundert, da die neue 5-er Version doch sooo viel Neuerungen bringen soll...
Daniel Brunn schrieb: > Das stimmt, aber zum debuggen ist es für mich als Anfänger auch ok. Dann solltest du allerding alles mit delay_us() und delay_ms() mit größter Vorsicht genießen. Die mögen gar nicht, wenn die Optimierung abgeschaltet ist (siehe Kommentar in delay.h).
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.