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!
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.
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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.