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