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
Gast
#371255
Sehr schön! Konnt ich so direkt bei mir einsetzen. Weiter so! Felix
Gast
#371256
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?
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. :-)
Gast
#371258
Danke für den Tipp. Wieder einmal zeigt sich, dass man nie auslernt. Grüße, Hans
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.