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
Um einen Atmel auf nem breadboard zu flashen brauchst du einen USB ISP Adapter.
Das ist mir klar, aber lies doch meine Frage bitte nochmal genau.
Also in meinem ISP Stick ist ein prgrammierter attiny2313, was du jetzt mit den USB<-> Seriell willst versteh ich nicht...
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
Auf dem Arduino Uno ist ja direkt neben dem USB Stecker ein kleiner Chip verbaut, was macht der?
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.
btw ich dachte eigentlich, "Universal Serial Bus" ist eine serielle Schnittstelle
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.
Na ja, nicht unbedingt Amega 16u2, es kann auch CH340 oder FTDI sein, je nachdem wie chinesisch sein UNO ist
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.
https://de.wikipedia.org/wiki/Steckverbinder https://de.wikipedia.org/wiki/Schnittstelle https://de.wikipedia.org/wiki/RS232 https://de.wikipedia.org/wiki/Universal_Serial_Bus https://de.wikipedia.org/wiki/In-System-Programmierung https://de.wikipedia.org/wiki/Atmel_AVR https://de.wikipedia.org/wiki/Depp
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.
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 :-)
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.