Forum: Mikrocontroller und Digitale Elektronik FT232R (LernpaketMSR)


von mikro (Gast)


Lesenswert?

Hallo.
Ich hab das LernpaketMSR von franzis. Da ist ein ATiny13 dabei und eine 
Platine mit USB und FT232R drauf. hier hab ich ein Bild gefunden: 
http://www.ak-modul-bus.de/cat/images/products/fv45plo.gif  Auf der CD 
sind Treiber und paar Programme. Diese Programme sind aber in binärer 
Form und als Quellcode in VB. Ich hab einige Programme schon ausprobiert 
und es hat alles gefunzt (XP).
Nun würde ich gerne versuchen unter Linux in CodeBlocks mit wxWidgets 
ein ganz einfaches Programm zu schreiben bei dem ich einen Knopf hab und 
mit dem ich dann z.B. eine LED an- bzw. ausmachen kann. Ich hab schon 
paar Tutorials zu wxWidgets gefunden wie ich das mit der GUI machen 
könnte. Mein Problem ist aber, ich weiss nicht ob ich irgendwelche 
Bibliotheken einbinden muss um mit dem FT232R kommunizieren zu können. 
Unter XP musste ich den FTDI Treiber installieren um die USB Platine 
über eine virtuelle serielle Schnittstelle ansprechen zu können. Danach 
habe ich mit MProg die Signalleitungen invertiert und in einer INI Datei 
die Nummer der virtuellen COM-Schnittstelle eingegeben. Im Quellcode 
stand dann z.B. "DTR 1" oder "TXD 1" so wurde dann eine LED an- oder 
ausgemacht. Wie kann ich aber jetzt unter Linux in C dem FT232R sagen, 
dass er eine Spannung an RTS, DTR oder TXD ausgeben oder nicht ausgeben 
soll?

von Krapao (Gast)


Lesenswert?

Unter Linux öffnest du die serielle Schnittstelle, die vom FTDI VCP 
Treiber für Linux angeboten wird.

Und arbeitest dann wie auf dem Windows-Rechner.
http://www.mikrocontroller.net/articles/Ports_benutzen_%28GCC%29

Ein modernes Linux dürfte den FTDI VCP Treiber bereits im Kernel haben.

Die Schnittstelle kann z.B. eine solche Form haben /dev/ttyUSBx.

Möglicherweise musst du für deinen Benutzeraccount noch eine udev-Rule 
anlegen, damit dieser Benutzter auf die Schnittstelle zugreifen darf.
https://de.wikipedia.org/wiki/Udev

von mikro (Gast)


Lesenswert?

Vielen Dank!

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Ist vielleicht etwas OT, aber nach einigen Projekten mit den 
FTDI-Bridges werde ich in Zukunft wahrscheinlich nur noch 
Ethernet-Schaltungen (oder bestenfalls Enet+USB) bauen oder eben auf 
diese Brueckenbausteine komplett verzichten. Am Anfang war es fuer mich 
schon eine gute und einfache Moeglichkeit, USB-basierte Schaltungen zu 
entwickeln.

Das Problem, das zumindest ich habe ist, dass dieser Mist einfach nicht 
zuverlaessig funktioniert, ob das nun am USB-Protokoll selbst (broken by 
design) oder nur an der Treiberimplementierung liegt, kann ich nicht 
sagen. Ich habe extrem viel tricksen muessen um mit dem FT232 
vernuenftige (aber immernoch kaum perfekte) Verbindungen und Protokolle 
zu realisieren. Ohne ausgekluegelte interruptbasierte Flusskontrolle 
kannst Du es jedenfalls schon mal komplett vergessen. Das Problem auf 
Controllerseite ist halt, dass der Datenstrom byte-orientiert und nicht 
Paketorientiert ist, wie z.B. mit dem ENC28J60 und seinen Enet-PDUs.

Ich hab in Zwischenzeit genug davon, vielleicht sollte ich mal eine 
Schaltung mit dem (wohl leider auslaufenden) USBN... oder eben einem 
anderen Bridgebaustein ausprobieren. Aber durch diese UART-Kruecke (erm 
-Bruecke) erwarte ich mir davon nicht sehr viel... wird meinen 
Anforderungen in Zwischenzeit kaum noch gerecht.

Greets,
Michael

von mikro (Gast)


Lesenswert?

@Michael
Danke für den Hinweis. Gut zu wissen, dass der FT232 nicht der Bringer 
ist.

@Krapao
nochmals danke.

So nun hab ichs endlich geschafft eine LED anzumachen :)
Also die Kathode ist an DTR und die Anode an TXD.
hier der Code falls ein Anfänger auch mal so was einfaches mal machen 
möchte
(Keine Ahnung wie schlimm der Code ist aber er funzt
falls jemand Verbesserungvorschläge hat bitte her mit)

http://pastebin.com/nYBxDywe

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.