Forum: Mikrocontroller und Digitale Elektronik Wie kann ich etwas ohne Display abfragen?


von LuciPavadro (Gast)


Lesenswert?

Hi,

ich habe hier einen AVR in Betrieb, der später in eine Baugruppe gesetzt 
werden soll und eigentlich nur unsichtbar etwas macht. Es gibt also kein 
Bedienteil oder ähnliches.

Um meinen Code zu testen brauch ich aber eine Möglichkeit, Daten bzw. 
Zahlen auszulesen.

Gibt es eine Möglichkeit im neusten AVR-Studio nicht nur den Code-Syntax 
zu testen, sondern auch einen Output darstellen zu lassen? Ich will 
keine Schaltung simulieren, sondern nur Variablen/Ergebnisse von 
Rechnungen ausgeben, die intern im AVR stattfinden...und das ohne, dass 
ich den kompletten Code für einen Test umschreiben muss.

Soein Echtzeit-Display welches den Inhalt einer Variable anzeigt oder 
so...?

thx!

von Christian R. (supachris)


Lesenswert?

Hmm...für sowas gibts doch Debugger....

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wir haben uns zu dem Zweck einen "Displaycontroller" gebaut, der mit 
einem Signal auf einem einzigen Pin (gegenüber Masse) gefüttert wird und 
sämtliche ASCII-Zeichen auf dem Display anzeigen kann (auch HEX und DEZ 
direkt) und ein paar LEDs ansteuert. Ein Pin ist an jedem AVR noch frei, 
so daß auch InSystem Debuginformationen angezeigt werden können. Die 
Signale generiert eine kleine Routine im Programm des zu debuggenden 
Controllers.

von Jonas G. (jonny)


Lesenswert?

Das heißt ich schicke dem LCD 0b00001000 und es zeigt mir eine 8 (dez.) 
an?
Das kann man ja öffters mal gebrauchen. Falls man mal nur ein paar 
integer-Werte usw. testen muss.

jonas

von Spess53 (Gast)


Lesenswert?

Hi

Falls du an der UART noch das TX-Pin frei hast, kannst du auch direkt 
zum PC senden. Vorrausgesetzt der AVR hat eine UART.

MfG Spess

von Jonas G. (jonny)


Lesenswert?

senden würd auch einfach mit nem softuart klappen

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wir haben das mit unserem DisplayController so gelöst, daß wir ein 
spezielles Startbit senden, dann 4 Bit zum Anzeige-Typ (also Hex, 
Dezimal oder reines ASCII), dann 8 Bit Adresse (also wo die Anzeige auf 
dem Display erscheinen soll) und 8 Bit Daten. Diese Frame-Aufbereitung 
wird von der Routine im zu debuggenden Controller erledigt. Die 
einzelnen Programm-Routinen, die es zu debuggen gilt, geben halt die 
4Bit und 2x 8Bit an die Ausgabe-Routine und rufen sie auf. Wenn man das 
Debugging nicht mehr braucht, weil das Programm komplett ist und 
funktioniert, werden diese Aufrufe deaktiviert. Da wir sehr oft In 
System programmieren, kann man die Ausgabe über die sowieso aufgebrachte 
ISP-Schnittstelle routen. Es werden dann keine zusätzlichen Pins oder 
Testpunkte auf der Platine benötigt. Wenn man den MISO-Pin des zu 
debuggenden Controllers nutzt, muß man nicht mal das Programmiergerät 
abziehen, der Displaycontroller und der Programmer teilen sich dann den 
Pin.

von Roland Praml (Gast)


Lesenswert?

Ich hab mir ähnliches gebaut, mein "Displaycontroller" ist lediglich ein 
74HC595 Schieberegister.

Ein 4x20 LCD wird im 4Bit-Mode betrieben, Q0-Q3 vom Schieberegister ist 
mit dem unteren Nibble verbunden. EN und RS mit Q4/Q5, R/W  mit +5V 
(nur schreiben ist möglich)

Data-In, Clock und Latch gehen auf die "Programmierpins" SCK/MISO/MOSI.

Weiterhin ist das untere Nibble (Q0-Q3) jeweils mit einem Taster und 330 
Ohm Widerstand mit Data-In verbunden.

Ein LCD-Write funktioniert dann so, dass einfach nacheinander die Daten 
seriell raus geschoben werden und parrallel am SR anliegen, so dass es 
das LCD versteht.

Ein Readkeys schickt zuerst ein 0x0 an Q0-Q3, schaltet dann den Data-Pin 
auf Input um mit Pullup. Ist nun eine Taste gedrückt, so wird der 
entsprechende Q-Pin mit dem Data-Pin gebrückt und auf low gezogen.
In einem weiteren Schritt muss durch anlegen entsprechender Bitmuster 
noch abgefragt werden, welche der 4 Tasten es war.

Da der EN-Pin des LCD's immer Low ist, macht es auch nichts, wenn hier 
an den Bits "rumgefummelt" wird.

Es werden hier allerdings drei Leitungen benutzt, ich verwende hierzu 
die Programmierleitungen und das Gerät kann auch parallel zum Programmer 
angeschlossen bleiben.

Die Textausgabe ist zwar nicht die flotteste, da insbesondere die 
Tastenabfrage mit vielen Delays gespickt ist, damit es funktioniert. Zum 
Debuggen reicht es aber vollkommen aus.

Gruß
Roland

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Unser "Controller" hat noch eine UART-Anbindung mit formatiertem ASCII 
(n-Zeichen pro Zeile mit CR/LF) zur Klartextausgabe oder zum Loggen mit 
einem Terminalprogramm. Wir haben das Ding liebevoll "Sniffer" getauft 
;-). Inzwischen hat jeder im Labor einen neben seinem STK500 stehen...

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.