Forum: Projekte & Code einfacher serieller Debugger für ATMega16


von Johann U. (johannuhrmann) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

anbei ein kleines Testprogramm für den ATMega16. Es ist aus der Not
heraus entstanden, um ein einfaches Durchmessen von Schaltungen zu
erlauben.

Features:
 + Schalten von Port A-D als digitale Ein-/Ausgänge
 + Bedienung mit Terminalprogramm ohne Zusatzsoftware möglich
 + Benachrichtigung bei Signaländerung an ausgewählten Pins

Voraussetzungen:
 + der Mega16 muss natürlich in der Schaltung lauffähig sein
 + funktionierende UART-Schaltung (MAX232 o.ä.)

Bedienung:
 + hex-File auf den Controller laden
 + mit Terminalprogramm (z.B. Hyperterm) verbinden
 + jede Eingabe, die das Programm nicht versteht, wird mit einer
   Kurzanleitung quittiert
 + jedes erkannte Kommando wird sofort ausgeführt

Das beigefügte hex-File ist für 4MHz Takt ausgelegt und kommuniziert
dann mit 19200 Baud, 8 Bit, Even Parity, 1 Stop bit.
Überwachte Eingänge werden bei 4MHz 100x pro Sekunde geprüft.

Vielleicht hilft's dem ein oder der anderen ;)

Grüße,

Hans

von FeeJai (Gast)


Lesenswert?

Sehr schön! Konnt ich so direkt bei mir einsetzen. Weiter so! Felix

von Johann Uhrmann (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

erstmal Danke für das Lob, Felix.

Anbei ein kleines Update:

- keine nervtötenden Compiler-Warnings mehr (hoffentlich)
- ein kompletter Port läßt sich jetzt auf einmal setzen
  z.B.: "out pc=ff" um Port C komplett auf high zu setzen

Grüße,

Hans

P.S.:
Hatte ich ein Forenlogin? Gibt es sowas wie Password-Recovery?

von Karl H. (kbuchegg)


Lesenswert?

Ein kleiner Tip:
Du musst in C nicht solch lange 'Monsterstrings' in einer Zeile
basteln.
In C gibt es ein nettes Feature:
Der Compiler muss 2 aufeinanderfolgende Zeichenketten, die
nur durch Whitespace (Leerzeichen, Tab, CR) getrennt sind,
zusammenfassen.

D.h. ob du
   "dies ist ein langer String"
oder
   "dies " "ist " "ein " "langer " "String"
oder (und jetzt kommts)
   "dies "
   "ist "
   "ein "
   "langer "
   "String"

schreibst, ist Jacke wie Hose. Kommt immer aufs selbe hinaus.

Damit kannst Du aber machen:

const prog_char help[] =

  "\r\nAVR-Diagnose"
  "\r\n============"
  "\r\n"
  "\r\nKommandos:"
  "\r\n\tDISPLAY - zeigt den aktuellen Status der PINS an"
  "\r\n\tWATCH   - ueberwacht einen einzelnen Pin oder einen"
                  "Port (z.B. WATCH PB0 oder WATCH PD)"
  "\r\n\tUNWATCH - beendet die Ueberwachung eines Pins oder
Ports"
  "\r\n\tOUT     - schaltet einen Pin auf Ausgang und legt das "
                  "angeg. Signal an (z.B. OUT PB7 1)"
  "\r\n\tOUT     - schaltet einen kompletten Port als Ausgang und
"
                  "legt den Wert an (z.B. OUT PB=7F)"
  "\r\n\tIN      - schaltet den angegebenen Pin oder Port als "
                  "Eingang OHNE internen Pull-Up"
  "\r\n\tINPU    - schaltet den angegebenen Pin oder Port als "
                  "Eingang MIT internem Pull-Up"
  "\r\n";


Über den Unterschied in der Lesbarkeit (und damit Wartbarkeit)
brauchen wir, glaub ich, nicht diskutieren. :-)

von Johann Uhrmann (Gast)


Lesenswert?

Danke für den Tipp. Wieder einmal zeigt sich, dass man nie
auslernt.

Grüße,

Hans

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.