Hallo, ich bin auf der Suche nach der Möglichkeit über USB sowohl Daten an einen Atmega8 zu senden als auch vom Atmega zu empfangen. (Steuerdaten an den uC senden und ausgewertete Sensordaten am PC anzeigen) Wer kann mir dazu ne schaltung liefern? ... zurzeit habe ich es so gelöst, dass ein 2. usb port verwendet wird, jedoch möchte ich dies vermeiden. mfg Thomas
Hallo Thomas, dein Problem verstehe ich jetzt nicht so ganz. Hast du einen USB <-> RS232 Wandler dazwischen oder wie? Dann ist das ja gar kein Problem. Hast doch jeweils eine sende Leitung und eine Empfangsleitung pro Seite. Die verbindest du über kreuz und gut!? Gruß Philipp
Hallo Philipp! Laut meinem Elektronik-Lehrer ist es möglich, die USB-Schnittstelle direkt (mittels Pulldown/Pullup weiß jetzt nicht genau was von beiden) mit dem RXD und INT0 des Atmega zu verbinden und ohne Pegelwandler zu betreiben. Das selbe ist nun auch mit TXD und INT1, jedoch auf einem Separaten USB-Port. Dies funktioniert auch schon aber ich will nicht den Platz verschwenden, wenn du verstehst, was ich meine. Mein Atmega übernimmt also das komplette USB-Management. mfg Thomas
Schau die mal das USB AVR-Lab an: http://wiki.ullihome.de/index.php/Hauptseite Das ist wohl die Beschaltung, die du suchst ;) Hat wohl auch weniger Fehler als deine (z.B. AREF auf AVCC). avr
trifft leider nicht genau das, was ich will. mir geht es im grunde darum, mit einen Atmega8-16 AI um Ausgänge, die an H-Brücken liegen zu steuern und Eingänge (Drehzahlsensor, Inkrementalgeber usw) auswerten und die ausgewerteten Daten an den USB zu senden, wo er von meiner Software ausgewertet werden soll. Ist es also möglich, irgendwie das "Handshake"-Prinzip hier zu realisieren oder kann ich nur eine Einwegkommunkikation herstellen?
Dann schau mal in das Schaltbild: http://shop.ullihome.de/catalog/userdownloads/10393_0de_0Produktinformation.pdf (Seite 6) Das ist die Beschaltung für die USB mit Widerständen und Dioden. Was du mit deinen anderen Pins machst ist deine Sache! avr
so wie ich das hier seh ists nichts anderes als 2 ZenerDioden, die den D+ und D- auf ein Spannungsmax von 3.3V begrenzen und 2 R's die den max Strom auf 20mA runterdrosseln, incl. pullup und pulldown widerstände. ich überarbeite meine Schaltung nochmal, poste sie dann und sagt mir bitte dann, ob dies so stimmt.
TJ Rejay schrieb: > Hallo Philipp! > > Laut meinem Elektronik-Lehrer ist es möglich, die USB-Schnittstelle > direkt (mittels Pulldown/Pullup weiß jetzt nicht genau was von beiden) > mit dem RXD und INT0 des Atmega zu verbinden und ohne Pegelwandler zu > betreiben. USB in Software auf nem kleinen AVR und das fuer nen Anfaenger... toller Lehrer.
moin moin Du solltest dich mal mit den USB-Spezifikationen beschäftigen,wenn du das alles in Software realisieren möchtest würde ich mal bei obdev vorbeischauen. http://www.obdev.at/products/vusb/index.html mfg
@Michael: ich mach es als privates Projekt und hab den Lehrer gefragt, wie man es am Günstigsten und mit wenigstmöglich Platzverbrauch realisieren kann. danke für den Link. ist genau das was ich gesucht habe :D
Hallo, mir ist nicht ganz klar, wie der Atmega die USB Signale erzeugen soll. USB full speed wird mit 12MHz betrieben, wie kann man das durch Bit-Bang erzeugen? Oder geht nur Low-Speed ? Dann kann man aber nur max. 800 Bytes/s übertragen, reicht das? Besser wäre auf jeden Fall, eine AVR mit USB-Schnittstelle zu nehmen, z.B. Atmega8U2 etc. Gruss Mike
also: es ist nur low-Speed USB möglich, da das USB signal virtuell auf dem Atmega erzeugt wird. Die Anwendung ist wie gesagt, eine Ansteuerung von H-Brücken und ein "selbstgebauter Servo" ... also eigentlich nur eine einfache Motorsteuerung und eine Lenkung. über Sensoren soll dann Drehzahl und "Lenkereinschlag" gemessen werden und über den USB zurückgegeben werden. um diese 4 zeitunkritischen informationen zu übertragen wird es wohl ausreichen :D
nach langem lesen steh ich immer noch am selben punkt. ich weiß zwar jetzt, dass das usb-protokoll implementiert wird, aber hab noch immer keine ahnung ob es überhaupt möglich ist, sowohl daten auf den atmega zu schreiben und zu lesen. d.h. es sollte folgendes passieren: Ausgangsdaten senden, Ausgänge setzen, eingänge lesen, eingangsdaten an pc, und wieder von vorne anfangen. Ist dies überhaupt möglich mit implementiertem usb oder brauch ich einen seperaten contoller?
Wieso willst du unbedingt die USB Schnittstelle in Software realisieren? nimm doch lieber die eingebaute Hardware-UART und dazu einen Pegelwandler und wickle die Kommunikation über RS232 ab. Klar, diese Lösung benötigt zwar mehr Platz, ich denke jedoch, dass du damit schneller an dein Ziel kommst. Denn zum Thema serielle Kommunikation gibts hier genügend Tutorials. mfg
wie jetzt? du meinst statt dem usb rs232 verwenden? --> ist nicht möglich, da mein laptop keine serielle schnittstelle hat.
TJ Rejay schrieb:
> wie jetzt? du meinst statt dem usb rs232 verwenden?
nö, zB einen FT232R...
Nimm eine USB-RS232-Bridge, wie zum Beispiel den allseits beliebten FT232. Der wird per USB an Deinen PC angeschlossen und stellt eine serielle Schnittstelle zur Verfügung, an die Du Deinen µC anschließen kannst. Wenn Du nicht ein fertiges USB-Seriell-Kabel verwendest, sondern direkt den FT232 mit Deinem µC verbindest, entfallen auch die sonst üblichen Pegelwandler, die die auf RS232-Schnittstellen üblichen Pegel (+/-12V) auf die vom µC vertragenen 0-5V anpassen.
Hallo, USB in Software ist meiner Meinung nach Irrsinn... Dennoch: auf der Homepage von V-USB steht doch, dass mehrere Endpunkte unterstützt werden. Du hast einen control Endpunkt, zwei interrupt/bulk IN und bis zu 7 interrupt/bulk OUT Endpunkte (wow, sind mehr als auf dem SAM7!! Ich sollte auf einen Mega8 umsteigen) zur Verfügung hast. Damit könntest Du nun eine serielle Schnittstelle bauen (CDC) die benötigt(neben dem Control Endpunkt) einen interrupt IN, einen bulk OUT und bulk IN Endpunkt. Oder du könntest Deine Daten über die HID Klasse transportieren. Dazu benötigst Du(neben dem control Endpunkt) einen interrupt IN und interrupt OUT Endpunkt. Der Vorteil davon: - keine Treiber nötig, da diese bereits im Betriebssystem integriert Du schiebst Deine Daten einfach in das Sende FIFO des Endpunkts und fertig. Beim Empfangen der Daten das selbe nur umgekehrt Bei Windows sind Funktionen zum Lesen und Schreiben auf und von einem HID in der hid.dll enthalten. Die Jan Axelson hat schon viel dazu veröffentlicht (www.lvr.com). Viel Erfolg...
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.