Forum: Mikrocontroller und Digitale Elektronik Was genau ist ein USB to Serial Adapter?


von serial (Gast)


Lesenswert?

Hallo zusammen, also wenn ich einen Atmel Chip auf dem Breadboard 
programmieren will, brauche ich ja eine USB zu Serial Schnittstelle um 
den Chip über ein USB Kabel zu programmieren, hab ich recht? Was ist das 
genau? Ist das ein einfaches Shift Register oder doch mehr? Kann ich mir 
das nicht selbst bauen?

lg

: Gesperrt durch User
von Max D. (max_d)


Lesenswert?

Um einen Atmel auf nem breadboard zu flashen brauchst du einen USB ISP 
Adapter.

von serial (Gast)


Lesenswert?

Das ist mir klar, aber lies doch meine Frage bitte nochmal genau.

von 2K (Gast)


Lesenswert?

Also in meinem ISP Stick ist ein prgrammierter attiny2313, was du jetzt 
mit den USB<-> Seriell willst versteh ich nicht...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist kein einfaches Schieberegister, sondern eine UART, die über USB 
angesteuert werden kann.

Ja, so etwas kann man sich selbstbauen. Entweder, indem man eine 
fertige USB-UART-Bridge eines der üblichen Hersteller verwendet (FTDI, 
SiLabs, Prolific und andere), oder, indem man einen µC mit 
USB-Device-Controller-Hardware verwendet und auf diesem das 
USB-CDC-Protokoll umsetzt, oder, indem man einen µC ohne USB-Hardware 
verwendet und auf dem eine Softwarenachbildung wie V-USB verwendet und 
damit wiederum das USB-CDC-Protokoll umsetzt.

Aber: Für die die beiden letztgenannten Ansätze brauchst Du zwangsweise 
die Möglichkeit, einen µC zu programmieren -- wenn ich Deine Frage 
richtig interpretiere, fehlt Dir genau die.

von Cyblord -. (cyblord)


Lesenswert?

serial schrieb:
> Das ist mir klar
Glaub ich nicht.

>, aber lies doch meine Frage bitte nochmal genau.
Lies bitte nochmal seine Antwort genau. Deine Eingangsprämisse ist schon 
mal falsch.

Ein USB-To-Seriell Adapter wird per USB an den PC angeschlossen und 
erscheint dort als serielle Schnittelle (ComPort). Am anderen Ende des 
Adapters kommen die Leitungen einer seriellen Schnittstelle raus 
(TXD,RXD usw.)

Ein solcher Adapter kostet bei eBay zwischen 3 und 10 EUR.

Also da lohnt selber bauen wohl kaum. Vor allem weil dir jegliches 
Wissen welches man dazu bräuchte, komplett zu fehlen scheint.

Ein ISP-Adapter um wirklich einen AVR programmieren zu können kostet 
übrigens auch nicht mehr. Außer man möchte mehr ausgeben.

von Karl H. (kbuchegg)


Lesenswert?

Was ein USB zu Seriell Umsetzer genau ist?
Das ist eine ziemlich komplexe Angelegenheit.

Im Prinzip kann man sich so ein Teil schon selber bauen, weil es den 
FT232 IC gibt, der alles erledigt. Allerdings lohnt sich das kaum, wei 
man die im Handel billiger kaufen kann, als du sie dir selbst machen 
kannst.

Und nein. Das alleine reich noch lange nicht, um einen nackten AVR per 
USB programmieren zu können.
Kauf dir einen ISP Programmer, den man an die USB Buchse stecken kann. 
Solche Teile gibt es vom Chinesen für ein paar Euro. Selbstbau lohnt da 
nicht.

von Max D. (max_d)


Lesenswert?

serial schrieb:
> Das ist mir klar, aber lies doch meine Frage bitte nochmal genau.

Ähm, solange auf deinem "atmel chip" (heißen übrigens AVR) kein 
bootloader drauf ist, kannst du deinen usb-seriell Adapter in der pfeife 
rauchen.
Der ISP-Adapter braucht keinen bootloader und ist damit die richtige 
Wahl.
Für eine billige Einstieg Lösung such mal "usbasp" in der Bucht.

von Amateur (Gast)


Lesenswert?

>Hallo zusammen, also wenn ich einen Atmel Chip auf dem Breadboard
>programmieren will, brauche ich ja eine USB zu Serial Schnittstelle um
>den Chip über ein USB Kabel zu programmieren, hab ich recht?

