Hallo, ich möchte gern einen ATXMega128A4U über USB am PC als virtuelle COM haben und einfach ASCII-Zeichen über z.B. PuTTY hin- und herschicken. Dazu hab ich im Atmel Studio das code-example aus der "application note AVR4907" geöffnet. In diesem Beispiel wird der XMega über USB und gleichzeitig über RS232 mit dem PC verbunden. Man kann dann zwei Terminals für die beiden COM-ports aufmachen, und wenn man in ein Terminal etwas eintippt erscheint es im anderen. Ich muss also eigentlich nur den RS232-Teil rausschmeissen. Mein Problem: Ich kann es nicht testen, da das Beispiel für ein Entwicklungsboard ausgelegt ist, ich aber keins besitze. Mein XMega sitzt auf einem selbst erstellten print auf dem die UART nicht hinausgeführt ist. (USB ist richtig angeschlossen, wenn ich das Beispiel flashe meldet sich mein XMega am PC als "Communication Device Class ASF example (COM3)). Soweit funktioniert es also. Ich kann aber nichts ausprobieren um den code zu verstehen da kein RS232-Anschluss vorhanden ist. Kann mir da jemand helfen was ich z.B. tun muss, um mal einfach ein Zeichen an PuTTY zu senden? In der uart_xmega.c gibt es z.B. "udi_cdc_putc(value)" Aber wo setz ich das hin? Im main wird ja sofort der sleepmode aktiviert und der Rest läuft über interrupts. Ich fürchte auch dass solange über die UART keine Verbindung aufgebaut ist das Programm nichts tut. Ich müsste also den ganzen UART-Teil rauswerfen, ich bekomme aber keinen Überblick bei diesen vielen .c- und .h-files. Hab zwar schon etwas in C programmiert, aber das ist doch etwas "too much". Vielleicht kann mir jemand zumindest sagen, wo ich anfangen könnte. Danke! Gruß, T.
Okay, da war ich mal wieder zu ungeduldig. Hab jetzt endlich gecheckt wie wie der ASF-Wizard funktioniert und ein leeres Projekt mit einem "User-board" erstellt und das USB-CDC-stdio-modul geladen. Jetzt geht alles, zum PuTTY schreiben und asynchron davon lesen über die callback-functions. Sorry für diesen unnötigen thread! Gruß, T.
Welche Version des Atmel Studios hast Du denn verwendet? Ich versuche da gerade mit dem Studio 7, will aber noch nicht so richtig klappen... Werner
Hallo Werner, sorry, war über Pfingsten weg. Ich verwende auch Atmel Studio 7. Was funktioniert denn bei dir nicht? Gruß, T.
:
Bearbeitet durch User
Wenn ihr ein Zeichen vom PC über USB (V-Com) zum Xmega schicken wollt, dann müsst ihr eine Routine drin haben welche die Zeichen ausliest. Müsste "udi_cdc_getc()" heißen. Ich hatte in der Main eine handle_cdc() und in der stand diese getc-Routine ganz am Anfang. Danach stand dann eine Routine welche das Zeichen wieder zurück geschickt hat. handle_cdc(void) { uint16_t c = 0; c = udi_cdc_getc(); udi_cdc_putc(c); } So hat man einfach eine Echoroutine geschaffen. Mein Codebeispiel hatte ich aus dem USB-CDC Beispiel aus der Atmel ASF-API genommen. http://asf.atmel.com/docs/3.11.0/common.services.usb.class.cdc.device.example.stk600_atxmega128a4u/html/index.html In der Main kannst du den AVR ja auch schlafen legen, aber eben nicht in den Tiefschlaf. IDLE sollte reichen. Johannes W. schrieb: > "udi_cdc_putc(value)" > Aber wo setz ich das hin? Im main wird ja sofort der sleepmode aktiviert > und der Rest läuft über interrupts. Du kannst die die putc-Routine auch in eine Interruptroutine schreiben die zum Beispiel jede Sekunde ausgeführt wird. Mit "udi_cdc_putc('#');" bekommst dann jede Sekunde ein "#"-Zeichen auf den Bildschirm geschrieben.
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.