Erweitertes Terminal für Debugging-Ausgaben

  • So, irgendwie hatte ich Lust, mir mal Terminals und ESC-Sequenzen anzusehen...


    Rausgekommen ist der Rohbau eines Debugging-Terminals in Bascom.
    Funktionen bisher:
    - Darstellung von verschiedenen Variablen zur Laufzeit (Zeilen 2-5 Byte/Word/Single/String) inkl. Bit-Übersicht (1. Zeile)
    - Normale UART-Ausgeben in einem Scrollbereich darstellen (weißer Text)
    - Zusätzliche Infos über den Chip usw.


    [Blockierte Grafik: http://img18.imageshack.us/img18/1639/term2.jpg]


    Die Auswahl der Terminal-Software war eine witzige Geschichte...
    - Der von Bascom ist OK, aber kann Features wie Scrollbereich nicht.
    - Hyperterminal kann Scrollbereiche, aber er schneidet rechts einen Teil davon ab beim Scrollen - narf!


    Nach einigem Suchen bin ich jetzt bei TeraTerm gelandet.
    Der kann VT100 mit den wichtigsten Features, ist frei und es sieht ansehnlich aus.
    Außerdem ist er dank speicherbarer Konfiguration auch blitzschnell startklar nach dem Compile.


    Welche Features funktionieren und welche nicht ist wirklich ein Rumtesten vom Feinsten - auch die Reihenfolge ist wichtig oder Features werden nur teilweise unterstützt.


    Den Code stell ich rein wenn ich ein paar Subs gebastelt habe um den ganzen Haufen handhabbar zu machen.
    Wie ich die Aufrufe genau im Code platziere muss ich noch schauen - es soll ja einfach sein die Variablen im eigenen Code jeweils zuzuweisen (ALIAS bietet sich da an glaub ich) und der Aufruf soll auch nicht zuviel "auftragen".


    Hat jemand Ideen oder Featurewünsche?
    Oder kennt sich wer gut aus mit Terminals und hat Lust ein Tips zu geben?

  • Wünsche habe ich zwar nicht direkt, aber vielleicht gibt es mal noch ein paar grundsätzliche Infos zum Debugging. Da kenn ich mich kaum aus und versuche, immer möglichst "gut" zu programmieren. Wenn dann irgend etwas nicht stimmt, such ich im Quellcode und dann wird erneut getestet. Das ist sicher nicht optimal. Ich muss aber gestehen, dass ich auch noch nicht wirklich danach gesucht habe. Und das Debugging in WinAVR ist ja z.B. für PWM-Anwendungen nicht wirklich geeignet.

  • Naja Debugging kann so einiges sein.
    Unterste Stufe wären LEDs die angehen, wenn eine bestimmte Stelle im Code erreicht wird.
    Die UART hilft ungemein, weil man schön bei jedem vermutetem Fehlerpunkt ne Ausgabe machen kann.


    "Echtes" Debugging macht man mit dem JTAG Interface, da hat man dann zur Laufzeit volle Einsicht in alle Register und Variablen - kostet aber auch die Pins am JTAG Port und die Hardware haben auch nicht viele Leute.


    Meine Lösung ist sicher nicht perfekt - sie kostet relativ viel CPU-Zeit für die Ausgaben - aber beim Debugging kommt es nicht unbedingt auf Echtzeit an, sondern meist darauf die eine, doofe Variable zu finden die nicht richtig will....


    Die gute Nachricht: PWM-Pins sind alle fei, man braucht nur die UART ;)


    Anbei ein neuer Screenshot des Terminals.
    Hinzugekommen ist die grafische Ausgabe der DataDirectionRegister und der Port-Pins.
    Geplant habe ich zur Zeit noch eine nette Anzeige der ADCs und eine Matrix-Simulation für die Funny Matrix 64


    [Blockierte Grafik: http://img62.imageshack.us/img62/4503/term3.jpg]

  • Ist ne ganz normale RS232 Verbindung, ja.
    Bisher sogar nur der Sendepin vom AVR zum PC, Rückkanal kommt aber auch noch - für Menüs etc..


    Wichtig ist, den richtigen Terminal zu verwenden. Vt100 muss er können,
    Hyperterm geht, aber wie gesagt finde ich TetraTerm besser - daher werde ich den Code erstmal dafür entwickeln.


    EDIT:
    Hier noch ein Screenshot alle möglichen Farb-/Stilvarianten in TeraTerm.
    Die Hauptunterschiede zu Hyperterminal sind:
    - Style-Feature "Hidden" funktioniert in HT (die Xe im Test sind da nicht zu sehen)
    - Style-Feature "Blink" funktioniert in HT (TeraTerm macht das über leicht hellere Hintergrundfarben)
    - Dafür sind die Farben in HT schrecklich - daher verzichte ich auf nen Screenshot ;)


    [Blockierte Grafik: http://img694.imageshack.us/img694/1174/term4rainbow.jpg]

  • So, nächstes "Modul" fertig...
    Dieses Mal: Realtime ADC-Visualisierung.


    Bin grade zu faul mehr als einen Pin konkret zu bestücken, daher bitte nur ADC0 beachten, ADC1-7 laufen mit Bein in der Luft, alle Käse was da steht!
    Dafür zeigt ADC0 aber verdammt genau den Wert an, den auch mein Labornetzteil sagt. Und das trotz REFERENCE = VCC und ständiger UART-Orgie.


    [Blockierte Grafik: http://img51.imageshack.us/img51/2742/termadc1.jpg]

  • Nunja, man muss halt schon die restliche Zeile löschen, damit der Balken auch wieder schrumpfen kann.
    Dafür gibts aber in der Tat einen Befehl "Delete-to-EOL".


    Man sieht den Cursor bei 19200 Baud schon drüberhuschen - perfekt ist das nicht - aber hey - es kostet auch nix, oder? 8o


    Meine Idee ist halt, verschiedene Module zu proggen, die man dann je nach Bedarf laden/platzieren kann.


    Wer mag, kann ja mal ein Farbgrafik-Modul machen... 3-Bit Farbe (aber alle ziemlich unterschiedlich) bei 80x24 haben wir zur Verfügung :!:


    Ansonsten müsste ich mich auch mal an die Steuerung vom Terminal aus geben...
    Dann wären Menüs und alles drin, könnte gut werden ;)


    Mache jetzt mal den Source gleich parat, dann wirds einfacher teilzunehmen ;)