Hallo, ich habe mir Nachbauten vom Arduino Nano und Uno bestellt (anderes Layout, aber angeblich Pinkompatibel). Die Arduino IDE läuft schon mal auf Anhieb gut. So wie ich verstehe, befindet sich schon ein Bootloader auf den Atmega328, so dass man ihn bequem über USB programmieren kann ohne Brenner/ICSP-Interface. Nun hat der Uno noch einen Atmega16 als USB-Interface und der Nano einen FTDI-Chip (USB->Serial). Nun habe ich lange recherchiert, was der Vorteil von dem Atmega16 gegenüber den FTDI ist. Gefunden habe ich dann Anmerkungen, dass man den Atmega16 umflashen kann (dann natürlich nur per ICSP), so dass man ihn als USB-Host einsetzen könne. Nun dachte ich "Cool, dann kann man wohl ein USB-Keyboard oder USB-Speicherstick" anschließen zur Eingabe oder um z.B. Langzeit-Messwerte auf Stick zu speichern. Habe ich danach gesucht (insbesondere hier), heißt es immer nur, dass das nicht geht - schade. :( Nun, welchen Vorteil hat der Atmega16 als USB-Interface beim Uno dann? Oder anders gefragt: Was kann der Uno dann mehr als der Nano (abgesehen von dem zusätzlichen 12V Spannungsregler)?
Das ist kein ATMega16, das ist ein ATMega16U2. Und der kann nur als Device benutzt werden.
Um einem Arduino Uno/Nano den USB-Host beizubringen gibts m.W. zwei Wege: a) V-USB-Lib (für HIDs) von obdev.at, Anwendung siehe hier: http://blog.petrockblock.com/2012/05/19/usb-keyboard-with-arduino-and-v-usb-library-an-example/ b) den USB-Host-Shield (z.B. von Sparkfun): http://www.watterott.com/de/SparkFun-USB-Host-Shield
Stimmt, das U2 habe ich doch glatt überlesen. Wenn er nur als Device genutzt werden kann, welchen Vorteil hat er dann gegenüber dem simplen USB->Serial FTDI-Controller?
Ja, USB-Host-Shield und die Libs habe ich schon gesehen. Meine Frage bezog sich eher auf den Sinn des Atmega16U2 als USB-Interface gegenüber dem FTDI
Dominik schrieb: > Stimmt, das U2 habe ich doch glatt überlesen. Wenn er nur als Device > genutzt werden kann, welchen Vorteil hat er dann gegenüber dem simplen > USB->Serial FTDI-Controller? Er könnte sich auch als HID (Keyboard Maus, Joystick) oder Mass storage (USB Stick) am USB melden, indem man simpel ein anderes Programm einspielt (in den Atmega16U2). Das geht mit den FTDI Teilen nicht, die sind immer nur ein dummer COM Port (oder mehrere bei FT2232 oder FT4232).
:
Bearbeitet durch User
Lies dir doch einfach die Beschreibung auf der Arduino Seite durch. Der Atmega16uU fungiert hier USB zu seriell Wandler. Da es das erste Board der Gruppe war (Uno=Eins) hatten sie vielleicht noch nicht an FTDI gedacht... Alles nachzulesen unter: Arduino.cc/en/Main/ArduinoBoardUno Und die passenden Seiten zu den anderen Boards, aber vorsicht, englisch sollte man können ? Gruß EGS
EGS schrieb: > Da es das erste Board der Gruppe war (Uno=Eins) hatten sie vielleicht > noch nicht an FTDI gedacht... Soweit ich weiß, hat der quasi Vorgänger Arduino Duemilanove einen FTDI Chip... Die AtMegas kamen erst bei den neueren Arduinos.
Noch ein allgemeiner Hinweis: Die meisten chinesischen Arduino Nanos haben KEINEN FTDI-CHip drauf, sondern einen CH340 oder CH341 von Olimex (ist wohl billiger) und benötigen einen eigenen Treiber für Windows oder Mac, die nicht im System schon installiert sind. Will sagen, einen "echten" Arduino muss man z.B. am Windows-PC nur anstecken und er wird erkannt, das klappt bei den "anderen" nicht, man muss den Treiber manuell installieren.
Du irrst dich leider. CH34x- treiber sind bei Microsoft hinterlegt und können als PNP- Geräte ohne manuelle installation benutzt werden.
Flip B. schrieb: > Du irrst dich leider. Du irrst dich leider! Vielleicht ab Win 10..... KA, aber vorher nicht.
Jim M. schrieb: > Er könnte sich auch als HID (Keyboard Maus, Joystick) oder Mass storage > (USB Stick) am USB melden, indem man simpel ein anderes Programm > einspielt (in den Atmega16U2). Ja, was denn nun? Das ist ja quasi meine Ausgangsfrage. Nur finde ich leider keine Projekte, wo das gemacht wurde. Hier im Forum lese ich immer nur "geht nicht" EGS schrieb: > Lies dir doch einfach die Beschreibung auf der Arduino Seite > durch. Der > Atmega16uU fungiert hier USB zu seriell Wandler. Genau da HABE ich das ja bereits gelesen! Schrieb ich das nicht im ersten Beitrag? Mir ist der Sinn nur nicht klar: Wozu einen zusätzlichen, programmierbaren uC, wenn es doch ein billiger USB->Serial Standardchip auch tut...
Und danke für den Tipp mit dem Treiber. Ich nutze allerdings ausschließlich Linux, weshalb das eher Nebensache ist (und ich so begeistert bin, dass die Arduino IDE für 32bit-Linux auf meinem "alten" System auf anhieb läuft). Gibt es sonst noch einen Nachteil der China-Clones? Kann ich den/die Bootloader mit einem billigen China USBasp-Adapter programmieren, falls sie mal kaputt gehen oder ich sie updaten will? Habe schon lange so ein billige China-Interface, es aber noch nie genutzt. Ich habe meine Projekte mit Atmega644 immer nur direkt über den Parallelport (Bitbanging) problemlos programmiert.
Dominik schrieb: > Wozu einen > zusätzlichen, programmierbaren uC, wenn es doch ein billiger USB->Serial > Standardchip auch tut... Du hast aber anscheinend nicht alles gelesen...denn dann wäre dieser Teil der Beschreibung auch angekommen: Automatic (Software) Reset Rather than requiring a physical press of the reset button before an upload, the Uno board is designed in a way that allows it to be reset by software running on a connected computer. One of the hardware flow control lines (DTR) of the ATmega8U2/16U2 is connected to the reset line of the ATmega328 via a 100 nanofarad capacitor. When this line is asserted (taken low), the reset line drops long enough to reset the chip. The Arduino Software (IDE) uses this capability to allow you to upload code by simply pressing the upload button in the interface toolbar. This means that the bootloader can have a shorter timeout, as the lowering of DTR can be well-coordinated with the start of the upload. This setup has other implications. When the Uno is connected to either a computer running Mac OS X or Linux, it resets each time a connection is made to it from software (via USB). For the following half-second or so, the bootloader is running on the Uno. While it is programmed to ignore malformed data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened. If a sketch running on the board receives one-time configuration or other data when it first starts, make sure that the software with which it communicates waits a second after opening the connection and before sending this data. Das ist der Grund.
Das ließe sich aber mit einer normalen USB-Seriell-Bridge à la FT232 auch hinbekommen. Denn auch die lassen das softwaregesteuerte "Wackeln" an Handshakeleitungen zu, und das auch ohne Treiberverrenkungen mit speziellen DLLs. Handshakeleitungen gehören zum normalen Funktionsumfang einer seriellen Schnittstelle.
Ja, meine PL2303 können RTS/DTR auch setzen. Aber den zitierten Text habe ich auf arduino.cc tatsächlich nicht gelesen/gefunden
Vielleicht spielt auch der Grund, dass ein ATMEGA16U2 einfach billiger ist als ein FT232 eine Rolle.
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.