HI Ich arbeite momentan an meiner Technikerarbeit und stehe momentan vor folgendem Problem: Ich verwende den Controller Atxmega128A1U, dieser besitzt ein USB-Interface. Für meine Zwecke genügt es einzelne Strings zwischen dem Controller und einem PC austauschen zu können. Software am PC wäre hierfür Lapwiew oder Profilap. Ich finde hierfür aber kaum Beispiele. Gibt es irgendwo eine fertige Library? Irgendwie kann man das USB doch auch als virtuellen Com-Port verwenden (so wie bei einem FT232RL beispielsweiße)? Wenn ich eine fertige Bibliothek oder Lösungsansatz hätte wäre mir sehr geholfen.
Hallo, ob wohl das nach Meinung vieler Leute die einfachste Sache der Welt wäre,findet man kaum Brauchbares. Ich verwende bei USB gerne das Stellaris® LM4F120 LaunchPad. Da kann man mit einen "drei Zeiler" einen virtuellen Com-Port verwenden. Und das Ganze ist absolut auch für Anfänger geeignet! Hier im Forum kann ich dir für den ATXMEGA U Type nur den Artikel empfehlen: Beitrag "CDC für xmega" Gruß G.G.
:
Bearbeitet durch User
Durchgefallen. Es gibt sogar auf ATMEL.com Beispiele für USB CDC. Wenn man der englischen Sprache wenigstens bruchstückhaft mächtig ist, sollte man die finden.
Danke für die Hilfe :P Bei dem Beitrag welchen du mir geschickt hast: ich hab jetzt dieses das Beispielprogramm auf meinen Controller geladen. mein PC erkennt jetzt etwas am USB Anschluss. Er kennt aber keinen passenden Treiber. Wähle ich die Inf datei welche in der Zip Datei enthalten ist aus, kommt nur die Meldung, dass das "CDC Virtual Com konnte nicht installiert werden"
Hallo Frank, ich habe den Treiber hier gefunden:siehe Bild Anhang Voraussetzung AVR Studio Achtung Treiber werden massiv von Microsoft geblockt, trotzdem weitermachen!!!! Gruß G.G.
Hallo. Falls ATxmega128A3U eine Option fuer dich ist, ggf. magst du dir mal http://matrixstorm.com/avr/avrstick/ ansehen. Fuer das Board habe ich ein Beispielcode: http://vps.matrixstorm.com:1114/bideavr/simpleusbterm.html MfG
Hi :P danke für die Hilfe bis hier hin. dass mit dem Treiber hat jetzt funktioniert. Der ATxmega128A3U ist leider keine Option für mich. Meine bis jetzt aufgebaute Schaltung mit dem ATxmega128A1U funktioniert nämlich bereits fast komplett außer die USB Schnittstelle. Ich bin inzwischen weitergekommen, aber so ganz zurecht komm ich noch nicht ganz. Ich schildere euch mal meine aktuelle Lage, vlt fällt ja noch jemanden etwas ein :P Ich bin auf folgende Applikation Note gestoßen: http://www.atmel.com/Images/doc8447.pdf Obwohl ASF für mich absolutes Neuland ist hab ich es trotzdem mal versucht. Geöffnet habe ich folgendes Beispielprogramm: Device Familiy: xmega 8bit Category: Services Dann auf Technologie: ASF 3.11.0 USB USB Device CDC Example - STK600 - ATxmega 128A1U So sieht meine Main aus: int main(void) { //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht irq_initialize_vectors(); //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht cpu_irq_enable(); // Initialize the sleep manager //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht sleepmgr_init(); //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht sysclk_init(); //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht board_init(); //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht ui_init(); //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht ui_powerdown(); // Start USB stack to authorize VBus monitoring udc_start(); //udc_attach(); // The main loop manages only the power mode // because the USB management is done by interrupt while (true) { //war im Beispielprogramm bereits enthalten. Funktion weiß ich nicht sleepmgr_enter_sleep(); //löst aus, wenn etwas empfangen wurde if (udi_cdc_is_rx_ready()) { //gibt die Anzahl der empfangenen bytes aus (meist 1) leng = udi_cdc_get_nb_received_data(); for (i =0; i<leng; i++ ) { //string wird im Array test gespeichert test[j] =udi_cdc_getc(); j++; if (j >= 200) i=0; } } //Wenn sendebereit: sende "C" if (udi_cdc_is_tx_ready) udi_cdc_putc('c'); //Wenn sendebereit: sende "$" if (udi_cdc_is_tx_ready) udi_cdc_putc('$'); } } Ich verwende Profilap zur Kommunikation am PC. Baudrate habe ich hier 9600 und in der conf_usb.h habe ich auch 9600 angegeben. So verkehrt was ich gerade mache kann es nicht sein xD die Funktion udi_cdc_putc() sendet nämlich scheinbar erfolgreich zum PC!!! Das Empfangen klappt allerdings nicht so. Ich Sende zum Controller folgenden String: ####1230A$$ ich empfange allerdings (allso im array namens Test): #230A$ Die Ansätze sind allso da. Aber wieso einzelne Zeichen fehlen verstehe ich nicht. Allerdings gibt es auch einige Dinge bei denen ich mir auch nicht ganz richtig bin ob es so richtig gemacht habe. Möglicherweiße ist hier der Fehler. In der Applikation Note steht der genaue Ablauf zum Empfangen. Folgende Funktionen werden hier zusätzlich verwendet: udc_attack() habe ich auskommentiert, da keinen Unterschied gemacht hat ob die Funktion enthalten war. UDI_CDC_ENABLE_EXT() UDI_SET_CODING_EXT(cfg) UDI_CDC_RX_NOTIFY() Ich habe die Funktionen weggelassen, da sie einen Übergabewert namens Port benötigen. Schreibe ich allerdings PORTD sagt mir Atmel Studio, dass das ungültig wäre. Keine Ahnung was sonst damit gemeint sein könnte. Aber vlt benötige ich diese Funktionen auch gar nicht.... Den zum Beispielprogramm gibt es folgenden Link: http://asf.atmel.com/docs/3.11.0/xmegaau/html/udi_cdc_quickstart.html und http://asf.atmel.com/docs/3.11.0/xmegaau/html/group__udi__cdc__group.html und hier wird auch keine dieser Funktionen verwendet. So wie ich das verstehe, waren diese nur bei einer älteren Version von ASF notwendig. Achja einen Quarz habe ich keinen auf meiner Schaltung verbaut. Benötige ich auch nicht, da das Senden ja funktioniert? Also macht das denke ich auch keinen Unterschied. Wäre cool, wenn jemand mal drüber schauen könnte und ihm noch was einfällt. Schließlich funktioniert es ja so halber. Von der Theorie müsste ich dann mein bereits bestehendes Funktionierendes Programm nur noch in dieses Programm hineinkopieren, sobald die USB Schnittstelle funktionieren würde.
Heute abend im TeamSpeak ts3server://vps.matrixstorm.com:10987?nickname=Frank91 ? Da kann ich dir per Voice Fragen beantworten/Tipps geben/libusbterm.a fuer ATxmega128a1u compilieren - alles schreiben dauert mir hier zu lange. MfG
ok, danke das wäre gut :P Hab heute abend noch viel zu tun aber ich versuch so um 8 mal im ts zu sein, wenn dir das passt.
Matthias Frank schrieb: > Funktioniert jetzt alles so. Okay, freut mich zu hoeren. Btw. hab ich jetzt auch Code zum prototypischen implementieren von MassStorage ("USB Stick") Devices: http://matrixstorm.com/avr/avrstick/#bideavr Nur fuer den Fall, irgendjemand hat Verwendung dafuer. MfG
:
Bearbeitet durch User
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.