Hallo zusammen, ich verwende das USB Modul des ATxmega um mit dem PC zu kommunizieren. Leider habe ich bei ca. 20% aller 10 Byte Pakete das Problem, dass die Übertragung mit einem EPIPE abbricht (libusb). Bei 64 Byte Paketen geht schon gar keines mehr durch. Ich vermute derzeit, dass es an meiner Verkabelung liegt. Ich habe noch keine Erfahrungen mit hohen Frequenzen, habe aber oft gelesen, dass das mit den Versuchsaufbauten desto problematischer wird, je höher die Frequenzen werden. Es handelt sich um Full Speed, also 12 MBit/s. Kann das dort schon ein Problem sein? Die Elektronen nehmen folgenden Weg: Aus dem PC gehts in den gewöhnlichen USB Hub, von da aus in ein gewöhnliches USB Kabel mit Stecker, von da in eine entsprechende Buchse, die auf ein Breakout-Board gelötet ist, welches auf dem Breadboard steckt. Von da aus geht es auf das Breadboard, dann in ein knapp 15cm langes Kabel, dann wieder aufs Breadboard, dann auf ein anderes xmega Breakout-Board, welches auf dem Breadboard steckt, dann in den xmega. Hört sich nach viel an, aber ab dem USB Stecker sind es wie gesagt "nur" 15cm Kabel + 3 cm Breadboard. Der gleiche Weg natürlich wieder zurück. GND und 5V sind NC, da ich das Breadboard über ein externes 3.3V Netzteil mit Strombegrenzung betreibe.
Schaltplan, bitte. Der Text liesst sich als ob die 33R Serienwiderstände fehlen würden. Die dann entstehenden Reflexionen würden in der Tat für schlechte Signale sorgen.
:
Bearbeitet durch User
Der xmega braucht diese nicht: http://www.atmel.com/Images/doc8388.pdf Wenn ich mit dem OSC nachmesse, sind es ja schon keine sauberen Rechtecke. Leider habe ich aber auch gelesen, dass die Oscs selber, wenn man nicht viel Ahnung hat, alles mögliche anzeigen können. Dass man Ground Springs braucht, um richtig zu messen. Gottseidank brauchte ich das für meine kleinen LED-Treiber nie... nur jetzt ists halt doch was grösseres.... Vielleicht wär am besten ein Tipp, wie ich "sicher messen" kann. Würde es reichen, einfach an D+ und D- das Osc anzuschliessen und dann kann ich davon ausgehen, dass ein unschönes Signal auch wirklich anliegt und dass ich es nicht nur im Osc sehe? Es ist ein Rigol MSO1074.
Hast du vielleicht ein Bild deines Aufbaus zur Hand? Dann könnte man das etwas besser bewerten. Je nach Breadboard kann bereits die Kapazität zwischen den einzelnen Steckkontaktreihen Probleme mit der Signalqualität verursachen. Da müßte man aber mal auf deinem Bild nachschauen, wie das nun aufgebaut ist. Ich kenne mich mit USB nicht so gut aus und weiß nicht, ob USB wirklich komplett differentielle Übertragung hat. Daher bin ich etwas skeptisch, wenn du schreibst, dass du den USB-GND nicht mit dem MCU-GND verbunden hast. Vielleicht kannst du das mal ausprobieren? Am USB messen ... schwierig. Wenn du zu zweit bist, dann kannst du mal probieren, die Klemmhaken von den Tastköpfen abzuziehen und stattdessen die kleine "Spule/Feder" aus Federstahl, die beilag, so aufzustecken, dass das freie Drahtende nach vorne wegzeigt. Dann brauchst du eine zweite Person, die das idealerweise am USB-Breakout-Board mit GND und einer der Signalleitungen verbindet, während du dir auf dem Oszilloskop das Signal anschaust. Allein kann man das nicht sinnvoll machen, da die Positionierung sehr fummelig ist. 10:1-Teiler nicht vergessen, sonst ist die Kapazität des Tastkopfs zu hoch und versaut dir dein Signal.
Die Verbindungen auf dem Breadboard haben eine zu hohe Kapazität. Und: USB arbeitet mit definierten Wellenwiderständen zwischen D+ und D- und zwischen D+/D- und GND. Jede einzelne Steckverbindung ist eine Sprungstelle, die zu Reflexionen und damit zu Störungen führt, und irgendwann ist eben Feierabend. Im USB-Standard steht genau, was Du machen darfst. Halte Dich genau daran, und es wird funktionieren. Bau den USB-Stecker direkt auf das XMega-Board, so wie es Datenblatt und USB-Standard fordern. fchk
YAY FUNZT freu Der Kalibrierungswert in der Signaturrow des xmega für DFLLRC32M_CALB war einfach falsch. Ich habe selbst einfach mal daran rumgespielt und wert-3 funktioniert tadellos. Da bei den empfangenen Daten erst nach einigen Bytes Fehler auftraten und das verdächtig nach verschobener Abtastung aussah, habe ich da mal gesucht und gefunden :) Atmel ist ja auch leider bekannt dafür, dass deren "Kalibrierung" kaum das Wort verdient.... Ich werde mich dennoch mal mit Kapazitäten in Kabeln auseinander setzen. Scheint ja bald trending Topic zu werden...
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.