Forum: Mikrocontroller und Digitale Elektronik V-USB selber machen


von U87ER (Gast)


Lesenswert?

Möchte über meinen PC zu einem ATMEGA88 kontakt über die USB aufnehmen.
Auf der PC-Seite dachte ich mir eine Virtuelle COM so ist die Software 
der PC-Seite das kleiner übel.

Die Fragen die sich mir stellen sind folgende:

Gibt es ein Programm mit dem ich den Gerätetreiber schreiben kann?
Wo kann ich mich über V-USB einlesen ( möchte keine weiteren Chips 
verwenden)?

Suche keine Lösungen sondern Wegweiser!

von Marvin S. (demo)


Lesenswert?

Hi,

fuer den Anfang ist wohl libusb geeignet um mit deinem controller zu 
sprechen.

V-USB ist im V-USB Wiki und den Beispielen eigentlich ausreichend 
dokumentiert.

Gruesse

Marvin

von U87ER (Gast)


Lesenswert?

Wo und wie finde ich die Wiki?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

U87ER schrieb:
> Gibt es ein Programm mit dem ich den Gerätetreiber schreiben kann?

Du brauchst keines, wenn Du eine der Standardgeräteklassen verwendest, 
die mit Low-Speed-USB verwendbar sind, also HID oder CDC.

> Wo kann ich mich über V-USB einlesen ( möchte keine weiteren Chips
> verwenden)?

Wie wäre es mit
http://www.obdev.at/products/vusb/index-de.html ?

von Oliver J. (skriptkiddy)


Lesenswert?

http://www.obdev.at/products/vusb/prjdetail.php?pid=11

Das könnte doch was sein. Es gibt aber mit dem Teil Treiberprobleme 
unter Windows 7 X64.

von U87ER (Gast)


Lesenswert?

Und nun mein Problem.

Englisch ist nicht mein Ding. Gibt es das auch in Deutsch?

von Oliver J. (skriptkiddy)


Lesenswert?

U87ER schrieb:
> Englisch ist nicht mein Ding.

Die ganze Elektronikwelt ist voll von englischen Datenblättern und 
Dokumentationen. Wie willst du dich da ohne Englisch zurechtfinden. 
Entweder Hobby/Beruf wechseln oder Englisch lernen.

SCNR
Skriptkiddy

von U87ER (Gast)


Lesenswert?

So sollte ich wohl erst mal das Forum wechseln und in einen englischkurs 
gehen? In der Schule sind wir halt noch nicht so weit.

von ingo (Gast)


Lesenswert?

Hier ein deutschsprachiges Pendant zur Beschreibung des Projektes, zwar 
noch nicht vollständig, aber die Zusammenhänge kann man schon erkennen:

http://www.rn-wissen.de/index.php/V-USB:_Ein_Firmware_USB-Treiber_f%C3%BCr_AVR

mfG ingo

von Karl H. (kbuchegg)


Lesenswert?

U87ER schrieb:
> So sollte ich wohl erst mal das Forum wechseln und in einen englischkurs
> gehen? In der Schule sind wir halt noch nicht so weit.

Macht nichts.
Technische Dokumentationen sind nicht auf dem Niveau eines Charles 
Dickens. Die sind einfach zu lesen und enthalten keinen gefinkelten 
Satzbau. Für die ersten paar Dinge wirst du ein Wörterbuch benötigen, 
mit welchem die Fachtermini übersetzt werden können. Falls das nicht 
gelingt, steht selbstverständlich auch das Forum zur Verfügung um den 
einen oder anderen Begriff zu erläutern oder zu erklären.
Abgesehen davon kommt man mit Schulenglisch der ersten beiden 
Einsteigerjahrgänge gut über die Runden, zumal in techn. Doku immer nur 
dieselben 100 englischen Wörter benutzt werden.
Wenn Japaner, deren Muttersprache nun weiß Gott wesentlich weniger 
Ähnlichkeit mit Englisch aufweist als das Deutsche, damit zurecht 
kommen, dann wirst du das auch.

von U87ER (Gast)


Lesenswert?

So werde ich es mal versuchen.

Danke.

