USB Kommunikation mit Atmega8

Gast #1525745
Lesenswert?

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
Gast #1525847
Lesenswert?

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
Angehängte Dateien:
Gast #1525884
Lesenswert?

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?
Gast #1525912
Lesenswert?

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.
Angehängte Dateien:
Gast #1525946
Lesenswert?

@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
Gast #1525957
Lesenswert?

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
Gast #1525979
Lesenswert?

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
Gast #1528513
Lesenswert?

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?
#1528528
Lesenswert?

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
Persönliche Seite #1528546
Lesenswert?

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.
Gast #1528591
Lesenswert?

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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren