Microcontroller an USB

Hallo,

wie komplex ist es, einen Microcontroller zu programmieren, der folgendes kann:

Er soll ein serielles Input Board abfragen, d.h. er muß ein Signal an das (vorhandene) Input Board senden, dass dieses an 96 Eingängen den digitalen Eingang feststellt. Dann soll er über Taktsignale auf einer zweiten Leitung diese Daten aus dem Board über eine dritte Leitung auslesen. Diese 96 Bits soll er dann speichern und auffüllen mit beispielsweise 10 "Einsern" zur Erkennung des Anfangs und diese 106 Bits dann über Firewire oder USB an den PC übertragen.

Das Ganze läuft soweit über Ansteuerung des Input Boards über RS232 (mit MAX232), allerdings ist die Frage, inwieweit die serielle Schnittstelle in kommenden Computergenerationen noch vorhanden ist.

Wie komplex ist solch ein Programmierung und welcher Controller würde sich für diesen Zweck anbieten?

Danke schon mal im Voraus!

Gruss Sebastian

Reply to
Sebastian Schöps
Loading thread data ...

Hallo Sebastian,

Sebastian Schöps schrieb:

Wenn ich es richtig verstehe hat das Input Board eine RS232-Schnittstelle. Dann nimm doch einfach einen USB-seriell-Wandler und fertig. Wenn es denn im Gerät sein muss, nimmst Du einen Baustein von FTDI.

Gruß, Kurt

--
PiN - Präsenz im Netz GITmbH
Kurt Harders
http://www.pin-gmbh.com
Reply to
Kurt Harders

Hi!

da er von einer CLK-Leitung spricht, denke ich eher, das das SPI ist.

aber der FTDI ist genau der richtige für diesen Zweck. Einen kleinen Atmel AVR, der SPI und seriell kann, die seriellen Daten über SPI einließt und in 12 Bytes Speicher shiftet und per Rs232 wieder an den FTDI ausgibt. Fertig.

Aufwendig ists nicht. Nur kostet es natürlich Zeit, wenn man noch nie mit einem Atmel gearbeitet hat. Aber man kann ja alles lernen:

Tutorial:

formatting link
Atmel:
formatting link
(->Microcontroller->AVR) einen mit wenigen Pins, SPI und UART nehmen (z.B. AtMega8) USB:
formatting link
(FT232BM ist der richtige!)

-> Schaltung als Mischung zwischen dem Tutorial und der Referenzschaltung von FTDI aufbauen.

-> avrgcc + AVRStudio + Ponyprog zum Entwicklen/Programmieren verwenden.

Hinweis: Die 12 Bytes seriellen Daten mit einem Start(z.B. 0xAA) und Stopbyte(z.B. 0x55) versehen. Dann sieht die Empfangsroutine aufm PC so aus:

*bytesweise einelesen bis ein 0xAA kommt (sync aufs Startbyte) *12 Bytes lesen *auf 0x55 checken *wenn da->Daten OK *wenn nicht->wieder zu Punkt 1

ist quick and dirty, man kann Pakete verlieren aber man synct sich automatisch irgendwann wieder auf den Anfang eines Paketes.

Viel Spass beim Basteln!

Jan

Reply to
Jan Stumpf

"Kurt Harders" schrieb im Newsbeitrag news: snipped-for-privacy@individual.net...

Wenn du den DTDI-Chip erst mal testen möchtest, dann findest du unter

formatting link
eine USB2.0 Karte ( USB HighSpeed Interface Modul V2.5 mit 8KB I²C EEPROM ) Eine dll-Datei mit der der USB-Bus relativ einfach zu programmieren ist, findest du da auch. Ich hab mit dem Board ganz gute Erfahrungen bei der Hardwareentwicklung gemacht...

Gruß, Stephan

Reply to
Stephan Mueller

Gut handhabbare USB-Microcontroller gibts z.B. von Cypress oder Atmel, aber auch diese sind nicht völlig trivial. Ohne sich zuvor gründlich in das USB-Protokoll eingelesen zu haben, kommt man da nicht weit. Ein geübter Programmierer sollte schon wenigstens eine Woche einplanen, bis beide Seiten (auf dem PC ist ja auch noch ein Gegenstück zu schaffen) stabil laufen. Falls man sich irgendwo verrennt, wird es schnell mehr.

Bei einem Einzelstück oder einer Kleinserie würde ich daher dringend zu einem USB/Seriell-Umsetzer (z.B. FT232) raten, zumal wenn Du sowieso schon eine RS232-Variante realisiert hast. Zu programmieren ist dann gar nichts mehr, auf PC-Seite stellt sich das über die fertig downloadbaren Treiber wieder als ganz normale serielle Schnittstelle dar.