Aber ich glaube das wird nix :-(

Mit der RS232 sache bin ich gut zurechtgekommen mit hilfe des Forums und 
der Beschreibungen aber mit USB wird das wohl ein Kampf. Wollte das doch 
genau so machen als hätte ich so ein FT Chip dazwischen. Mich um nix 
kümmern müssen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

U87ER schrieb:
> Wollte das doch
> genau so machen als hätte ich so ein FT Chip dazwischen. Mich um nix
> kümmern müssen.

Musst Du auch nicht, wenn Du die CDC-Implementierung nutzt. Du brauchst 
nur eine *.inf-Datei, davon abgesehen verhält sich "dat Dingens" genauso 
wie andere USB-Seriell-Bridges.

von Thomas E. (thomase)


Lesenswert?

U87ER schrieb:
> Wollte das doch
>
> genau so machen als hätte ich so ein FT Chip dazwischen. Mich um nix
>
> kümmern müssen.

Sieh dir das mal an:

http://www.recursion.jp/avrcdc/

In der kleinsten Variante: 1 Attiny45, 3 Widerstände, 1 Kondensator, 
1 LED

mfg.

von U87ER (Gast)


Lesenswert?

Aber wie setze ich das auf meinen 88 um?

bis jetzt sende ich das mit der RS232 so: out     UDR, zeichen
und empfange das so: in       temp, UDR

gibt es da keine Anleitung?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du solltest die V-USB-Implementierung nicht auf dem µC laufen lassen, 
auf dem Du Dein restliches Programm laufen lässt, weil die 
V-USB-Implementierung recht heikel im Umgang mit den Ressourcen des 
Controllers ist. Daher: Nimm einen Tiny45, pack da das V-USB 'rein und 
schließe den an der seriellen Schnittstelle Deines '88 an, dann musst Du 
auf dem '88 nichts weiter berücksichtigen oder ändern. Ja, ist ein 
zusätzlicher Chip, aber einfacher zu verarbeiten (DIP!) als ein FT232.

von U87ER (Gast)


Lesenswert?

Verstehe ich das richtig? Einen Tiny45 nehmen an USB ankoppeln und sein 
RX und TX an meinen ATMEGA88?

Und was muss ich in den Tiny45 schreiben?

von Oliver J. (skriptkiddy)


Lesenswert?

U87ER schrieb:
> Einen Tiny45 nehmen an USB ankoppeln und sein
> RX und TX an meinen ATMEGA88?
Genau so ist es.

> Und was muss ich in den Tiny45 schreiben?
Das hexfile für den Tiny45 das dem Sourcecode-Paket[1] beiliegt.

[1] http://www.recursion.jp/avrcdc/cdc232.2010-02-28.zip

Gruß Skriptkiddy

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

U87ER schrieb:
> Und was muss ich in den Tiny45 schreiben?

Ein Programm!
Und zwar eines, welches den Tiny45 am PC als serielle Schnittstelle 
anmeldet.
Also einen USB auf RS232-Konverter.

von U87ER (Gast)


Lesenswert?

So bin ich wieder am Anfang meiner Frage oder?

von Karl H. (kbuchegg)


Lesenswert?

Kauf dir um ein paar Euro einen USB nach RS232 Umsetzer.

Die gibt es fertig und sie kosten nicht viel.

Man kann, wenn man es kann, die entsprechenden USB Behandlungsroutinen 
auch in den µC mit einbauen, nur ist das alles nicht so trivial wie du 
dir das vorstellst.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

U87ER schrieb:
> Möchte über meinen PC zu einem ATMEGA88 kontakt über die USB aufnehmen.
> Auf der PC-Seite dachte ich mir eine Virtuelle COM so ist die Software
> der PC-Seite das kleiner übel.

Ok, eine Virtuelle COM gaukelt dem System eine COM-Schnittstelle vor, 
auch wenn das Gerät am USB hängt.

> Gibt es ein Programm mit dem ich den Gerätetreiber schreiben kann?

Ja, wird aber hier nicht benötigt. Da die Treiber bereits vorhanden 
sind.

> Wo kann ich mich über V-USB einlesen ( möchte keine weiteren Chips
> verwenden)?

Keine weiteren Chips = OBdev, da der A88 keinen USB-Port hat.
Beitrag "Re: V-USB selber machen"

> Suche keine Lösungen sondern Wegweiser!
Der Wegweiser ist, den A88 mit einem Programm auszustatten, welches 
mittels obdev eine gewisse Geräteklasse (COM-Port) abbildet.

von U87ER (Gast)


Lesenswert?

Ich will doch was lernen und nix fertiges kaufen.
Will doch nur auf dem PC eine 1 eingeben. Und LED 1 soll leuchten
2 eingeben und LED 2 soll leuchten. 0 alle LED's gehen aus. Geht über 
RS232 schon. Nun wollte ich weiter lernen und das über USB machen.

von Oliver J. (skriptkiddy)


Lesenswert?

U87ER schrieb:
> So bin ich wieder am Anfang meiner Frage oder?
Nein bist du nicht. Hier wurde doch bereits alles wichtige gesagt, um 
dich ans Ziel zu bringen.

von U87ER (Gast)


Lesenswert?

Ich lese hier aber immer wieder dinge in Englisch oder mit C 
geschrieben. Englisch kann ich noch nicht so gut und ich dachte mit 
Assenbler wäre ich richtig.

"Assembler ist für den Einstieg "von der Pike auf" am besten geeignet. 
Nur wenn man Assembler anwendet, lernt man den Aufbau eines 
Mikrocontrollers richtig kennen und kann ihn dadurch besser nutzen;"

Habe ich im Tutorial so gelesen.

Also sollte ich wohl erst mal C lernen.
Im Tutorial steht aber
"Vorausgesetzt werden Grundkenntnisse der Progammiersprache C."

Also muss ich erst C für den PC lernen um dann C für den ATMEL zu lernen 
um dann weiter lernen zu können?

Da war ich bis jetzt mit meinem Delphi und dem Assembler schon recht 
weit, dachte ich.

Was mach ich nun?

von Karl H. (kbuchegg)


Lesenswert?

U87ER schrieb:
> Ich will doch was lernen und nix fertiges kaufen.

Aber offenbar übersteigt das noch deine Fähigkeiten.
Oder wie soll ich mir sonst diverse Fragen in dem Thread erklären.

Sache ist aber auch: USB ist nicht so einfach. Das ist schon 
Königsklasse und du musst in deinem Programm in der Lage sein Timings 
einzuhalten.

Wer Autobasteln will, fängt auch nicht damit an als erstes den Brennraum 
seiner Zylinder zu modifizieren.
USB und RS232 sind völlig verschiedene Welten. Du gehts ein bischen mit 
der Attitüde ran (kommt mir vor): Da brauch ich nur in 1 oder 2 
Konfigurationsregister ein paar Bit umstellen und dann passt das schon. 
Dem ist aber nicht so.

Dein einfachster Ausweg um mittels USB zwischen PC und µC eine 
Datenverbindung herzustellen sind diese fertigen Adapter. Sie rüsten so 
gesehen auf dem PC eine RS232 nach und dann greift wieder alles was du 
in Tutorien über RS232 liest. Wenn du am Anfang deiner Karriere stehst, 
sind sie deine beste Option um erst mal mit dem lernen weiterzukommen.

USB zu RS232 ist ungefähr so wie
Schnurtelefon mit ein paar Joghurtbecher im Gegensatz zu 
Satellitentelefon.
Es reicht einfach nicht, einfach nur die Schnur länger zu machen, wenn 
man zum Satelliten will.

von U87ER (Gast)


Lesenswert?

Was ist eine Attitüde????


OK das was ich machen wollte ist wohl noch zu groß für mich sehe ich das 
richtig?

Was kann ich sonst noch so machen?
Mit der RS232 komme ich klar.
Mit ein und ausschalten auch.
LCD Display geht mit dem Tutorial gut.

einen Bootloader schreiben geht das oder ist das auch zu groß?

von ingo (Gast)


Lesenswert?

> Also muss ich erst C für den PC lernen um dann C für den ATMEL zu lernen
> um dann weiter lernen zu können?

Nicht zwingend, aber es erleichtert das Verständnis doch sehr. Der 
Unterschied zwischen Pascal (Delphi) und C ist auch nicht so groß, das 
man völlig umdenken müsste.
mfG ingo

von Karl H. (kbuchegg)


Lesenswert?

U87ER schrieb:
> Was ist eine Attitüde????

Einstellung

> OK das was ich machen wollte ist wohl noch zu groß für mich sehe ich das
> richtig?

Wenn wir das was du machen willst richtig einschätzen: Ja das ist noch 
zu viel und zu schwer.

USB zu RS232 ist ungefähr so wie
Schnurtelefon mit ein paar Joghurtbecher im Gegensatz zu
Satellitentelefon.
Es reicht einfach nicht, einfach nur die Schnur länger zu machen, wenn
man zum Satelliten will.

> Was kann ich sonst noch so machen?
> Mit der RS232 komme ich klar.
> Mit ein und ausschalten auch.
> LCD Display geht mit dem Tutorial gut.

Was ist mit Kommandoübertragung und Auswertung über die RS232?
Kannst du auf dem PC ein graphisches Frontend machen, mit dem man LED 
ein/ausschalten kann, Texte auf dem LCD anzeigen, einen Messwert vom ADC 
anfordern und auf dem PC darstellen kann. Und zwar alles in einem 
Programm und wenn geht auch dann noch wenn mitten in der Übertragung das 
Kabel ab und wieder angesteckt wird?


> einen Bootloader schreiben geht das oder ist das auch zu groß?

Kommt drauf an, wie gut du bist.

von U87ER (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Was ist mit Kommandoübertragung und Auswertung über die RS232?


Ja das mach ich schon sogar mit mehr als einem Zeichen also
"LED 1 an"
"LED 1 aus"
u.s.w.

> Kannst du auf dem PC ein graphisches Frontend machen, mit dem man LED
>
> ein/ausschalten kann, Texte auf dem LCD anzeigen,

Ja das geht super und war nicht so schwer

> einen Messwert vom ADC
>
> anfordern und auf dem PC darstellen kann. Und zwar alles in einem
>
> Programm und wenn geht auch dann noch wenn mitten in der Übertragung das
>
> Kabel ab und wieder angesteckt wird?

Ja aber das umrechnen des Messwetes mache ich mit dem PC da ich noch 
nicht genau verstanden habe wie ich mit dem Atmel rechnen kann.

von Karl H. (kbuchegg)


Lesenswert?

OK

Was ist mit PWM?
Timer, Uhr, Servos, etc.
Messgeräte wie Voltmeter, Frequenzzähler, etc.

von U87ER (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Kommt drauf an, wie gut du bist.

Kann ich nicht sagen da ich keinen vergleich habe. Meine Freunde machen 
so etwas nicht und meine Mutter sagt immer sie hat keine Ahnung davon.

von Oliver J. (skriptkiddy)


Lesenswert?

U87ER schrieb:
> Ja aber das umrechnen des Messwetes mache ich mit dem PC da ich noch
> nicht genau verstanden habe wie ich mit dem Atmel rechnen kann.
Bist du ein Troll oder einfach nur blutiger Anfänger?

von U87ER (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> OK
>
>
>
> Was ist mit PWM?

Du meinst ein High zeitlich anderst zu machen als ein Low. Habe ich noch 
nicht gemacht aber mir fällt auch keine Anwendung dafür ein.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Bist du ein Troll oder einfach nur blutiger Anfänger?

Tja, so ein Beitrag wie der hier

U87ER schrieb:
>> Kommt drauf an, wie gut du bist.
>
> Kann ich nicht sagen da ich keinen vergleich habe. Meine Freunde machen
> so etwas nicht und meine Mutter sagt immer sie hat keine Ahnung davon.

... legt schon einen gewissen Verdacht nahe.

von U87ER (Gast)


Lesenswert?

Was mache ich? Was für ein Verdacht?

von U87ER (Gast)


Lesenswert?

Kann gerne zeigen was ich schon gemacht habe.

von Karl H. (kbuchegg)


Lesenswert?

U87ER schrieb:

>> Was ist mit PWM?
>
> Du meinst ein High zeitlich anderst zu machen als ein Low.

Jep. Und zwar einstellbar.

> Habe ich noch
> nicht gemacht aber mir fällt auch keine Anwendung dafür ein.

zb LED dimmen, zb Motoren ansteuern, zb.

Es gibt viele Anwendungen dafür. Überhaupt - 'Timer' das ist ein weites 
Feld, von dem du viel mehr hast als von einem Bootloader.

Und dann natürlich 'rechnen im µC'. Auf Dauer ist das kein Zustand, wenn 
du dazu immer den PC brauchst. Dein "Voltmeter" soll auf dem LCD die 
Spannung, Frequenz oder was auch immer ausgeben.

2 Lichtschranken an den µC. Die eine startet eine Stoppuhr, die andere 
stoppt sie. Verwendung: Fallzeiten messen, Durchfahrzeiten eines 
Modellautos messen. Daraus die Geschwindigkeit berechnen, etc.

Rundenzähler für die Autorennbahn.

Oder Menüsysteme. Kannst du zb 8 blinkende LED mit 3 Tastern und einem 
Menü am LCD unabhängig voneinander konfigurieren (Blinkzeiten 
einstellen).

Da gibt es noch jede Menge Zeugs, die wesentlich wichtiger sind, als ein 
Bootloader.

von U87ER (Gast)


Lesenswert?

Habe hier noch so eine RGB-LED hat zwar 6 Beine ( 1 Rot, 1 Grün , 2 
Blau, 2 Plus ) aber damit kann ich doch mal ein Farbspiel machen mit PWM 
und PC Software.

Mit dem Rechnen dachte ich mir wäre für mich noch zu schwer. Dachte 
V-USB wäre einfacher.

Soll ich dir zeigen wie ich das mit der LED mache damit du mir sagen 
kannst ob ich schon ein Bootloader oder was größeres machen kann.

von ???? (Gast)


Lesenswert?

Ich kann dich einfach nicht verstehen. Du musst doch mit einfachen 
Dingen anfangen und nicht gleich mit den schweren Sachen. Steuere doch 
einfach mal über PWM einen Servo an.

von U87ER (Gast)


Lesenswert?

Ich habe keinen Servo.

Ich mach mal was mit der LED

von Karl H. (kbuchegg)


Lesenswert?

U87ER schrieb:
> Ich habe keinen Servo.
>
> Ich mach mal was mit der LED

Eine RGB Led ist doch ein dankbares Objekt.
Farbwechsel, die sich durchdimmen.
Blinksequenzen etc.

Zusammen mit einem LCD und Tastern als Eingabemedium ergeben sich da 
viele Aufgabenstellungen.

von U87ER (Gast)


Lesenswert?

Ich dachte mir das so. Ich mache eine Software auf dem PC welches ein 
Farbspectrum hat. Wenn man nun mit der Maus auf eine Farbe klickt nimmt 
die LED diese Farbe an. Heller und Dunkeler ist in dem Farbspectrum mit 
drin. So eine Kreis mit allen farben halt.

Das ganze wird über die RS232 übergeben und die PWM stellen sich ein.

Habe eben mal die Vorwiederstände berechnet für die LED.

R=U/I
U=Uin-Uout

R=(5-2,25)/0,02
Rot  = 2,25V bei 20mA an 5 Volt = 150Ohm (137,5Ohm)

R=(5-2,35)/0,02
Grün = 2,35V bei 20mA an 5 Volt = 150Ohm (132,5Ohm)

R=(5-4,25)/0,02
Blau = 4,25V bei 20mA an 5 Volt =  39Ohm (37,5Ohm)

Jetzt muss ich mir noch ein Protokoll ausdenken. Aber ich denke mal

RxxxGxxxBxxx

Wobei xxx immer ein Wert zwischen 000 und 255 ist also so
R001G000B020

Rot ganz wenig
Grün garnicht
Blau nur ein wenig

Jenachdem wie die geforderte Farbe halt ist.

Kann ich hier einen neuen Beitrag erstellen und das beschreiben was ich 
mach oder ist soetwas nicht gewollt. Würde Software Schaltplan und 
PC-Software natürlich weiter geben.

von Oliver J. (skriptkiddy)


Lesenswert?

Erster Post:
>>Autor: U87ER (Gast)
>>Datum: 31.01.2011 11:32

Letzter Post:
>>Autor: U87ER (Gast)
>>Datum: 31.01.2011 15:56

Da war es aber heute jemandem ab Mittag sehr langweilig auf Arbeit.

:D

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Skript Kiddy schrieb:
> Da war es aber heute jemandem ab Mittag sehr langweilig auf Arbeit.

Wohl nicht:

U87ER schrieb:
> In der Schule sind wir halt noch nicht so weit.

von Uwe S. (de0508)


Angehängte Dateien:

Lesenswert?

Hallo,

die Anregung CDC-232 mit dem atTiny45/85 zu verwende, ist ja schon 
gekommen.

Die Firmware für f=16,5MHz die beiden atTiny habe ich dir eben noch mit 
der aktuellen VUSB Lib vom 20100715 über setzt,

siehe Anhang.

Je nachdem, ob du Linux oder Win*OS verwendest, wird noch ein Treiber 
benötigt !

http://www.recursion.jp/avrcdc/driver.html

Ich habe selbst drei atMega48 CDC 232 am laufen.

.

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
Noch kein Account? Hier anmelden.