Forum: Compiler & IDEs Wie Debugging Mega8(88) WinAVR und Parallel-ISP ...


von Hobbytroniker (Gast)


Lesenswert?

Hallo,
ich habe aktuell folgendes Problem.
An einen Mega8(88) habe ich eine der billigen Matrixtastaturen von 
Pollin mit einem Widerstandsnetzwerk angeschlossen.
Das hängt an PC0 und wird in einem Timer-IRQ alle Naselang mit 
"händischer" ADC-Wandlung abgefragt (wegen debouncing).
Nun müßte ich die Werte für die einzelnen Tasten bzw. 
Tastenkombinationen erfahren, um die dann als #define ins Programm 
einzupflegen.
Also habe ich mir gedacht, das wenn ich das Programm debugge und nach 
der debouncing Routine anhalte, habe ich jeweils den Wert der Tasten.
1. Funktioniert Chip-Debugging via billigstem ISP (Parallelport 
AVR-Dude) ?
2. Gibt es ein Tutorial für's debuggen mit WinAVR ?
3. Ist meine Methode überhaupt die sinnvollste ?
Danke für jede Hilfe ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, echtes Debuggen ist nur mit einem JTAG-Interface möglich. Ein 
ISP-Adapter kann nur zum Programmieren verwendet werden.

Du kannst Dich mehr schlecht als recht mit gelegentlichen 
"Debug-Ausgaben" behelfen, aber die verändern (->Heisenberg!) das 
Programm teilweise so sehr, daß das eigentliche Problem durch geändertes 
Timingverhalten verdeckt werden kann.

Für Deine Anwendung aber müsste ein Programm genügen, daß zyklisch die 
Tastatur abfragt und die ermittelten Werte per serieller Schnittstelle 
irgendwohin ausgibt ... ein echter Debugger ist hier nicht zwingend 
erforderlich.

von Benedikt K. (benedikt)


Lesenswert?

Rufus t. Firefly wrote:
> Nein, echtes Debuggen ist nur mit einem JTAG-Interface möglich. Ein
> ISP-Adapter kann nur zum Programmieren verwendet werden.

Nur das ein mega88 kein JTAG hat, dafür aber Debug Wire. (-> AVR Dragon)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

An der Kernaussage, daß mit einfachen ISP-Adaptern kein Debuggen möglich 
ist, ändert das aber nicht wirklich viel ...

von Benedikt K. (benedikt)


Lesenswert?

Rufus t. Firefly wrote:
> An der Kernaussage, daß mit einfachen ISP-Adaptern kein Debuggen möglich
> ist, ändert das aber nicht wirklich viel ...

Ich habe auch nie was anderes gesagt, sondern nur die Behauptung 
wiederlegt, das Debugging NUR mit JTAG möglich ist.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wollen wir uns wirklich über Spitzfindigkeiten streiten?
"Debug Wire" würde ich recht schlampig als "pinsparendes JTAG-Derivat" 
bezeichnen - jedenfalls als ein Debuginterface, das den Einsatz 
spezieller dafür geeigneter Hardware voraussetzt.

Also: Frieden?

von Benedikt K. (benedikt)


Lesenswert?

Rufus t. Firefly wrote:
> Wollen wir uns wirklich über Spitzfindigkeiten streiten?
> "Debug Wire" würde ich recht schlampig als "pinsparendes JTAG-Derivat"
> bezeichnen - jedenfalls als ein Debuginterface, das den Einsatz
> spezieller dafür geeigneter Hardware voraussetzt.

Ich finde DebugWire nicht schlecht. JTAG habe ich eigentlich noch nie 
verwendet, da dies zuviele Pins braucht. Debug Wire braucht aber keine 
Pins, nur eben den sowiso vorhandenen Reset. Vor allem zum Debuggen von 
8Pin AVRs und anderen ohne UART finde ich das durchaus eine nette Idee.

> Also: Frieden?
Ja.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Schön.

Das "schlampig" bezog sich übrigens nicht auf Debugwire, sondern auf 
meine Art, es salopp als "JTAG-Derivat" einzuordnen.

Ähnlich sehe ich es beim MSP430 und dem dort vorhandenen Spy 
BiWire-Interface ...

Ohne etwas derartiges (JTAG mit vielen Pins, DebugWire, Spy BiWire ...) 
würde ich jedenfalls nicht mehr mit einem µC arbeiten wollen.

von Hobbytroniker (Gast)


Lesenswert?

OK,
das ist also 'nen Satz mit X.
Gut dann händisch.
Ich habe jetzt mal die Spannungswerte über die einzelnen Spannungsteiler 
errechnet.
Da die Pollintastatur über zwei Eingangspins verfügt, die je nachdem 
welches selektiert ist einen der sieben Ausgangspins schaltet, habe ich 
die einfach mit einem zusätzlichen Widerstand gebrückt.
So das sich jetzt z.B. folgende Werte ergeben:
Taste 2 Pin1 (10 K) und Pin7 (100 Ohm) ca. 0,05 V bei Aref=VCC=5V
Taste 3 Pin2 (10 K + 1 K = 11 K) und Pin7 (100 Ohm) ca. 0,045 V
Und da liegt jetzt mein Problem.
Ist der ADC des Mega8 genau genug die 0,005 V festzustellen, oder sollte 
ich lieber alle Werte im Kiloohm Bereich wählen ?
Ich habe halt wild in die Krabbelkiste gegriffen und nur darauf geachtet 
nicht zweimal den gleichen Widerstand zu haben ;-)
Bei 1 K statt 100 Ohm wären es ja 0,5 V und 0,45 V also 0,05 V 
Unterschied.
Im Datenblatt steht ja die Formel welcher Wert der ADC erzeugt.
Nur sind das ja "krumme" Zahlen.
0,05V Input gegen 5V Ref = 10,24
0,045V = 9,216
Was kommt dann raus ?
10 und 9 ?
Das wäre dann wohl wegen der Toleranzen insgesamt zu wenig Abstand.
Oder mache ich hier einen Denkfehler ?
Wäre nett wenn mir jemand sagen könnte was der ADC nun daraus macht und 
wie ich sinnvollere Werte erhalten kann.
Bei 1K wären es ja 92 und 102, da könnte ich dann besser Toleranzen 
berücksichtigen.
Danke.

von Hobbytroniker (Gast)


Lesenswert?

Sehe gerade meinen Fehler uuups ;-)
Der 1K wird ja jeweils auf den R2 Anteil im Spannungsteiler angerechnet.
Also bekomme ich einmal 0,05 V und einmal 0,49 V also 10 und 100, sollte 
also so funktionieren.
Oder hab' ich noch was wesentliches übersehen ?
Danke.

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
Noch kein Account? Hier anmelden.