Forum: Mikrocontroller und Digitale Elektronik USB-Interface


von Andreas Juhl (Gast)


Lesenswert?

Hallo alle,

hat einer eine Idee, wie ich Problemlos einen ATmega16 mit 8 Mhz
getaktet an den USB Bus anschliessen kann um meine messdaten möglichst
schnell an den PC zu schicken?

Ich habe schon die AVR309 angekuckt, aber es scheint nur mit 12 Mhz zu
funktionieren!

Danke! Und schöne Weihnachten!

von moeter (Gast)


Lesenswert?


von Rolf Magnus (Gast)


Lesenswert?

> hat einer eine Idee, wie ich Problemlos einen ATmega16 mit 8 Mhz
> getaktet an den USB Bus anschliessen kann um meine messdaten
> möglichst schnell an den PC zu schicken?

Definiere "möglichst schnell". Ich nehme nicht an, daß du die vollen
480MBit eines USB 2.0 wirklich brauchst.
Die üblichen Verdächtigen: FT232 und FT485.

> Ich habe schon die AVR309 angekuckt, aber es scheint nur mit 12
> Mhz zu funktionieren!

Wäre es denn so schlimm, mit 12Mhz zu takten?

von smartie (Gast)


Lesenswert?

nimm nen USB nach RS232 Adapter oder direkt nur den FTDI Chip, die
können bis 1MBit.

von Hermann K. (Gast)


Lesenswert?

Oder nimm nen CP2102. ISt etwas günstiger und brauch weniger Zusatzbau
teile.

von Feadi (Gast)


Lesenswert?

Hi,

es gibt auch noch den PDIUSBD12D, den gibts bei Reichelt und Segor.

Feadi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der erfordert aber deutlich mehr Softwareaufwand, sowohl im AVR als
auch auf der PC-Seite, sofern der USB-Stack, der auf dem AVR zu
schreiben ist, nicht eine der Standardgeräteklassen (HID etc.)
implementiert.

Da ist ein FT232 deutlich interessanter, und der dürfte in seiner
neuesten Inkarnation (FT232R, siehe gleichnamiger Thread) dem CP2102
nun endgültig überlegen sein (keine zusätzlichen Bauelemente
erforderlich, dafür aber auch in einem lötbarem Gehäuse verfügbar und
deutlich weiterführende Treiberunterstützung).

von Andreas Juhl (Gast)


Lesenswert?

So, danke mal für die Recht flotten und auch sehr informativen
Antworten.

Soweit hab ichs kapiert, ist besser ich nehm nen separaten Chip!

Hab mich jetzt umgekuckt, und mein Mega16 kann 500.000 Baud bei 8 Mhz,
das langt bei weitem!

Aber wie funktioniert das jetzt???

Ich schließ mein TXD und RXD an den chip an, und stöpsel das alles an
den USB bus?

Dann wird der CP2102 einfach als USB Comport eingebunden, in der
systemsteuerung die baudrate gewählt und das funktioniert so ?

OK Danke mal!

Sorry für die Blöden fragen, bin halt ein Neuling!

von Andreas Juhl (Gast)


Lesenswert?

Ich schließ mein TXD und RXD an den chip an, und stöpsel das alles an
den USB bus?

Dann wird der CP2102 einfach als USB Comport eingebunden, in der
systemsteuerung die baudrate gewählt und das funktioniert so ?

H

von thkais (Gast)


Lesenswert?

Bei dem CP2102 kann ichs Dir leider nicht sagen - da wirst Du wohl oder
übel ins zugehörige Datenblatt schauen müssen.

Beim FT232 wird ein Treiber installiert (von der Herstellerseite
downloadbar) der einen virtuellen Com-Port installiert. Die PC-Software
muß dann nur einen Com-Port ansteuern können.

von Andreas Juhl (Gast)


Lesenswert?

Ja und wie sag ich jetzt z.Bsp dem FT232 mit wieviel Baud mein Atmel mit
ihm Kommunizieren tut?

