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 ;-)
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.
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)
An der Kernaussage, daß mit einfachen ISP-Adaptern kein Debuggen möglich ist, ändert das aber nicht wirklich viel ...
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.
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?
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.