Jein!

>Was ist das
>genau? Ist das ein einfaches Shift Register oder doch mehr?

Eine USB zu Serial Schnittstelle rüstet Deinen Rechner mit einer, heute 
oft nicht mehr vorhandenen, seriellen Schnittstelle aus.
Was Du damit machst ist Deine Sache.

Es gibt Programmer, die auf serielle Schnittstellen stehen.
Auch das STK500 steht auf so etwas.

Die "normalen" Programmer werden direkt via USB angesprochen.

Noch moderner ist das Programmieren mittels Boot-Loader.
Die "alten" können auch seriell Quatschen.
Die "aktuellen" sprechen USB.

>Kann ich mir
>das nicht selbst bauen?

Das kannst nur Du beantworten. Solange Du nicht mit einer seriellen 
Schnittstelle programmieren willst...

von serial (Gast)


Lesenswert?

Ums Geld gehts mir nicht, ich will es einfach verstehen und können!

@KarlHeinz Danke, dachte mir schon, das da mehr dahinter steckt. Also 
ist in einem gekauften USB Modul für den Arduino z.B schon ein 
Mikrocontroller drin, der auf Eingaben über USB und Ausgabe über RX/TX 
vorprogrammiert ist, versteh ich das richtig?

@Rufus Ich habe einen Arduino Uno damit kann ich bis jetzt eigentlich e 
schon alles was ich will. C Programme draufladen, Bootloader flashen und 
auch Assembler Code draufspielen. Wollte einfach sowas basteln, weil mir 
z.Z nichts anderes einfällt.

lg

von serial (Gast)


Lesenswert?

Auf dem Arduino Uno ist ja direkt neben dem USB Stecker ein kleiner Chip 
verbaut, was macht der?

von Jim M. (turboj)


Lesenswert?

Karl H. schrieb:
> Im Prinzip kann man sich so ein Teil schon selber bauen, weil es den
> FT232 IC gibt, der alles erledigt. Allerdings lohnt sich das kaum, wei
> man die im Handel billiger kaufen kann, als du sie dir selbst machen
> kannst.
>
> Und nein. Das alleine reich noch lange nicht, um einen nackten AVR per
> USB programmieren zu können.

Wenn da ein FT2232 oder ein neuerer FT232R drin steck, dann kann man mit 
Avrdude sehr wohl unprogrammierte AVRs via ISP betanken.

von serial (Gast)


Lesenswert?

btw ich dachte eigentlich, "Universal Serial Bus" ist eine serielle 
Schnittstelle

von Ion (Gast)


Lesenswert?

serial schrieb:
> btw ich dachte eigentlich, "Universal Serial Bus" ist eine
> serielle
> Schnittstelle

ist es doch ?

Ich glaube dir fehlt da ein wenig an allgemeinem Wissen....

von Ulrich F. (Gast)


Lesenswert?

serial schrieb:
> ich dachte eigentlich, "Universal Serial Bus" ist eine serielle
> Schnittstelle

Das ist 100% korrekt.
RS232 ist auch eine serielle Schnittstelle
SATA auch....
Nur gemeinsam, bis auf das "Seriell" haben die nix.
Passen auch nicht zueinander....

von Amateur (Gast)


Lesenswert?

>btw ich dachte eigentlich, "Universal Serial Bus" ist eine serielle
>Schnittstelle

USB hat mit einer seriellen Schnittstelle nur gemein, dass die Daten 
seriell übertragen werden. Das aber gilt sowohl für SATA als auch für's 
Fernsehprogramm. Sogar Eternit ist seriell.

von Axel S. (a-za-z0-9)


Lesenswert?

serial schrieb:
> Hallo zusammen, also wenn ich einen Atmel Chip auf dem Breadboard
> programmieren will, brauche ich ja eine USB zu Serial Schnittstelle um
> den Chip über ein USB Kabel zu programmieren, hab ich recht?

Nein. Außerdem gibt es nicht den einen "Atmel Chip". Atmel baut eine 
Menge verschiedener Chips. Und selbst wenn man sich auf die 
Mikrocontroller beschränkt sind es immer noch einige deutlich 
unterschiedliche Familien.

Und die werden je nach Familie und Typ über ganz verschiedene Schnitt- 
stellen bzw. Protokolle programmiert: ISP, JTAG, PDI, TPI, dW, SWD.

