Hallo zusammen, zahllose ATTiny/ATMega-Applikationen erfordern eine PC-Kommunikation, wofür heutzutage am ehesten USB in Frage kommt. Meines Wissens gibt es eine ganze Reihe bekannter Umsetzungen. Die Frage, die sich mir stellt: Wo liegen jeweils die Vor- und Nachteile? Ich selber habe bislang immer die Variante mit externem UART-auf-USB-Umsetzer gewählt. Ich mache hier mal den Anfang und fände es klasse, wenn Ihr Eure Einschätzung ergänzt: Hardware-Umsetzung mit PL2303HX Baustein: + Für < 3 Euro als Leiterplatte erhältlich + Einfachste Handhabung durch UART-Nutzung + Ebenso mit digitalen Portpins nutzbar + Keine Prozessor-Belastung / kein Speicherverbrauch + Funktioniert selbst für kleinste ATTiny - Zusatz-Hardware im System erforderlich o Vor-/Nachteile gegenüber FT232RL unbekannt Hardware-Umsetzung mit FT232RL Baustein: + Für < 4 Euro als Leiterplatte erhältlich + Einfachste Handhabung durch UART-Nutzung + Ebenso mit digitalen Portpins nutzbar + Keine Prozessor-Belastung / kein Speicherverbrauch + Funktioniert selbst für kleinste ATTiny - Zusatz-Hardware im System erforderlich o Vor-/Nachteile gegenüber PL2303HX unbekannt Integrierte Mikrocontroller-USB-Schnittstelle + Nahezu keine externe Hardware erforderlich + Reduzierter Software-Aufwand, da Low Level Behandlung verfügbar - Nur bei einzelnen Derivaten verfügbar Software USB-Lösung (z. B. V-USB) + Für die meisten ATMega / ATTiny implementierbar + Nur ca. 1 KB Code-Größe + Läuft mit zwei beliebigen Portpins + Anpassbar an diverse Taktfrequenzen + Lediglich ein Portpin-Interrupt erforderlich - Deutliche Prozessorlast - Immerhin 1KB Speicherverbrauch (relevant bei kleinsten Derivaten) Was meint Ihr? Gruß, Johannes
Der PL2303 braucht einen Quarz und eine externe Spannungsversorgung. Der FT232R hingegen braucht beides nicht. Er hat einen internen Oszillator und einen internen Spannungsregler. Alterantive: Der CP2102 hat ebenfalls einen internen Oszillator und Spannungsregler. >Integrierte Mikrocontroller-USB-Schnittstelle >+ Reduzierter Software-Aufwand, da Low Level Behandlung verfügbar Falsch, denn diese Schnittstelle erfordert, dass man sich mit dem USB Protokoll auseinander setzt und man muss einen "Treiber" für die Schnittstelle (µC-Seitig) programmieren. Bei USB-UART Chips entfällt dieser Schritt. >Software USB-Lösung (z. B. V-USB) >+ Anpassbar an diverse Taktfrequenzen Das ist kein Vorteil gegenüber den anderen Methoden. Zwei Nachteile sehe ich: Unterstützt nur USB Low-Speed (soweit ich weiß) und die HW Schnittstelle ist nicht Standard-Konform. Das heisst: Ob und wo sie funktioniert ist mehr oder weniger Glückssache.
1. Die ganzen Software-only Lösungen sind Low-Speed only und nicht 100% standardkonform und haben nicht den Segen des USB Implementers' Forum (der Standardorganisation) und werden den auch niemals bekommen. Heißt also: Das Zeug funktioniert oft, aber für Kundenprojekte werde ich den größtmöglichen Abstand halten. 2. Treiberschnittstelle Windows mag ja nur noch zertifizierte Treiber. Wenn man externe USB-Brücken nimmt (USB-Seriell, USB, SPI, USB-I2C, gibts alles), dann muss man entweder die Standard VID/PID vom Hersteller nehmen und dafür in Kauf nehmen, dass man sein eigenes Gerät nicht so einfach automatisch identifizieren kann, oder man muss jedes Mal den für die eigene VID/PID angepassten Treiber neu signieren lassen, was Geld kostet. Wenn man sein eigenes Gerät als HID darstellt, braucht man keine speziellen Kernel-Treiber, und Du kannst Dein Gerät zweifelsfrei identifizieren und musst den Benutzer nicht fragen, welcher COM-Port es jetzt nun ist. Für den User ist das idiotensicher. USB-HID geht aber nur mit einem eingebauten USB Device, nicht mit einer externen USB-Brücke. Nachteil von USB-HID ist die begrenzte Geschwindigkeit (64kB/s), aber wenn seriell reicht, reicht USB-HID auch dicke. Wenn Du volle Geschwindigkeit brauchst, dann muss es entweder ein USB-CDC oder ein USB Custom Device sein. Das sind jetzt einige spezielle Begriffe, und wenn Du USB effizient und unter Nutzung aller Vorteile nutzen willst, dann solltest Du dich im Netz auf den einschlägigen Seiten schlau machen. Dieses Forum ist nicht der Platz für die Vermittlung von Grundlagenwissen, sondern nur für einzelne konkrete Fragen. PS: Der Microchip MCP2200 ist eine USB-Seriell Brücke, die die Standard-USB-Klassen CDC (für seriell) und HID (für Bit Banging) implementiert. Du brauchst hier keine speziellen Kerneltreiber, sondern für Windows nur ein .inf. An MAC und Linux geht das Teil einfach so ohne Treiberinstallation. Bei Windows XP vor SP3 hat Microsoft das Handling von USB-CDC vergurkt, aber das ist nicht die Schuld von Microchip oder dem USB-Standard, das ist halt MS, wenn die Standards nicht im Hause entwickelt wurden. Daher brauchst Du für USB-CDC auch ein .inf, auch wenn es technisch nicht notwendig ist. Auf dem Mac gehts ja auch ohne. Intern ist der MCP2200 ein vorprogrammierter PIC18F13K50 mit dem Microchip USB-Stack. fchk
Eine weitere Alternative, wenn man nur einen Virtual-COM-Port benötigt: FT230X. Kostet <2€ und braucht wenig Außenbeschaltung.
Nachteil: Kabelverbindung nötig. Entsprechend Unterstützung für drahtlose Netzwerke wäre moderner gewesen.
Vielen Dank für Eure Beiträge und Euer Know How, welches Ihr zur Verfügung stellt! Im Grunde genommen sehe ich nahezu keine Anwendung, bei der reine SW-Lösungen wirklich vorteilhaft sind. Einzig vorstellbar, wenn ein extremer Kostendruck vorherrscht (günstiger/kleiner ATTiny gefordert mit minimaler externer HW) oder der Layout-Platz einfach nicht für einen HW-Konverter ausreicht. Die Controller-Derivate mit integriertem USB-Interface (z. B. ATMega23U4) begeistern zwar in vielen Aspekten, sind aber für Serienanwendungen noch arg teuer und haben mitunter auch Nachteile (z. B. keine 20 MHz Varianten). Da in praktisch allen meinen Anwendungen nur mäßige Übertragungsraten benötigt werden (19,2 kBaud völlig ausreichend), dafür aber Rechenzeit und Speicher mit Bedacht genutzt werden müssen (zumeist Realtime-Anwendungen), läuft alles auf USB über FT232RL hinaus.
Johannes M. schrieb: > Die Controller-Derivate mit integriertem USB-Interface (z. B. > ATMega23U4) begeistern zwar in vielen Aspekten, sind aber für > Serienanwendungen noch arg teuer und haben mitunter auch Nachteile (z. > B. keine 20 MHz Varianten). ok, dann mal auf zum Realitätscheck zu Digikey: (alles Nettopreise) Mega324 TQFP 20 MHz + FT232RL: 768-1007-1-ND (FT232RL) 3.77€ ATMEGA324PA-AU 4.83€ Summe: 8.60€ MCP2200-I/SO-ND 1.95€ -> nur halb so teuer wie der FTDI-Chip Zum Vergleich: ATMEGA32U4-AU-ND 5.06€ ATXMEGA32A4U-AU-ND 2.87€ (32MHz XMega) Gut, dass wir verglichen haben. fchk
Johannes M. schrieb: > Ich selber habe bislang immer die Variante mit externem > UART-auf-USB-Umsetzer gewählt. Nachteil bei all diesen ist, dass der Controller einen RS-232- nutzbaren Takt braucht. Für den RC-Oszillator wird dies nicht garantiert. Als Alternative dafür, sofern man genügend Portpins hat: FT245. Benimmt sich aus Sicht des Hosts wie ein FT232, benutzt aber 8 parallele Datenleitungen plus 4 Steuerleitungen zur Kommunikation mit dem Controller. > Integrierte Mikrocontroller-USB-Schnittstelle - Bei einem Controller-Reset verabschiedet sich das Device vom Bus und muss vom Host neu eingegliedert werden (neudeutsch: "enumeriert") Frank K. schrieb: > 1. Die ganzen Software-only Lösungen sind Low-Speed only und nicht 100% > standardkonform und haben nicht den Segen des USB Implementers' Forum > (der Standardorganisation) und werden den auch niemals bekommen. Nun, ohne den Segen des USB-IF wird man auskommen. ;-) Was daran nicht standardkonform ist, ist die Nutzung einer solchen Lowspeed-Schnittstelle als CDC (communication device class). Das liegt vor allem daran, dass ein CDC drei Endpunkte braucht (Daten in beiden Richtungen plus Interrupt-EP), ein lowspeed-Device aber nur zwei EPs zugestanden bekommt. Ein lowspeed-Device als HID (human interface device) dürfte meiner Meinung nach konform sein. Viele Tastaturen oder Mäuse arbeiten auf dieser Basis.
Wenn man mit grob geschätzten 20 kBytes/s auskommt, dann sollte man sich mal HID anschauen. Microchip (und andere sicher auch) stellt da z.B. fertige Demos für die Controller-Seite bereit. Die drei entscheidenden Vorteile: - Keine Kosten für externe Bausteine - Extrem einfache Nutzung auf Host-Seite - Große Flexibilität auf uC-Seite (falls man sich dann doch mal entschließt in USB einzuarbeiten)
Johannes M. schrieb: > Hardware-Umsetzung mit PL2303HX Baustein: > ... > o Vor-/Nachteile gegenüber FT232RL unbekannt Der Windows 8 Treiber unterstützt den Chip erst ab PL-2303HXD (HX Rev D) http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.