Hergen

Reply to
Hergen Lehmann

"Hergen Lehmann" schrieb:

Danke für eure Tipps, ich habe das Ganze auch mit dem FTDI Chip schon gebaut (habe das USB Board von ELV benutzt). Das Problem ist bloß, dass diese Board extrem lange zum Umsetzen der Signale braucht. Bei konstantem Datenfluß mag der FTDI eine Lösung sein, aber ich schicke ja immer abwechselnd ein Signal auf ein Leitung und lese eine andere. Summasummarum: per RS232 (MAX232) direkt schaffe ich ca. 80 Abfragen pro Sekunde, per FTDI 3 - und das ist definitiv zuwenig. Deshalb mein Gedanke, auf einen Microcontroller auszuweichen.

Danke!

Gruss Seb

Reply to
Sebastian Schöps

Sebastian Schöps schrieb:

Schon mal im Treiber des FTDI am Timeout gefummelt?

--
Matthias Weißer
matthias@matwei.de
http://www.matwei.de
Reply to
Matthias Weißer

Dann mach das, was Jan vorgeschlagen hat:

Ansteuerung der Karte und Umsetzung auf ein "richtiges", asynchrones serielles Protokoll mittels Microcontroller (z.B. einem kleinen AVR), und dann per FTDI-Chip rüber auf USB. Je nach Baudrate sollten damit locker mehrere hundert Abfragen pro sek. möglich sein.

Auch den "Bitbang"-Modus des FTDI kännte man mal ausprobieren, das sollte zumindest etwas schneller sein als über den seriellen Treiber. Irgendwo auf der FTDI-Homepage müssen da Beispiele sein.

Ein frei programmierbarer USB-Microcontroller lohnt sich wirklich nur bei Stückzahlen, und wenn schon umfangreiche Erfahrungen im Umgang mit Microcontrollern und Schnittstellenprotokollen vorhanden sind. Als Einsteigerprojekt ist das wegen der Komplexität der USB-Schnittstelle zum Scheitern verurteilt. Das kann ich mit Bestimmtheit sagen, da ich selbst vor kurzem sowas realisiert habe (mit AT89C5131).

Hergen

Reply to
Hergen Lehmann

Jan Stumpf wrote in news:cprd4n$fc2$ snipped-for-privacy@svr7.m-online.net:

Du kannst sogar den zusätzlichen Controller einsparen, wenn Du den neuen FTDI2232 verwendest. Der hat ne SPI-Unit gleich onboard.

M.

--
Bitte auf mwnews2@pentax.boerde.de antworten.
Reply to
Matthias Weingart

Der avrgcc is ziemlich Linux basierend; es gibts wohl auch ne Win-Version (WinAVR). Aber auch der möchte noch tiefen Einblick in das Make-File. Für Win-orientierteres Folk gibts da noch den ImageCraft C-Compiler ICCAVR als Demoversion, die irgendwann ausläuft, aber jederzeit neu installiert werden kann. Alladann, viel Glück und Erfolg, Robert

Reply to
Robert

Robert schrieb:

Sach'mer mal: er hat Unix-Wurzeln. Unix (und GCC) sind drastisch älter als Linux. ;-)

Ja, die gibt es wohl, und es gibt auch 'ne Reihe von Leuten, die das nutzen.

Mit Mfile nicht unbedingt. (Ist bei WinAVR dabei.)

--
Jörg Wunsch

"Verwende Perl. Shell will man können, dann aber nicht verwenden."
				Kristian Köhntopp, de.comp.os.unix.misc
Reply to
Joerg Wunsch

Was man bei USB immer bedenken sollte: USB hat eine hohe Latenz von mind. 1us. Bei älteren Windows Versionen werden daraus auch schnell 10-50 us. Frage/Antwort-Protokolle, wo nur ein paar Bytes übertragen werden, sind für USB total ungeeignet.

Das kann ich weder für den TI TUSB3210 (Doku ist allerdings für die Tonne) noch für den Cypress EZ-USB bestätigen. Die USB- Kommunikation beschränkt sich auf das Füllen von 2 64 Byte Buffern.

cu, Marco

--

E-Mail: mb-news-blinuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de
Reply to
Marco Budde

Marco,

sind die da nicht ein paar Sachen falsch geraten: USB -> USB1

1 us -> 1 ms 10-50 us -> 10-50 ms

Fuer USB 2 ist die Latenzzeit 125 us ( 8 KHz)

Bye

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Reply to
Uwe Bonnes

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.