Was du brauchst, ist ein zu deinem µC passender Programmieradapter.

> Was ist das genau?

Ein USB-zu-seriell Konverter? Das ist eine Baugruppe die per USB an den 
PC angeschlossen wird und dort als ein logisches(!) serielles Gerät 
(CDC) erscheint. Am anderen Ende verhält es sich so wie die klassische 
serielle Schnittstelle (RS-232), die allerdings an aktuellen PC's kaum 
noch zu finden ist.

> Ist das ein einfaches Shift Register oder doch mehr?

Es ist wesentlich mehr.

> Kann ich mir das nicht selbst bauen?

Nur in dem Sinne, wie du eine Pizza "selbst backen" kannst, indem du 
eine Tiefkühlpizza aufbäckst. Es gibt fertige IC für sowas, ganz vorne 
die FTDI232-Familie. Die brauchen noch etwas Außenbeschaltung und einen 
Pegelwandler und ergeben dann einen fertiger Konverter.

serial schrieb:
> btw ich dachte eigentlich, "Universal Serial Bus" ist eine serielle
> Schnittstelle

Nein. Der Begriff "serielle Schnittstelle" hat eine feste Bedeutung die 
weit darüber hinaus geht, daß die Daten irgendwie seriell übertragen 
werden.

serial schrieb:
> Auf dem Arduino Uno ist ja direkt neben dem USB Stecker ein kleiner Chip
> verbaut, was macht der?

Das ist ein Chip der den logischen Teil des USB-zu-seriell Konverters 
macht. Die Leitungen auf der "seriellen" Seite liefern aber keine 
normgerechten RS-232 Pegel (müssen sie in dieser Anwendung auch nicht) 
sondern CMOS-Logikpegel und sind direkt mit dem UART-Port des µC 
verbunden. Daß du den µC über diese Verbindung programmieren kannst, 
verdankst du der Tatsache, daß der Hersteller des Arduino schon einen 
Bootloader in den µC programmiert hat. Mit einem fabrikneuen µC würde 
das nicht funktionieren.

Ein Bootloader ist sozusagen ein "zweites Programm" das sich neben dem 
Anwenderprogramm im µC befindet. Nach einem Reset wird zunächst der 
Bootloader aktiv. Der überprüft, ob ihm gerade über die Bootloader- 
Schnittstelle (das kann der UART sein, muß aber nicht) ein neues 
Anwenderprogramm geschickt wird und wenn ja, dann überschreibt er das 
alte Anwenderprogramm in µC. Im Normalfall springt der Bootloader aber 
mehr oder weniger direkt in das Anwenderprogramm.

von serial (Gast)


Lesenswert?

