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
> 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.
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
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.
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
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
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
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.
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, ...
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.
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.
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.
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.
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.