Gibt es da eine Software, mit der man den dann den FT232 / CP2102 über
die USB Schnittstelle konfigurieren kann oder wie? und kostet die was?

von Stefan Seegel (Gast)


Lesenswert?

Hi,

Wie schon angeprochen installiert der Treiber für den FT232 einen
virtuellen COM Port, und dessen Baudrate kannst du ja entweder in der
Systemsteuerung, in einem Terminalprogramm, in Deinem Sourcecode usw
usw usw einstellen, genauso wie bei einem ganz normalen Com Port. Die
Geschwindigkeit die da eingestellt wird entspricht genau der
Geschwindigkeit zwischen FTDI Chip und Deinem Atmel...

Stefan

von Andreas Juhl (Gast)


Lesenswert?

Aja jetzt hab ichs kapiert, ist ja genial einfach !!!

von Martin (Gast)


Lesenswert?

Hallo

Natürlich hast du bei der virtuellen COM den Nachteil, dass du nur die
standard Baudraten fahren kannst.
Durch die 8MHZ kann der ATMEGA diese krummen Baudraten nicht richtig
darstellen.
Aus diesem Grund wird der Fehler zu höheren Baudraten hin immer
größer.

Mein Tipp:
Es gibt auch noch einen anderen Treiber für den FTDI, der auch auf
der Homepage verfügbar ist, den D2XX-Treiber.
Dort hat man was Baudraten angeht freie Wahl.
Der Nachteil:
Man sieht keine virtuelle Com. Man kann nur mittels Programmiersprache
z.B. C auf die Treiber und somit auf das Gerät zugreifen, aber du
kannst dann die volle Bandbreite von 500.000 Baud nutzen.

Tschüss
Martin

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

man kann auch die VCP-Treiber so trimmen das sie andere Baudraten
einstellen. IIRC geht das über die INF-Datei des Treibers. Der
interpretiert dann die eingestellten Baudraten einer Apllikation
einfach anderst. Auf der Seite von FTDI gibts irgendwo ein Dokument das
das erklärt.

Matthias

von moin (Gast)


Lesenswert?

Hallo,
ich habe auch gerade mit dem FT232 gespielt um eine möglichst hohe
Übertragungsrate zu erhalten. Mein ATMEGA8 (16MHz) sendet mit 1MBaud
und im Terminalprogramm (HTerm) habe ich auch 1MBaud eigestellt. Läuft
bei mir unter virtuellem COM5 (war gerade frei). Es hat bei meinem
ersten Versuch gleich geklappt (mit der Standartinstallation). Die
Aussichten ohne großen Aufwand eine hohe Datenübertragung zu
ermöglichen sind wohl groß.
Gruss
moin

von Andreas Juhl (Gast)


Lesenswert?

HE DANKE,

im Forum hier ist wohl viel Passiert, seit dem ich das letzte mal da
war!

So einfach geht das?! Ist ja super, also dann danke mal kollegen!

Hat noch einer einen Tipp?, bis jetzt Programmiere ich uC in Assembler
und die Windows Anwendungen in RapidQ-Basic.

Was für Programmiersprachen sollte man heutzutage verwenden?

MFG und vielen Dank

Andreas

von Karsten Bier (Gast)


Lesenswert?

Also da hab ich jetzt auch noch ne Frage, wo wir grad dabei sind....

ich schreibe seit etlichen Jahren alle Programme nach wie vor unter
DOS, das reicht für meine Zwecke (bin Hard-Warer, SW iss nix für mich,
besinders seit Windows)!

Kann ich wirklich ganz einfach, einen FTDI mit einer Schaltung
verbinden (TX, RX) und dann so tun, als wäre das Gerät ein normales COM
Gerät?

Installiert der FTDI Treiber einen dritten COM?

Was passiert, wenn ich zwei oder mehr dieser Geräte an mein USB
anstöpsel? Beginnt dann das große Who-is-Who, oder gibt es da auch eine
Lösung?

Wäre für jeden Tipp dankbar...

Gruß
KB

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, unter DOS kannst Du mit USB-Geräten gar nicht kommunizieren, aber
das ist Dir vermutlich auch klar.

