Forum: Mikrocontroller und Digitale Elektronik ATmega128 und USB


von Martin Karing (Gast)


Lesenswert?

Hallo,

ich bin dabei eine Lösung zu suchen eine bestehende Schaltung die mit 
einem ATmega128 arbeitet und via RS232 mit einem PC kommuniziert auf 
eine Kommunikation via USB umzustellen.

Der Qualitätsanspruch der Lösung liegt am Ende da das man das Gerät in 
den Rechner einstecken können soll und es funktioniert ohne die 
Notwendigkeit irgendwelche virtuellen Schnittstellen einzurichten.

Das Gerät um das es geht ist ein Optisches Messgerät.

Ansätze die ich bis jetzt gefunden habe sind folgende:
V-USB (http://www.obdev.at/products/vusb/index.html) als reine Software 
Lösung gefällt mir nicht wirklich, vor allem weil es relativ langsam 
arbeitet.

Atmel AT90USB1286 scheint des ATmega128 ziemlich ähnlich zu sein was die 
Hoffnung aufkeimen lässt das die bestehenden Programme für den ATmega128 
auch auf dem AT90USB1286 ohne oder nur mit minimalen Änderungen 
funktionieren. Diese Lösung wäre nur relevant wenn ich mit der Annahme 
das die Programme übertragbar sind richtig liege.

Dann sehe ich die Möglichkeit einen ATmega128 mit einem Maxim MAX3420E 
oder einem FTDI FT2232H zu kombinieren. Bei dem Chip von Maxim ist aber 
auf der Homepage angegeben "All versions are Not Recommended for New 
Designs." ohne das eine Alternative angegeben ist. Da bin ich mir nicht 
sicher was ich davon halten soll. Auf der anderen Seite braucht der 
FT2232H einen zusätzlichen Treiber und kann nicht über einen Standard 
Treiber mit Windows kommunizieren. Das ist etwas was auch nicht so super 
ist.

Mehr Lösungsansätze habe ich bis jetzt noch nicht gefunden.

Grundsätzlich brauche ich am Ende eben irgendeine saubere Möglichkeit 
der Kommunikation zwischen PC und µC die mit einem möglichst geringem 
Installationsaufwand auf dem PC einhergeht.

Mit welche Lösung sollte ich mich am ehesten weiterbeschäftigen?

Martin

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> V-USB gefällt mir nicht wirklich
> vor allem weil es relativ langsam arbeitet.
Ist deine bisherige serielle Schnittstelle etwa schneller?

Du brauchst für jede "RS232 nach USB" Lösung einen Treiber, weil RS232 
nicht wie z.B. HID fest im Betriebssystem eingbaut ist.


> eine bestehende Schaltung die mit
> einem ATmega128 arbeitet und via RS232 mit einem PC kommuniziert
Und das mit wenig Aufwand auf USB umbiegen: nimm den FTDI.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Martin Karing schrieb:
> Hallo,
>
> ich bin dabei eine Lösung zu suchen eine bestehende Schaltung die mit
> einem ATmega128 arbeitet und via RS232 mit einem PC kommuniziert auf
> eine Kommunikation via USB umzustellen.

http://www.ftdichip.com/Products/FT232R.htm

(Langsam sollten die mich dafuer bezahlen, dass ich ihnen so Werbung 
mache).

> Der Qualitätsanspruch der Lösung liegt am Ende da das man das Gerät in
> den Rechner einstecken können soll und es funktioniert ohne die
> Notwendigkeit irgendwelche virtuellen Schnittstellen einzurichten.

Diese Hoffnung ist Dir mit dem FT232 nicht genommen, da Du es mit Hilfe 
einer Software "direkt" ansprechen kannst, z.B. libftdi/libusb in Linux, 
so dass man den (in den Moeglichkeiten begrenzten) Umweg ueber eine 
virtuelle Seriellschnittstelle nicht gehen muss. Aber ganz ohne eine 
Form von Treiber kommst natuerlich nicht aus, fuer Deinen AT90USB 
braeuchtest auch einen und den duerftest Dir wahrscheinlich auch noch 
selber stricken.

> Das Gerät um das es geht ist ein Optisches Messgerät.
>
> Ansätze die ich bis jetzt gefunden habe sind folgende:
> V-USB (http://www.obdev.at/products/vusb/index.html) als reine Software
> Lösung gefällt mir nicht wirklich, vor allem weil es relativ langsam
> arbeitet.

Wieviel Daten werden denn uebertragen? Wenn Du es sehr schnell brauchst, 
waere der FT245 auch eine Alternative, der macht dann bis zu 1MB/s USB 
Fullspeed per FIFO:

http://www.ftdichip.com/Products/FT245R.htm

> Atmel AT90USB1286 scheint des ATmega128 ziemlich ähnlich zu sein was die
> Hoffnung aufkeimen lässt das die bestehenden Programme für den ATmega128
> auch auf dem AT90USB1286 ohne oder nur mit minimalen Änderungen
> funktionieren. Diese Lösung wäre nur relevant wenn ich mit der Annahme
> das die Programme übertragbar sind richtig liege.

Haha :P Der war gut :D
Minimale Aenderungen hast bei der USART-Loesung, da kann der 
Controller-Teil im Prinzip bleiben wie er ist. FIFO muesstest dann 
umstellen. Alles andere wird komplizierter.

> Dann sehe ich die Möglichkeit einen ATmega128 mit einem Maxim MAX3420E
> oder einem FTDI FT2232H zu kombinieren. Bei dem Chip von Maxim ist aber
> auf der Homepage angegeben "All versions are Not Recommended for New
> Designs." ohne das eine Alternative angegeben ist. Da bin ich mir nicht
> sicher was ich davon halten soll. Auf der anderen Seite braucht der
> FT2232H einen zusätzlichen Treiber und kann nicht über einen Standard
> Treiber mit Windows kommunizieren. Das ist etwas was auch nicht so super
> ist.

Wo ist jetzt das Problem? Unter Linux brauchst z.B. keinen weil der 
laengst im Standardkernel ist. Dass Windows kaum Treiber mitliefert ist 
doch bekannt, was erwartest Du bitteschoen?

> Mehr Lösungsansätze habe ich bis jetzt noch nicht gefunden.

Sind genug, entscheide Dich.

> Grundsätzlich brauche ich am Ende eben irgendeine saubere Möglichkeit
> der Kommunikation zwischen PC und µC die mit einem möglichst geringem
> Installationsaufwand auf dem PC einhergeht.

Du meinst ohne. Und Deine Software sollte man natuerlich auch nicht 
installieren muessen... aber das Einstecken am USB-Port ist jetzt nicht 
zu viel Aufwand, oder?

Greets,
Michael

von Karl H. (kbuchegg)


Lesenswert?

Wenn es sich um ein Einzelstück handelt und das Problem nicht die 
Übertragungsrate ist, würde ich nicht lange fackeln und mir einen 
USB-RS232 Stick kaufen. Die 5 Euro für den Stick hast du mit 10 Minuten 
Recherche schon längst aufgebraucht.

von Martin Karing (Gast)


Lesenswert?

Erstmal danke für die vielen Antworten.

@Lothar Miller:
Natürlich ist die RS232 Schnittstelle nicht unbedingt schneller. Aber 
schon jetzt kommt die RS232 mit der Datenübertragung nicht hinterher und 
in absehbarer Zukunft wird die Menge der Daten noch steigen was nicht 
unbedingt für eine RS232 Schnittstelle spricht.

@Michael G.:
Das mit den minimalen Änderungen ist falsch rübergekommen. Der µC macht 
noch ein paar Sachen die nichts direkt mit der Datenübertragung zu tun 
haben. Der agiert z.b. als SPI Master und wertet die Messdaten zur 
Kalibrierung des Messgerätes aus. Ich habe diese Anteile gemeint bei 
denen ich höchstens kleine Änderungen erhoffe.
Das die Umstellung von RS232 auf USB mit gröberen Änderungen einher geht 
ist mir klar.

Aber ich will nicht unbedingt eine Quick & Dirty Lösung indem ich USB 
direkt auf RS232 umsetze und den µC einfach so weiterarbeiten lasse wie 
bisher.

Martin

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Welche Datenraten brauchst denn ueberhaupt. Wenn bisher eine einfache 
RS232 gereicht hat, brauchst doch jetzt nicht auf einmal USB HighSpeed, 
oder?

von Michael (Gast)


Lesenswert?

Oder so etwas hier:

http://www.vinculum.com/prd_vdip1.html

kommuniziert mit dem MC u.a. auch über UART, ist in Deinem Falle also
vielleicht einfach einzubinden.

Viele Grüsse
Michael

von Frank K. (fchk)


Lesenswert?

Du kannst auch einen kleinen Atmega 16U2 oder den Vorgänger 90USB162 
nehmen, dort ein Generic HID oder ein CDC USB Device aufsetzen und das 
ganze mit dem vorhandenen M128 koppeln. HID und CDC sind Standard USB 
Geräteklassen und ohne Treiber benutzbar.

fchk

von Mars (Gast)


Lesenswert?

Frank K. schrieb:
> HID und CDC sind Standard USB
> Geräteklassen und ohne Treiber benutzbar

Für CDC brauchst du unter Windows einen Treiber.
Mit der HID Device-Class bist du auf max. 64KB je Kanal beschränkt.

von Frank K. (fchk)


Lesenswert?

Für CDC brauchst Du maximal ein INF-File, aber keinen Treiber.

fchk

von Mars (Gast)


Lesenswert?

Ja und was glaubst du macht das inf-File?

Es ist vollkommen egal ob ich "nur" ein inf-File oder auch ein sys-File 
ausliefern muss. Sobald Windows das Gerät nicht wie bei HID automatisch 
erkennt, hat man als Hersteller von dem Gerät sehr viel Ärger und 
Arbeit.
Man muss sich um die "DAU-sichere" Installation des Treibers kümmern, um 
Updates, den Treiber an neue Windows Versionen anpassen, neuerdings auch 
alles von Microsoft signieren lassen, ...

von Frank K. (fchk)


Lesenswert?

Mars schrieb:

> Es ist vollkommen egal ob ich "nur" ein inf-File oder auch ein sys-File
> ausliefern muss.

Das glaubst Du spätestens dann nicht mehr, wenn Du ein sys-File selber 
programmieren darfst.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Schau dir mal den AT90USBKey an, der ist schick und für solche Aufgaben 
gibt es CDC-Beispiele, ganz easy, UŚB powered und alles was mit USB zu 
tun hat ist fest onboard, keine Löterei. Alle Ports sind auf 
Stiftleisten nach aussen geführt.

von Mars (Gast)


Lesenswert?

Frank K. schrieb:
> Das glaubst Du spätestens dann nicht mehr, wenn Du ein sys-File selber
> programmieren darfst.

Keiner hat was von selber programmieren gesagt.
Es gibt ja bereits genug generische USB-Treiber. Sei es als OpenSource, 
vom Chiphersteller, gegen $ oder von Microsoft.

von Mars (Gast)


Lesenswert?

Der AT90USB ist ganz nett, unterstützt Full-Speed USB OTG, allerdings 
wird es bei 8MHz @3.3V eng, wenn man wirklich die USB Full-Speed 
Datenrate ausschöpfen will.

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.