Forum: Mikrocontroller und Digitale Elektronik Programm -> USB -> ATMega


von Florian G. (aenimatronik)


Lesenswert?

Hallo Leute!

Ich wühle mich schon seit ein paar Tagen durchs I-Net, finde aber nichts 
passendes. Deshalb möchte ich mal euch befragen, denn ich bin mir 
sicher, dass irgendwer von euch davon einen Plan hat ! :-)

Also:
Ich möchte unter Visual Studio 2008 und Vista ein Programm mit C++ 
schreiben, das dann via USB mit einem ATMega kommuniziert.

Ich stelle mir das nun so vor:
Ich binde so einen "SeriellPort" aus der Toolbox in mein Programm ein, 
wobei ich dann die dazugehörigen Funktionen dazu bei msdn finde.
Von der Controllerseite her, würde ich an die RS-232-Schnittstelle einen 
IC anbinden, der mir RS-232 auf USB umsetzt. Soweit passt ja schonmal 
alles zusammen.

Aber was fehlt mir jetzt zwischen dem SerialPort aus der Toolbox und dem 
USB-Anschluss am Rechner, damit das Programm auch mit dem Controller 
kommunizieren kann?

Klappt das überhaupt so ?

Ich bin für jede Hilfe und Input dankbar!!!

Danke schonmal im Vorraus ! :-)

von Marc (Gast)


Lesenswert?

Florian G. schrieb:
> Von der Controllerseite her, würde ich an die RS-232-Schnittstelle einen
> IC anbinden, der mir RS-232 auf USB umsetzt.

Ich denke dieser "Umsetzer" hat einen Treiber der dir eine virtuelle 
Serielle Schnittstelle simuliert: sprich du hast einen Com3 oder KA was. 
Den kannst du das mit dem "SeriellPort" ansprechen.

Gruß Marc

von Florian G. (aenimatronik)


Lesenswert?

DANKE ! :-)

Das hört sich doch schon mal super an und es klingt so, als würde das 
die Lücke schließen :-)

Ich werde deinem Tipp gleich nachgehen ! :-)

Für weiter Tipps bin ich ebenfalls dankbar!

von ... .. (docean) Benutzerseite


Lesenswert?

wenn Platine USB haben soll

PC<-USB->FT232<-UART->ATmega

Häufig verwendet bewährt

oder V-USB Google hilft.

oder

PC<-USB->USB-RS232-Wandler<-RS232->MAX232<-UART->ATmega

Platine hat dann einen Ser. Port

von Florian G. (aenimatronik)


Lesenswert?

Das Ganze soll so realisiert werden:

PC<-USB-Kabel->FT232<-RS232->ATmega



@ Marc

Ich kann mir jetzt aber noch nicht wirklich vorstellen, wie denn nun der 
SeriellePort(aus der Toolbox) den Kontakt zu dem Treiber-"Port" 
herstellt. Ich meine, woher weiß der eine Port von der Existenz des 
Anderen und dem Umsatnd, dass sie miteinander kommunizieren sollen? Hast 
du da auch noch eine Erklärung für ?

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Kauf dir doch einfach so ein USB->Seriell Kabel.
Hab einen Stecker (Digitus) vom großen C. Funktioniert
auch. Kommt drauf an, was du für ein Experimentierboard
hast. Mit serieller Schnittstelle wäre das optimal.
Aufpassen : Hab die Erfahrung gemacht, daß meine beiden
(Digitus + Vivanco) ein Nullmodemkabel brauchen.

PS: Frage an die anderen :
Kann Windows nur auf einer Schnittstelle senden ?
Hatte mir mal ein kleines Windows-Programm geschrieben,
das 2 Schnittstellen öffnet. Konnte aber nur mit der
Schnittstelle senden, die als erstes geöffnet wurde.

Hat jemand auch schon diese Erfahrung gemacht ?

von blubb (Gast)


Lesenswert?

unter windowes wird dein visual studio dir das schon abnehmen

es gibt bereits fertige libs wo man nur sagen muss welchen COM port man 
öffnen will

wenn das klappt gibts nen einfaches write und read vom COM ...
was du mit diesen daten dann anstellst is wiederum deine sache

was im hintergurnd passiert mit FTDI treibe rund so .. is DIR egal
das macht das betriebssystem


die libs bieten hierfür meist ganz einfache funktionen
nach der art : int OpenCOM( char *comport );
rückgabewert ist eben 1 wenns geklappt hat , 0 wenn der COM nicht 
existiert
so kann man zB listboxen erstellen mit COM die im system existieren

vlt is das ganze eine fertige klasse unter C++
dort wirds dann wieder was mit -->  geben ...

prinzip is immer das selbe

COM abfragen im betriebssystem
COM öffnen
Baudrate einstellen

fetrig



dann musst du dir für die kommunikation ein protokoll überlegen
entweder ganz stur über ASCII
( man kanns beim debuggen auch mal mitlesen .)
oder man baut sich protokolle zusammen

0x10 <länge> <datenblock> <checksumme> 0x80
oder sowas in der art

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.