Der Schnittstellentreiber des FT232 und auch anderer
USB-Seriell-Wandler installiert in der Tat eine weitere (virtuelle)
serielle Schnittstelle, die sich aus Sicht darauf zugreifender
Programme (fast) genauso verhält wie eine "echte".
Es gibt kleine Unterschiede im Zeitverhalten, aber davon abgesehen sind
die Dinger tatsächlich echte serielle Schnittstellen,

Du wirst allerdings, wenn Du Programme schreiben möchtest, die unter
Windows laufen und sinnvolle Dinge mit seriellen Schnittstellen
anstellen sollen, Dich von Deiner DOS-Entwicklungsumgebung trennen
müssen. DOS-Programme greifen mittels direkter Hardwarezugriffe auf
serielle Schnittstellen zu und verwenden dazu keine Devicetreiber oder
ähnliches (weil u.a. IBM zu blöd war, vernünftige Schnittstellentreiber
in das BIOS einzubauen). Direkte Hardwarezugriffe werden unter Windows
abgefangen und -sofern sie von DOS-Programmen ausgeführt werden- auf
eine virtualisierte Hardware losgelassen. Die allerdings bildet nicht
alle am Rechner angeschlossenen Geräte ab, sondern nur einige wenige
Standardgeräte (COM1 & COM2 etc.). Eventuell funktioniert das noch mit
COM3 und COM4, jenseits davon ist aber definitiv nichts mehr zu löten.
Auch das Zeitverhalten dieser Virtualisierung ist alles andere als der
Funktion förderlich, so daß auch für die Ansteuerung "echter"
serieller Schnittstellen was anderes als DOS-Programme verwendet werden
sollten.

Du musst aber keine "Fenster"-Anwendungen schreiben, unter Windows
gibt es das Konzept der Konsolapplikationen. Die laufen in diesen
Textfenstern ("Eingabeaufforderung"), die oft fälschlich als
"DOS-Fenster" bezeichnet werden. Konsolapplikationen sind aber echte
Windows-Programme, mit Zugriff auf Windows-Gerätetreiber und ohne
Segment-Krampf, linearem 32-Bit-Adressraum, Dateien mit Dateinamen
(anstelle 8.3-Kürzeln) etc.
Es lohnt sich. Obendrein kann man mit Multithreading in solch einer
Konsolapplikation auch Dinge quasiparallel "im Hintergrund" ablaufen
lassen, was auch sehr interessante Möglichkeiten eröffnet.

Eine eineindeutige Zuordnung mehrerer FT232 zu den ihnen einmal
zugewiesenen Schnittstellennummern lässt sich durch Anschluss eines
seriellen EEPROMs und Vergabe einer Seriennummer an die FT232
hinbekommen. Bei der neuesten Inkarnation, dem FT232R, ist das EEPROM
in den Chip integriert und von vornherein mit einer eineindeutigen
Seriennummer programmiert.
Der Treiber bietet für jeden installierten FT232 (oder 245) die
Möglichkeit, dessen Schnittstellennummer festzulegen. Windows
unterstützt 255 serielle Schnittstellen, COM1..COM9,
\\.\COM10..\\.\COM255 (die andere Schreibweise ist bei der
Ansteuerung von Schnittstellennummern größer 9 erforderlich).

Viel Erfolg beim Lossagen von DOS.

von Maic A. (nx_74206)


Lesenswert?

Schau dir mal das aplicationboard von der Elektor für den r8c/13 an !
die nutzen einen PL2303x von Prolific.  und für den gibt es sogar
treiber(win98 bis W2k). ist eine wirkliche anternative zu RS232

gruß Maic

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da der PL2303 nichts anderes ist als ein USB-Seriell-Adapter (genauso
wie FT232 und CP2102), sehe ich hier nicht so ganz, was da jetzt die
"anternative" sein soll.

Obendrein sind die Prolific-Adapter die am schlechtesten dokumentierten
mit dem geringsten Support - gerade FTDI steht da doch etwas anders da.

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.