mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Debuggen für Dummies


Autor: Bernd Bubble (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe in der Programmierung (insbesondere bei uCs) wenig Erfahrung und 
bin heute das erste mal bei Debugging. (uC: ARM von Philips  Tool: Keil 
uVision)

Bei einem bestehenden Projekt läuft ein Timer-Interrupt alle 1ms ab.
Gleichzeit sollte einmal in der Sekunde von ein UART Interrupt 
stattfinden (nicht zeitgesteuert sondern ankommendes byte von externem 
Gerät).

Mir fehlt wohl noch ganz übel das Verständnis, aber wie lässt sich sowas 
anständig debuggen? Wenn ich versuche durch den Code zu steppen...ist es 
doch unwahrscheinlich, dass ich einmal den UART-Interrupt Handler 
reinfalle.
Der müsste doch andauernd damit beschäftigt sein die Interrupts 
abzuarbeiten?

Gruß,
Bernd

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Breakpoint(s) in die UART-ISR?

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nein, da hast du recht, mit Interrupts debuggen ist das nicht so leicht 
:-)
Wenn du single steps machst (gleich, ob ASM oder HL (C)), sind die 
Interrupts ausgeschaltet.

Wenn du interrupts debuggen möchtest, kannst du einen Breakpoint an die 
Stelle im Interrupthandler setzen, wo du anhalten möchtest. Beim LPC21xx 
ist ev. die UART_Interrupt_Function - entry interessant, weil du da ja 
noch nach der UART source fragen musst (z.B. RT_INT).

In der Interrupt Routine kannst du dann nach belieben herumsteppen, und, 
falls du dir im gleichen Kontext etwas nochmal ansehen möchtest, den 
Programm counter (rechte maustaste) neu setzen (dies sollte man nur 
innerhalb einer funktion tun!).


VG,
/th.

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bedenke:
Der ARM7 (z.B. LPC21xx, SAM7, STR7) unterstützt max. 2 HW-Breakpoints, 
wovon einer idR. fürs Steppen (in C) gebraucht wird. Brauchst du mehr, 
musst du dein Programm ins RAM linken & dort debuggen.

Spielst du mit einem Cortex-M3 herum (z.B. LPC17xx, STM32, SAM3), kannst 
du max. 6 HW-BPs setzen, dazu noch Watchpoints (z.B. wenn auf eine Var 
geschrieben/gelesen/beides wird, oder wenn die Variable dazu noch einen 
bestimmten Wert annimmt).

Btw: µV3 oder µV4?


Welchen LPC verwendest du? Hab da ev. noch was schönes für den UART für 
LPC2140 (sollte auch auf 2130 laufen).


VG,
/th.

Autor: elko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, ich hab eigentlich die gleiche Frage wie Bernd. Wie kann ich einen 
Interrupt bei µVision3 für den µC AN2131SC simulieren? Mein Problem wird 
übrigens hier genauer erläutert... 
Beitrag "Interrupt stört Programmablauf und umgekehrt?"

Viele Grüße,
elko

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie kann ich einen Interrupt bei µVision3 für den µC AN2131SC simulieren?

Hi,

ich kenn den Controller jetzt gerad nich, aber der Simulator in uVision 
unterstützt für alle Controller aus der Device Database fast alle 
OnChip-Peripherals. D.h. wenn diese Interrupts verwenden werden diese 
auch simuliert (z.B. UART-RX interrupt).

D.h. du kannst das genauso simulieren wie auf der HW laufen lassen.


VG,
/th.

Autor: elko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, und wie kann ich dann einen Interrupt (genauer: einen Timer) beim 
Debuggen auslösen oder überwachen? Weil ich z.Zt vermute, dass die ISR 
des Timers das Hauptprogramm aus dem Konzept bringt.

Viele Grüße,
elko

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genaugenommen bringt jeder interrupt dein "Hauptprogramm" aus dem 
konzept, sonst wärs kein interrupt :-)

Setze einfach einen BP zu Beginn deiner ISR, und starte das Programm 
(run).
Wenn ein Interrupt kommt (z.B. Timer), dann wird die ISR angesprungen 
und das Prog hält an deinem BP.

Bedenke, dass die Simulation ev. etwas langsamer läuft als die real HW. 
Wie schnell, das kannst du am Timer (den man per re. Maustaste auch 
resetten kann, zum messen) im untersten bereich (unten rechts) des 
µVision fensters erkennen.


VG,
/th.

Autor: elko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, das ist nett :D (ich meine, auf die Idee ganz da unten zu schauen 
wäre ich nicht gekommen...)
aber leider kommt mein Programm nie in der isr an... Wenn ich es auf dem 
Chip laufen lasse, kommt es in die isr. Was kann da falsch sein?

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, mal klartext:
- welcher LPC?
- welche ressource?

lösch ma aus deinem projekt alle object-files und schicks (komplett! hab 
kein bock das erst wieder hinzufummeln :-) ) als zip an:
thorsten.de.buhr at_ arm _dot com

Ich schau mal kurz drüber.


VG,
/th.

Autor: Bernd Bubble (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey Thorsten,

danke für deine Hilfsbereitschaft...werd mich mit Hilfe deiner Tips 
heute weiter durchquälen... :-)


Gruß,
Bernd

Autor: Bernd Bubble (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens uVision 3 mit einem LPC2294...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.