Der Chip war leer, den Bootloader hab ich mit dem Arduino selbst 
draufgespielt. Hmm wie hat das wohl funktioniert? Auf dem Arduino ist 
nicht sooo viel drauf, den kleinn Chip neben dem USB Stecker hatte ich 
in Verdacht ein Shift Register oder eben mehr zu sein. Ich bin zwar ein 
wenig verwirrt weil ich dauernd lese "es geht aber.. doch nicht" aber 
zumindest waren 2, 3 wirkliche Antworten dabei (nicht die vielen "du 
kennst dich nicht aus aber es funktioniert nicht so leicht" Kommentare) 
wodurch ich nun weiß: lernen, lernen und noch mehr Puzzlestücke 
versuchen zusammenzusetzen. Gute Nacht

von Gerhard (Gast)


Lesenswert?

Der "kleine Chip neben dem USB-Stecker" ist bei den aktuellen Arduinos 
(zumindest bei meinen mega 256) ein weiterer Atmel AVR mit 
USB-Schnittstelle, schau einfach auf die Beschriftung. Du findest dort 
zum Beispiel einen ATMEGA16U2.

Dieser ist mit einer Firmware programmiert, der aus dem AVR wahlweise 
einen ISP-Adapter oder einen USB-to-Serial-Converter macht. So hat man 
es als Benutzer sehr einfach, weil man keine zusätzliche Hardware 
braucht zum Spielen. Ganz nebenbei ist der AVR auch noch preiswerter als 
die bekannten USB-to-Serial-Chips.

Wenn du genau hinschaust, siehst du auch den zusätzlichen ISP-Anschluss 
für diesen zweiten AVR.

Lies dir mal den Wikipedia-Artikel über die USB-Schnittstelle durch. Das 
ist weit mehr als ein "Schieberegister", da hast du offenbar noch 
Wissenslücken.

von Christian (Gast)


Lesenswert?

Na ja,  nicht unbedingt Amega 16u2, es kann auch CH340 oder FTDI sein, 
je nachdem wie chinesisch sein UNO ist

von Axel S. (a-za-z0-9)


Lesenswert?

Gerhard schrieb:
> Der "kleine Chip neben dem USB-Stecker" ist bei den aktuellen Arduinos
> (zumindest bei meinen mega 256) ein weiterer Atmel AVR mit
> USB-Schnittstelle, schau einfach auf die Beschriftung. Du findest dort
> zum Beispiel einen ATMEGA16U2.

Es gibt halt unglaublich viele Arduinos. Auch vom Uno gibt es mehrere 
Revisions. Ich habe gerade mal den Schaltplan des Uno R3 angesehen, da 
tickert in der Tat ein ATmega16U2 als USB-Endpoint. Allerdings ist der 
auch nur per UART an den Haupt-µC (ATmega328) angeknüppert. Kann den 
also auf diesem Weg nur programmieren wenn der schon einen Booloader 
drin hat.

Deswegen habe ich auch ehrliche Zweifel an dieser Aussage:

serial schrieb:
> Der Chip war leer, den Bootloader hab ich mit dem Arduino selbst
> draufgespielt. Hmm wie hat das wohl funktioniert?

Was auch immer du getan hast: du kannst den Arduino nicht nur am USB 
gehabt haben. Um auf den ATmega328 einen Bootloader aufzuspielen, muß er 
über den 6-poligen ISP-Anschluß programmiert werden.

Aber da der ATmega328 auf dem Arduino Uno als SMD aufgelötet ist, frage 
ich mich woher du wissen willst, daß der leer war. Denn du wirst ihn ja 
wohl kaum abgelötet und einen fabrikneuen aufgelötet haben.

von Planlos (Gast)


Lesenswert?

Axel S. schrieb:
> Um auf den ATmega328 einen Bootloader aufzuspielen, muß er
> über den 6-poligen ISP-Anschluß programmiert werden.

Gerhard schrieb:
> Du findest dort
> zum Beispiel einen ATMEGA16U2.
>
> Dieser ist mit einer Firmware programmiert, der aus dem AVR wahlweise
> einen ISP-Adapter oder einen USB-to-Serial-Converter macht.

von Peter R. (pnu)


Lesenswert?

Ein USB-Seriell-Adapter sollte per USB-Anschluss die früher an PCs 
übliche RS-232 erstetzen.

Leider tut das fast keiner dieser Adapter komplett. Weder in den für RS 
232 üblichen Pegeln noch in den bei RS 232 vorhandenen Steuerleitungen.

Nun war es früher möglich, aus den Signalen der am PC vorhandenen 
seriellen Schnittstellen die Signale für eine ISP-Programmierung 
herzustellen, wenn man zusätzlich zu RXD und TXD auch noch RTS und... 
zur Verfügung hatte.

Dummerweise bieten viele einfache Adapter nur RXD und TXD an und sind 
deswegen für die weitere Umsetzung in ISP ungeeignet.

Einige solcher Adapter können die ISP-Signale herstellen, in älteren 
Beiträgen hier im Forum kann man Hinweise darauf finden.

Es gibt aber auch jede Menge von USB-Proggern, die die USB-Signale 
direkt in ISP umsetzen und dem Studio4 (oder höher) einen 
Original-Progger vortäuschen, etwa den STK500 oder den MKII

Ein bootloader kommt meistens mit den zwei Signale RXD und TXD aus und 
ist als "Vorprogramm" auf dem AVR-Chip oder Arduino-Chip vorhanden, 
erspart damit also ein ISP-fähiges Programmiergerät, kommt also mit 
einem einfachen USB-Rs-Adapter aus, oft auf einem preiswerten AVR 
realisiert.

Seine Schwäche besteht aber darin, dass man meistens damit die Fuses der 
AVR nicht programmieren kann.

Anfängern genügt meist die einfachste Grundstufe: bootloader.
Bald geht man über zu: ISP-Progger
Profis schätzen dann die Version mit debug-Lesemöglichkeit. (Dragon)
Und nutzen dann oft die noch komfortablere: JTAG-Schnittstelle.

von lol (Gast)


Lesenswert?

Axel S. schrieb:
> frage
> ich mich woher du wissen willst, daß der leer war. Denn du wirst ihn ja
> wohl kaum abgelötet und einen fabrikneuen aufgelötet haben.

Es ist ein Arduino Uno R3 vom Conrad, keine Ahnung wie "chinesisch" 
dessen Sachen sind :P

Ich hab den Bootloader auch nicht auf den Arduino geschrieben, sondern 
mit dem Arduino auf einen anderen Chip.

LOL, das eine USB Schnittstelle mehr ist als ein Schieberegister ist mir 
aber auch klar. Ich hab ja nicht gefragt was ist eine USB Schnittstelle 
sondern was ist ein USB to Serial Adapter. Eine Schnittstelle ist im 
Prinzip doch nur ein Stecker, oder? Ein Adapter wird doch wohl etwas 
mehr als nur eine normale Schnittstelle sein, sonst bräuchte man ja nur 
einen Stecker drauflöten.

von Testfall (Gast)


Lesenswert?


von Ulrich F. (Gast)


Lesenswert?

lol schrieb:
> Eine Schnittstelle ist im
> Prinzip doch nur ein Stecker, oder?
Nöö...
Siehe google("OOP Design Pattern Adapter")
Konkreter: https://de.wikipedia.org/wiki/Adapter_(Entwurfsmuster)

Eine Schnittstelle ist eine "Vereinbarung".
Und diese "Vereinbarung" ist in Hardware und/oder in Software gegossen.

lol schrieb:
> Ein Adapter wird doch wohl etwas
> mehr als nur eine normale Schnittstelle sein, sonst bräuchte man ja nur
> einen Stecker drauflöten.
Manchmal ja, manchmal nein.

Mache dich kundig, über die "Vereinbarungen", zwischen welchen der 
Adapter sitzt, sitzen soll, und du weißt (in etwa), was im Adapter 
steckt, auch wenn er vergossen ist.

von Rolf M. (rmagnus)


Lesenswert?

lol schrieb:

Hallo lol. Bist du der selbe, der als "serial" den Thread eröffnet hat? 
Unter mehreren verschiedenen Namen zu posten wird hier nicht gern 
gesehen. Es hilft auch nicht gerade beim Verständnis, wenn du während 
einer Diskussion deinen Namen änderst.

> LOL, das eine USB Schnittstelle mehr ist als ein Schieberegister ist mir
> aber auch klar.

Im Ursprungsposting klang das noch etwas anders:

serial schrieb:
> Ist das ein einfaches Shift Register oder doch mehr?

> Ich hab ja nicht gefragt was ist eine USB Schnittstelle sondern was ist
> ein USB to Serial Adapter.

Dazu muss man aber wissen, was USB überhaupt ist.

> Eine Schnittstelle ist im Prinzip doch nur ein Stecker, oder?

Nein. Eine Schnittstelle implementiert ein Protokoll, in dem definiert 
ist, wie die Kommunikation stattfindet.

> Ein Adapter wird doch wohl etwas mehr als nur eine normale Schnittstelle
> sein, sonst bräuchte man ja nur einen Stecker drauflöten.

USB ist, wie der Name (Universial Serial Bus) schon sagt, ein Bus. An 
dem können Bus-Teilnehmer hängen, die bestimmte Funktionen beinhalten. 
Eine mögliche Art von Busteilnehmer ist ein Chip, der eine 
RS232-Schnittstelle implementiert.
Ein "USB-Seriell-Wandler" ist also eigentlich eher eine 
Schnittstellenkarte, die eben nicht am Rechner-internen PCIe-Bus hängt, 
sondern an einem anderen, nach außen geführten Bus.

von Thomas S. (thommi)


Lesenswert?

Ein anderer relativ schneller serieller Bus auf Schallbasis:

https://www.youtube.com/watch?v=Ea7gn8hhEFA

OK, ein wenig OT, konnte ich mir aber nicht verkneifen :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rolf M. schrieb:
> Hallo lol. Bist du der selbe, der als "serial" den Thread eröffnet hat?
> Unter mehreren verschiedenen Namen zu posten wird hier nicht gern
> gesehen.

Es ist schlicht und einfach ein Verstoß gegen 
https://www.mikrocontroller.net/user/conditions

Was das Schicksal dieses Threads erklärt.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.