Hallo, ich kenne mich mit dem DEbugger noch nicht aus. Arbeite seit gestern das erste Mal damit. Könnt ihr mir sagen, warum dieser abbricht, wenn ich F_CPU definiere, so wie im Bild zu sehen? Wenn ich F_CPU weglasse, dann arbeitet der DEbugger weiter. Ich würde mich über Hilfe sehr freuen. Viele Grüße und noch einen schönen Donnerstag Morgen wünscht Matthias.
Im Debugger sind die Delay-Funktionen nur extrem schwierig zu handhaben. Du solltest mit Breakpoints an bestimmten Stellen im Code arbeiten. Dann klappt das auch mit den delay-Funktionen einigermaßen. MfG Marius
Marius Wensing schrieb: > Im Debugger sind die Delay-Funktionen nur extrem schwierig zu handhaben. > Du solltest mit Breakpoints an bestimmten Stellen im Code arbeiten. Dann > klappt das auch mit den delay-Funktionen einigermaßen. > > MfG > Marius Hallo Marius, Danke für Deine schnelle Antwort. Ich habe es nur noch nie hinbekommen, das er an einem Brakpoint auch anhält. Mache ich da etwas falsch? Ich gehe aufs Menue Debug und wähle Start dEbugging and brake. Dann kann ich aber nur einzelschritte über Step into (F11) machen, damit er zur nächsten Zeile springt. Damit hat er noch nicht beim Breakpoint gestoppt. Gehe ich auf Continue (F5), dann rennt er trotz breakpoint durch. Das Einführungsvideo und die Hilfe gibt darüber auch keinen Aufschluss. Ich hoffe, Du kannst mir auch da weiter helfen. Viele Grüße, Matthias.
Bist du dir sicher, dass der Controller den Breakpoint überspringt? Vielleicht hast du ja auch eine Endlosschleife in der lcd_ini oder der Keypad-Einleseroutine. In einem solchen Fall hilft es zum Beispiel den Debugger anzuhalten und zu schauen, wo sich der Programm-Zähler befindet. Mit dem Disassembly deines Programms (lss- und map-Datei) kannst du dann sehen, wo es hakt. Bedenke außerdem, dass die delay-Routinen ohne Optimierung nicht richtig arbeiten. Das Debugging ist aber bei eingeschalteter Optimierung nicht unbedingt spaßig, also testweise ausschalten. MfG Marius
Marius Wensing schrieb: > Bist du dir sicher, dass der Controller den Breakpoint überspringt? > Vielleicht hast du ja auch eine Endlosschleife in der lcd_ini oder der > Keypad-Einleseroutine. In einem solchen Fall hilft es zum Beispiel den > Debugger anzuhalten und zu schauen, wo sich der Programm-Zähler > befindet. Mit dem Disassembly deines Programms (lss- und map-Datei) > kannst du dann sehen, wo es hakt. > > Bedenke außerdem, dass die delay-Routinen ohne Optimierung nicht richtig > arbeiten. Das Debugging ist aber bei eingeschalteter Optimierung nicht > unbedingt spaßig, also testweise ausschalten. > > MfG > Marius Hallo Marius, nochmals vielen DAnk für Deine Hilfe. Ich hätte gedacht den DEbugger zu benutzen ist viel einfacher. Breakpoint festlegen, start debugging and break anklicken und der debugger hält an dem breakpoint einfach an. Ab da kann ich dann meine Variablen und Ports überprüfen, aber nein, da hängt ja noch viel mehr dran. Endlosschleifen, ja die habe ich im Programm drin, denn es wird immer wieder wiederholt und dreht sihc im kreis > Bist du dir sicher, dass der Controller den Breakpoint überspringt? das bin ich mir, daran werde ich aber denken, wenn ich den brakpoint setze, das ich den auch erreiche. im Moment schmeisst mich der debugger bei einer delayroutine raus. siehe Fehlermeldung Bild. wo sich der Programm-Zähler > befindet. Mit dem Disassembly deines Programms (lss- und map-Datei) > kannst du dann sehen, wo es hakt. wo kann man das sehen wo sichder Zähler befindet? was ist denn bitte disassembly? Viele Fragen, wenn Du magst, können wir das auch persönlich per Telefon und Teamviewer besprechen. Ich zahle auch gern für die Bemühungen. mathes.hamann@googlemail.com Viele Grüße, Matthias.
Also laut deinem Debugger befindest du dich irgendwo in einer Floating-Point Rechnung, die vermutlich aus den Delay-Funktionen aufgerufen wird. _mulsf ist eine Floating-Point Multiplikation. Kannst du mal deinen Source-Code posten? Die Floating-Point-Rechnung sollte herausfliegen, wenn du in den Projekt-Einstellungen die Compiler-Optimierung aktivierst. Ist zwar nicht unbedingt so toll zu debuggen, sollte aber zeigen, ob du dann weiter kommst bis zum Breakpoint. MfG Marius
Marius Wensing schrieb: > Also laut deinem Debugger befindest du dich irgendwo in einer > Floating-Point Rechnung, die vermutlich aus den Delay-Funktionen > aufgerufen wird. _mulsf ist eine Floating-Point Multiplikation. Kannst > du mal deinen Source-Code posten? > > Die Floating-Point-Rechnung sollte herausfliegen, wenn du in den > Projekt-Einstellungen die Compiler-Optimierung aktivierst. Ist zwar > nicht unbedingt so toll zu debuggen, sollte aber zeigen, ob du dann > weiter kommst bis zum Breakpoint. > > MfG > Marius Hallo Marius, ist alles ganz schön schwierig und sehr schwer sich das selber herzuleiten. Gibt es für sowas eigentlich eine richtige Anleitung? anbei mein Sourcecode. Ist arbeite gerade daran meine Tastaturroutine zu optimieren. > Projekt-Einstellungen die Compiler-Optimierung aktivierst. wo man das aktiviert weiß ich auch nicht. vielleicht liegt es ja schon daran. Viele Grü´ße, Matthias.
Die Optimierungen findest du im AVR Studio 5 unter Project - ... Properties - Optimization. Da musst du von "None" auf "Optimize for Size" umstellen. Dann funktionieren auch die delay-Routinen einwandfrei. Du solltest deinen Programmcode erstmal überarbeiten. Da sind diverse Fehler drin: - Zum einen inkludiert man keine C-Dateien... Schreib dir für jedes Modul eine entsprechende Header-Datei. Den Rest übernimmt der Linker. - Außerdem hast du in deinen Taster-Routinen ein "goto" drin, was absolut verpönt ist. Wenn ich heute Abend etwas Zeit finde, schaue ich mir das Programm nochmal im Detail an und schick dir nen bisschen verbesserten Quelltext. MfG Marius
Marius Wensing schrieb: > Die Optimierungen findest du im AVR Studio 5 unter Project - ... > Properties - Optimization. Da musst du von "None" auf "Optimize for > Size" umstellen. Dann funktionieren auch die delay-Routinen einwandfrei. > > Du solltest deinen Programmcode erstmal überarbeiten. Da sind diverse > Fehler drin: > - Zum einen inkludiert man keine C-Dateien... Schreib dir für jedes > Modul eine entsprechende Header-Datei. Den Rest übernimmt der Linker. > > - Außerdem hast du in deinen Taster-Routinen ein "goto" drin, was > absolut verpönt ist. > > Wenn ich heute Abend etwas Zeit finde, schaue ich mir das Programm > nochmal im Detail an und schick dir nen bisschen verbesserten Quelltext. > > MfG > Marius Hallo Marius, vielen Dank für Deine Hilfe. jetzt arbeitet der Debugger, dank der Einstellung optimize for size. inkludieren von C_dateien? anders wüßte ich nciht wie das geht Was ist denn für jedes Modul eine entsptrechende Headerdatei? Kann mir nur vorstellen Add new Item und darin den Code zu schreiben, vielleicht meinst Du ja das? hatte keinen anderen Ausweg mehr als goto gefunden, das war dann sehr bequem. ich will meine Tastaturfunktion so abändern, dass man diese mit einem Übergabeparameter 1 aufrufen kann, wenn 1 dann läuft die Funktion solange in einer SCleife bis ein Zahlenwert gedrückt wurde. Desweiteren soll sie keine Eingaben annehmen, wenn die Taste nicht losgelassen wurde, egal ob die Tastaturroutine mehrmals in einer SCleife aufgerufen wird. Wurde der Taster nicht losgelassen, gibt es auch keine neue Übergabe des Tastenwertes. Viele Grüße, Matthias.
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.