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)?
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?
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).
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.
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.