Hi Leuts Viel gesucht und noch viel mehr verwirrt worden. Also ... ich möchte ein paar Atmegas "verbauen". Das bedeutet, das ich nach Einbau nicht mehr an die Dinger dran kommen würde. Zum Programmieren brauche ich aber natürlich noch die Möglichkeit und hier taucht nun mein Problem auf. Die Programmierleitungen wäre ca. 6 Meter lang. Frequenzen der MC sind ca. 16 Mhz. Mit welcher Schaltung bzw. Methode kann ich da am Besten vorgehen ? BTW: Es sollte auch möglich sein den MC damit zu programmieren wenn er "frisch" ist (also ohne zuerst einen Bootloader zu installieren). BEi ISP (oder JTAG) klappt das ja ohne Bootloader. MFG Marco
Wie wär's mit RS-232 und einem zusätzlichen Controller der die ISP-Programmierung vornimmt?
Das klingt schon gut ... Gibt es da schon etwas "fertiges" bzw. zumindest einen Schaltplan oder ne Anleitung ? Die Kombination von "RS232 und ISP" spuckt bei Google nicht mehr viel neues aus was ich nicht schon gefunden hätte. Ich denke einmal, das auch auf jedem MC-Board dann ein Wandler drauf muss. Ich suche wahrscheinlich an der falschen Stelle. MFG Marco
Du verwendest diesen: http://www.atmel.com/dyn/resources/prod_documents/doc0943.pdf Programmer. Den kannst Du dann mit einem ziemlich langen (ich glaube RS232 = 15m) Kabel an den PC anschliessen. Diese Dinger gibt es auch fertig zu kaufen. Du musst nur nach Programmern suchen, die auch einen AVR enthalten. Gruss Andy
Marco K. wrote: > Das bedeutet, das ich nach Einbau nicht mehr an die Dinger dran kommen > würde. ... > BTW: Es sollte auch möglich sein den MC damit zu programmieren wenn er > "frisch" ist (also ohne zuerst einen Bootloader zu installieren). Warum? Kommst Du auch vor dem Einbau nicht ran? Ein Bootloader hätte den Vorteil, daß man damit nicht an die Fuses kommt. Man kann ihn also nicht versehentlich verfusen. In dieser Hinsicht ist ein Bootloader also auch vorteilhafter. Peter
>Peter Dannegger wrote: > > Warum? > Kommst Du auch vor dem Einbau nicht ran? Doch, das schon ... aber es ist "SMD" und ich hatte nicht vor die ISP-Buchse auf der Platine unterzubringen, sollte direkt an die RS232-Schnittstelle gehen. War zumindest so gedacht. > > Ein Bootloader hätte den Vorteil, daß man damit nicht an die Fuses > kommt. Man kann ihn also nicht versehentlich verfusen. In dieser > Hinsicht ist ein Bootloader also auch vorteilhafter. Umpff ..... 1000 Ecken und Kanten :-)))) Siehste ... das wußte ich nicht. Ist natürlich von Vorteil, wenn die einmal richtig eingestellt sind .... Was ist die "NOOB-sicherste" Lösung ? Ich habe Angst, das ich mir den MC "zerschiesse" ... SMD zu entlöten ist Mist und wenn ich ne neue Platine brauche gehts sehr schnell ins Geld ... Also ISP-Buchse onboard und Erstprogrammierung inkl. Bootloader per AVR-Dragon ? BTW: Reicht diese Schaltung für mein Vorhaben auch aus? Da bräuchte ich keinen zusätzlichen AT90SXXXXX Baustein mehr für: http://mikrocontroller.cco-ev.de/files/SerCon_Anleitung_V0_3.pdf MFG Marco
> Doch, das schon ... aber es ist "SMD" und ich hatte nicht vor die > ISP-Buchse auf der Platine unterzubringen, sollte direkt an die > RS232-Schnittstelle gehen. War zumindest so gedacht. Ein ISP auf einem µC Board hat sich meines Erachtens so gut wie immer als Vorteil herausgestellt. Wenn mal was mit der Programmierung schief geht, ist der Standardanschluss da recht hilfreich. > Umpff ..... 1000 Ecken und Kanten :-)))) > Siehste ... das wußte ich nicht. Ist natürlich von Vorteil, wenn die > einmal richtig eingestellt sind .... > > Was ist die "NOOB-sicherste" Lösung ? Ein fertiges Entwicklungsboard. Ein Board, das sich auf VERSCHIEDENE Arten programmieren lässt!! Ein Protoboard NIEMALS unerreichbar verbauen, das geht am Anfang SICHER "in'd stoa" (~=~ harte Bauchlandung). > Ich habe Angst, das ich mir den MC "zerschiesse" ... SMD zu entlöten ist > Mist und wenn ich ne neue Platine brauche gehts sehr schnell ins Geld Das Prob hatte ich noch nie! Sich auszusperren, bedeutet ja noch nicht, dass die Platine/der Controller in den Müll muss > Also ISP-Buchse onboard und Erstprogrammierung inkl. Bootloader per > AVR-Dragon ? Ich empfehler JA. Bootloader kann, muss aber nciht sinnvoll sein. > BTW: > Reicht diese Schaltung für mein Vorhaben auch aus? Da bräuchte ich > keinen zusätzlichen AT90SXXXXX Baustein mehr für: > > http://mikrocontroller.cco-ev.de/files/SerCon_Anleitung_V0_3.pdf Das ist einfach ein RS232 Pegelwandler.... (oder hab ich da nicht genau geschaut?)
> Ein ISP auf einem µC Board hat sich meines Erachtens so gut wie immer > als Vorteil herausgestellt. Wenn mal was mit der Programmierung schief > geht, ist der Standardanschluss da recht hilfreich. OK .. "überredet" ;-))))) Ich löte die Buchse drauf ... Ist auch wirklich vernünftiger wie ich selber denke ... >> Was ist die "NOOB-sicherste" Lösung ? > Ein Board, das sich auf VERSCHIEDENE Arten programmieren lässt!! > Ein Protoboard NIEMALS unerreichbar verbauen, das geht am Anfang SICHER > "in'd stoa" (~=~ harte Bauchlandung). Richtig ... das Problem ist, das ich mehrere verbauen muß und da wirds dann mit vielen zusätzlichen Bauteilen sehr teuer. Reichen würde halt wenn ich den MC einmalig über ISP mit nem Bootloader bestücke und ihn dann nachdem er "eingebaut" ist, aufgrund der Kabellänge, anderweitig programmieren kann. Einen zweiten MC nur zum programmieren zusätzlich zu verbauen halte ich ein wenig für "verrückt" ... Mein Link von oben ist wirklich fehl, das ist nur ein ganz normales ISP-Interface mit getrennter RS232 Schnittstelle, beides hat miteinander nichts zu tun. Sorry dafür ... Gibt es noch andere Lösungsansätze ? Wie kriege ich das Dingen mit möglichst wenig zusätzlicher Hardware programmiert ? MFG Marco
Marco K. wrote: > Reichen würde halt wenn ich den MC einmalig über ISP mit nem Bootloader > bestücke und ihn dann nachdem er "eingebaut" ist, aufgrund der > Kabellänge, anderweitig programmieren kann. Ja, sehe ich auch so. Der Steckverbinder muß nicht super gut sein, er wird ja nur einmal benötigt. Eine Idee wäre es, einfach 6 Lötaugen an den Platinenrand zu setzen, damit man einen Leiterplattensteckverbinder drüber stülpen kann. Muß ja für die wenige Benutzung nicht vergoldet sein. Der Bootloader selber benötigt dann nur noch 1 oder 2 Signaladern zum Programmieren. Man kann bei mehreren AVRs auch unterschiedliche Paßwörter vergeben und dann die Bootloaderleitung(en) parallel schalten. > Einen zweiten MC nur zum programmieren zusätzlich zu verbauen halte ich > ein wenig für "verrückt" ... Ja, das ist verrückt, denn der müßte ja auch erst programmiert werden. Hatte man mal früher so gemacht bei den classic AVRs, die konnten sich ja noch nicht selber proggen. Peter
Hi! Ich kann mir zwar keinen Grund ausdenken, warum die Platine so weit von einem Zugang entfernt sein muss, aber hast Du schon mal an ganz einfache Pegelwandler gedacht? Löte an den SPI Bus ein paar billige RS485 Treiber und baue Dir für Dein bevorzugtes Programmiergerät einen Adapter den Du zwischen diesen und das lange Kabel steckst. So kannst Du je nach Preis der Treiber Längen bis >1km und/oder Datenraten bis 10MHz erreichen. Ggf. muss Du Dir was ausdenken, wie Du diese Treiber aktivierst, da sie ja auf dem SPI Bus sitzen, an den Du vermutlich auch noch andere Peripherie angeschlossen hast. Auf diese Art brauchst Du Dir aber keine Gedanken über Bootloader und Fuses machen, Du kannst alles programmieren. Gruß, Ulrich
>... ein paar billige RS485 Treiber Es sollte auch ein 74HC126 Treiber reichen, dessen Ausgänge normalerweise auf 3-state geschaltet sind und der räumlich am AVR angeornet ist. Somit bekommt der AVR saubere Signale ohne Überschwinger. Die lange Leitung kann man niederohmig mit Widerständen bedämpfen, ohne den AVR zu belasten.
Du kannst aber auch einen Max232 in die ISP-Leitungen hängen, dann hast Du den Signalhub von RS232 mit dem ISP-Protokoll.... Damit währen wir wieder bei Deinem Link ;-) Ein Bit-bang-adapter mit RS232 Treibern, eigentlich eine lustige Idee (hab nochmal drübergeschaut). Einfacher zu beschalten ist sicher der 126er.
Ich dank Euch fürs mitgrübeln. Ich als Elektronik-Noob tue mich da noch sehr schwer mit ... wie heißts so schön? Aller Anfang ist schwer. Wer bessere Vorschöäge hat ... bitte her damit ... :-)) >Es sollte auch ein 74HC126 Treiber reichen, dessen Ausgänge >normalerweise auf 3-state geschaltet sind und der räumlich am AVR >angeornet ist. Somit bekommt der AVR saubere Signale ohne Überschwinger. >Die lange Leitung kann man niederohmig mit Widerständen bedämpfen, ohne >den AVR zu belasten. Da wirds schwierig ... das überschreitet mein Basiswissen leider auch schon. Hab auch schon die ganze Zeit geschaut ... Problem beim MAX232 (wäre aber wirklich ne feine Lösung): Er hat jeweils "nur" einen Sender und einen Empfänger. Problem dabei: JTAG (warum nicht gleich das nehmen?) hat genau genommen 5 Leitungen: davon 4 als Eingang und einer als Ausgang. (ISP hat ja 3 Eingänge und einen Ausgang, ist ja quasi "fast" gleich). Wenn ich nen Max232 nehme bräuchte ich 4 Stück davon, da siehts mit dem Platz und den Kosten dann wieder blöde aus. Zumal werden 3 Max nur "halb" genutzt. Also nicht wirklich "wirtschaftlich" das Ganze. Hab mich dann mal erinnert, das OP-Amps auch möglich wären ... Problem dabei: Ich weis nicht, ob die OPV`s mit der Taktgeschwindigkeit zurechtkommen ... Wenn die Schnell genug wären, wäre das Prima machbar, einen Quad-OP und einen Single ... wären zwei Bauteile zusätzlich auf der Platine und da die Direkt auch meistens bis 18Volt abkönnen für die 12-15 Volt Spannung direkt passend ... Um von 5V auf 12V zu kommen wäre das nicht schlecht, zurück von 12V nah 5V dann entweder über weitere OPVs mit Z-Diode oder aber einem Schmitttrigger, oder sogar besser noch, einem Optokoppler, so das es direkt Isoliert ist. Gibts mit OPVs ne Möglichkeit ? Wie gesagt, ich hab nen Problen rauszufinden ob die in Frage kommenden (Quad und Single) schnell genug wären. Datenblätter lesen ist nicht immer einfach ... Bestellen kann ich nämlich "nur" bei Reichelt oder Conrad ... MFG Marco
Also irgendwie verstehe ich Dein Problem nicht. Denke ich hier zu einfach oder Du zu kompliziert ? ;-) Wenn Du die Anschlusse des MC für den ISP herausführst, benötigst Du keine zusätzliche Bauelemente auf dem Board. Der Programmieradapter (AVR910) wird dann mit kurzen Kabeln bei Bedarf an den ISP Anschluss angestöpselt und die RS232 des Adapters mit einem (fast=15m) beliebig langen Kabel zum programmieren mit dem PC verbunden. Gruss Andy
andy wrote: > Also irgendwie verstehe ich Dein Problem nicht. Denke ich hier zu > einfach oder Du zu kompliziert ? ;-) > Wenn Du die Anschlusse des MC für den ISP herausführst, benötigst Du > keine zusätzliche Bauelemente auf dem Board. > Der Programmieradapter (AVR910) wird dann mit kurzen Kabeln bei Bedarf > an den ISP Anschluss angestöpselt und die RS232 des Adapters mit einem > (fast=15m) beliebig langen Kabel zum programmieren mit dem PC verbunden. > > Gruss > Andy Nein, keiner denkt zu kompliziert ... Richtig ... das hab ich mit dem AVR-Dragon ja auch schonmal gemacht. Das Problem ist die Kabellänge. Der MC wird in einem "Showcar" eingebaut und ist irgendwo tief hinter der Fahrzeugverkleidung. Die ISP-Leitungen vom Dragon zum MC müßten mehrere Meter lang sein. Laut meinen Infos ist aber ca. bei 20cm schluss und das ist viel, viel zu wenig. Ich kann die ISP-Buchse somit quasi nicht herausführen, oder direkt benutzen. Ich brauche wie gesagt ca. 6 Meter Programmierkabel. Deshalb muß ich "quasi" wohl den "Programmer" mit auf die MC-Platine setzen, damit ich eben für den langen Weg verwendbare Pegel und Signale erhalte damit sich die Sache auch noch sicher programmieren läßt. Da es sich nachher aber um mehrere MCs an verschiedenen Orten handelt muß die Lösung möglichst ""simpel" und günstig sein ... jedesmal Bauteile von 50€ sind da leider nicht machbar. Es geht sich "einfach" nur um eine Lösung die Signale über 6 Meter Kabel aufrecht zu erhalten, so das sie danach noch vom MC akzeptiert werden. Und das mit möglichst wenig Bauteilen. Zusätzliches Problem ist hier ja auch die Geschwindigkeit bzw. die Taktfrequenz, das dürfte bei einigen Methoden ggf. Probleme geben, deshalb fragte ich hier nach, weil mein Wissen dafür eben nicht ausreicht. Wenn ich das richtig verstanden habe haben die meisten OPV eine max. Freq von 1-3 Mhz (zumindest wenn wie im Falle hier ja verstärkt werden muss). Das dürfte ja zu wenig sein ... Es bringt ja nichts, wenn ich den Kram einbaue und sich nachher quasi herausstellt, das die verwendeten Bauteile bei der Übertragungsgeschwindigkeit schlapp machen und die Verbindung nicht funktioniert. Es muß ja nicht superschnell sein ... ne Minute kann man schon warten bis Programmiert ist, aber funktionieren muß es halt. Die Programmierdauer ist relativ unwichtig (macht man ja eh nicht ständig). Wichtiger wäre, das es funktioniert und das mit wenigsten Bauteilen auf kleinstem Platz zum kleinsten Preis. MFG Marco
aaah, jetzt habs ich es kapiert. Dann nimm für jeden MC einen MAX232. Dieser hat 4 Treiber. Damit kannst Du die 4 nötigen Anschlüsse des ISP auf +- 10V treiben. Auf der Programmerseite kommt dann wieder ein MAX232, um wieder auf TTL Pegel für den Dragon zu kommen. (MOSI,SCK und Reset sind Inputs, MISO ist Output) Andere Variante: Du verwendest diese: http://s-huehn.de/elektronik/avr-prog/avr-prog.htm Schaltung für den seriellen Port. Die Leitungen auf der RS232 Seite dürfen ja lang sein. Ich bin zwar kein Freund von solchen Programmern, aber bei Deiner Aufgabenstellung..... Gruss Any
Hast du schonmal einen Versuch mit 6m langer Leitung gemacht? Ich selbst habe ein ~3m langes ISP- Kabel (für Ponyprog am paralellen ISP- Adapter) in einem Auto verbaut. Funktioniert prima. Einzige Maßnahme, die ich noch getroffen habe, war das Kabel zu schirmen. Also probier doch, bevor du dir jetzt schon den Kopf zerbrichst, einfach mal ein 6m langes Kabel aus. Vielleicht tuts ja. Grüße
Dann solltest du aber unbedingt die 10pol Variante nehmen und mit Serienwiderständen arbeiten.
andy wrote: > aaah, jetzt habs ich es kapiert. > Dann nimm für jeden MC einen MAX232. Dieser hat 4 Treiber. Damit kannst > Du die 4 nötigen Anschlüsse des ISP auf +- 10V treiben. > Auf der Programmerseite kommt dann wieder ein MAX232, um wieder auf TTL > Pegel für den Dragon zu kommen. (MOSI,SCK und Reset sind Inputs, MISO > ist Output) Dabei stimme ich Dir zu, Max232 hat zwei eingehend +-10V -> TTL und zwei ausgehende TTL -> +-10V Naja, Du benötigst am Controller einen Ausgang MISO (TTL->+-10V) und 3 Eingänge (MOSI, SCK und RESET\n) wobei Du wahrscheindlich beim RESET\n auf den Treiber verzichten kannst (eventuell mit Kondensator dämpfen), da hier quasi eine Gleichspannung anliegt und kein "Signal" übertragen wird. Zu beachten, wenn Du eine "Mischverdrahtung" planst: MAX232 invertiert das Signal 5V -> -10V 0V -> 10V. Ein MAX3241 hat 3 Ausgänge und 5 Eingänge, ist aber womöglich schwerer zu bekommen und wahrscheindlich auch etwas teurer. Beim programmieren mit avrdude kannst Du auch die Übertragungsgeschwindigkeit beliebig verlangsamen, falls Du bei höheren Übertragungsraten Probleme hast. Also wenn Du einen Prototypen OHNE Treiber ausprobierst, kannst Du das -i Argument von avrdude verwenden.
Oh mann... Ich nehme jetzt mal an, dass es hier darum geht möglichst schnell eine einfache und sicher zu implementierende Lösung gehen soll, ohne Lernen, probieren und Verstehen. Anders kann ich mir das ganze jetzt nicht mehr erklären. Wenn es solch eine Lösung sein soll, dann beauftrage ein Ingenieurbüro oder stelle den Auftrag hier im Markt ein und lass Dir von hier anwesenden Hobbyisten oder Profis ein Angebot unterbreiten. Du willst doch nicht wirklich eine Platine für einen KFZ-Einsatz designen und das mit 0 Aufwand und 0 Verstehen und auch 0 Ideen und Willen zu probieren und Forschen. Es gab nun von vermutlich wenig reproduzierbaren Aussagen "Nimm einfach ein Kabel und es wird gehen" über preiswerte Lösungen mit RS232 bis hin zu meiner Idee ( die im übrigen wirklich und wahrhaft KFZ-Tauglich ist und auch von KFZ Zulieferern so gemacht wird für andere Signale) einen RS485 Treiber einzusetzen. Es geht jetzt mal um den rein technischen Aspekt und Du kannst Deine Lösung ankreuzen und beauftragen, oder eben endlich mal selber experimentieren und verstehen. 1) Langes Kabel: Sehr langsam, nicht wirklich sinnvoll, da über das verlegte Kabel wahrscheinlich Störungen eingefangen werden. 2) TTL-Schmittrigger: Muss mit einigen Widerständen / Kondensatoren bedämpft werden sonst passiert das selbe wie 1) 3) RS232... Also ehrlich, hast Du mal nachgesehen, was Maxim, TI und ST da so anbieten? Es gibt neben dem MAX232 auch noch Varianten mit mehr Receivern oder Transmittern. Und dazu gibt es auch Derivate mit einer für Deine Anforderungen sehr praktischen Einrichtung: Eine Fehlererkennung auf der 12V Seite. Wenn also der Stecker nicht gesteckt ist, dann sind alle Ausgänge zur Controllerseite hochohmig. Nachteil dieser Chips ist, dass sie meist nur als SMD lieferbar sind und auch externe Komponenten in Form von 5 Kondensatoren brauchen. 4) RS485 hier ist tatsächlich das Problem, dass der SPI-Bus, über den meist auch das Programmieren erfolgt, dadurch blockiert wird. Aber durch Einsatz von UTP oder FTP Kablen ist man im KFZ auf der sicheren Seite. Vorteil ist, dass die Bauteile nahezu ohne zusätzliche Komponenten wie Kondensatoren auskommen. Weiterer Vorteil ist, dass sie im DIL Gehäuse lieferbar sind und daher auf Lochraster gesteckt werden können. 6) Bootloader: Tja, das ist die aller einfachste Möglichkeit sich sein Controller-Netz so zurecht zu stricken, wie man es braucht. Man kann ganz einfach ( via RS485 :) ) alle Kontroller vernetzen und einem Controller eine serielle zusätzlich verpassen. Über diesen spielt man dem ganzen System Häppchenweise die neue Software ein. Was spricht gegen Bootloader? Nix. Selbst wenn man jeden Kontroller durch ein offenes Kabel irgendwo versteckt erreichbar macht geht das Seriell über 2 Adern + Masse. Bootloader sind Millionenfach im Einsatz und das auch im AVR. Es gibt Bootloader von Atmel und hier im Forum Links zu diversen bestens getesteten und freien, die man nach eigenen Bedürfnissen anpassen kann. 7) Fuses und Angst... Verstehe ich nicht. Wenn das alles so ein Kostenfaktor ist, dann musst Du Investieren um keinen Müll zu produzieren, sprich AVRs zerflashst. Also kauf Dir den originalen AVRISP MK II für ca. 39,-. Benutze die original AVR-Studio Software, schließe den Controller an und lese die Flags aus. Ändere nichts oder lies genau, was neben den Flags steht, lies dazu im Datenblatt oder frage hier. Das ist sicher und sinnvoll im Gegensatz zu Schaltungen die erst gebastelt und verifiziert werden müssen. Schätze die Wahrscheinlichkeit ab mit der Du durch einen fehlerhaft zusammen gebauten Programmer Deine eigentlichen Schaltungen eventuell nachhaltig beschädigst. AVRDude (verwende ich auch) ist sicherlich eine gute Idee, wenn Du die Fuses und deren EInstellung im Makefile verstanden hast. Vorher ist es in Deinem Fall aber eine zusätzliche Gefahr. Und AVRISP und AVRDude schließen sich ja nicht aus. Du hast gesagt, die Platinen sind schon fertig. Das ist dumm gelaufen, denn das ganze Thema Software Update wurde wohl vergessen. Also muss dran-geflickt werden. Und nun ab, triff eine Entscheidung und verfolge sie bis zum Ende. Und mach aus dem Ziel nicht so ein Geheimnis. Viele Fragen und Wege hätten sich erübrigt, wenn wir vorher genau gewusst hätten, was soll da wo hin und wie ist der exakte Stand der Dinge. Du musst ja nicht gleich Schaltpläne und Betriebsgeheimnisse posten, aber die nötigen Rahmenbedingungen sollten schon allen zur Verfügung stehen um hier sinnvolle Antworten zu erhalten. Dass bei einer Frage in einem Forum immer noch einer kommt, der es noch anders gemacht hat ist selbstverständlich. Du musst aus den Angeboten den passenden Weg wählen. Gruß, Ulrich
Hallo Ulrich Vielen Dank für den langen Post. Es mag sein, das ich nichgt viel Ahnung davon habe, aber ich versuche es mit vernunft zu lösen. Ich habe auch keinen Hinweis gefunden, das Quereinsteiger hier im Forum nicht erwünscht sind. DIe Platine ist übrigends noch nicht gefertigt, ich plane gerade das Design und da macht ich mir im Gegensatz zu anderen leuten VORHER gedanken darüber was die größten Probleme verursachen könnte. > Ich nehme jetzt mal an, dass es hier darum geht möglichst schnell eine > einfache und sicher zu implementierende Lösung gehen soll, ohne Lernen, > probieren und Verstehen. Nun ... warum soll man sich die Sache absichtlich kompliziert machen. DIe einfachsten und simpelsten Lösungen sind meistens die Besten, zumal meist auch am sichersten. > Wenn es solch eine Lösung sein soll, dann beauftrage ein > Ingenieurbüro oder stelle den Auftrag hier im Markt ein und lass Dir von > hier anwesenden Hobbyisten oder Profis ein Angebot unterbreiten. Hmm ... klar, am besten ich Gründe gleich eine eigene Firma für mein kleines Problem ;-)) Das ist Hobby ... ich will als Quereinsteiger lernen und bei Fragen oder Unklarheiten soll man Leute Fragen die davon Ahnung haben. > Du willst doch nicht wirklich eine Platine für einen KFZ-Einsatz > designen und das mit 0 Aufwand und 0 Verstehen und auch 0 Ideen und > Willen zu probieren und Forschen. Nun ja ... ich will mir zumindest ersparen, das der Kram wegen groben Fehlern schon direkt nicht funktioniert. Tut mir leid. Wo Du diese Trugschlüsse hernimmst weis ich nicht. Ideen habe ich, mich interessiert aber eine Lösung die ordentlich ist und dazu braucht man nun einmal Fachwissen. > Es gab nun von vermutlich wenig reproduzierbaren Aussagen "Nimm einfach > ein Kabel und es wird gehen" über preiswerte Lösungen mit RS232 bis hin > zu meiner Idee ( die im übrigen wirklich und wahrhaft KFZ-Tauglich ist > und auch von KFZ Zulieferern so gemacht wird für andere Signale) einen > RS485 Treiber einzusetzen. Das es mit einem einfachen Kabel Probleme gibt ist zu ahnen, ich will da halt auf Nummer sicher gehen. BTW: Dein Vorschlag mit RS482 ist gut und schön ... das Prinzip ähnelt dem CAN-Bus, aber ist hier etwas fehl am Platz, denn ich bräuchte nicht nur 4 einzelne Bausteine, sonder auch für JEDE Programmierleitung 2! Datenleitungen. Ich müßte also für die 4 lumpigen ISP-Leitungen sage und schreibe !8! RS482-Leitungen ziehen ... zumal ich nur 3 zum Senden brauche und nur einen zum empfangen. Mag sein das Du mehr Ahnung von Elektronik hast als ich, aber wirklich passend ist der Vorschlag leider nicht wirklich und geht am eigentlichen Ziel etwas vorbei. > Es geht jetzt mal um den rein technischen Aspekt und Du kannst Deine > Lösung ankreuzen und beauftragen, oder eben endlich mal selber > experimentieren und verstehen. Nun ... das Experimimentieren ist nicht das Problem, ich möchte aber nicht schon an den einfachsten Dingen scheitern wenn man das im Vorfeld schon beheben kann. > 1) Langes Kabel: Sehr langsam, nicht wirklich sinnvoll, da über das > verlegte Kabel wahrscheinlich Störungen eingefangen werden. Tja ... es geht aber leider nunmal nicht anders ... > 2) TTL-Schmittrigger: Muss mit einigen Widerständen / Kondensatoren > bedämpft werden sonst passiert das selbe wie 1) Klingt gut ... Professionell gesehen gibts da auch bestimmt wieder einen entsprechenden IC zu ... der das "professionell" beherbergt. Zumal ist ja auch der Platz auf der Platine wichtig. > 3) RS232... Also ehrlich, hast Du mal nachgesehen, was Maxim, TI und ST > da so anbieten? Es gibt neben dem MAX232 auch noch Varianten mit mehr > Receivern oder Transmittern. Und dazu gibt es auch Derivate mit einer > für Deine Anforderungen sehr praktischen Einrichtung: Eine > Fehlererkennung auf der 12V Seite. Wenn also der Stecker nicht gesteckt > ist, dann sind alle Ausgänge zur Controllerseite hochohmig. Nachteil > dieser Chips ist, dass sie meist nur als SMD lieferbar sind und auch > externe Komponenten in Form von 5 Kondensatoren brauchen. Genau so etwas wäre das Richtige. Ich hatte schon gesehen das es da einiges gibt, aber leider bietet werder Reichelt noch Conrad entsprechendes an. Extra für ein IC woanders zu bestellen ist ... > 4) RS485 hier ist tatsächlich das Problem, dass der SPI-Bus, über den > meist auch das Programmieren erfolgt, dadurch blockiert wird. Aber durch > Einsatz von UTP oder FTP Kablen ist man im KFZ auf der sicheren Seite. > Vorteil ist, dass die Bauteile nahezu ohne zusätzliche Komponenten wie > Kondensatoren auskommen. Weiterer Vorteil ist, dass sie im DIL Gehäuse > lieferbar sind und daher auf Lochraster gesteckt werden können. Ich wollte aber eigentlich nicht über SPI programmieren .. es war ursprünglich von ISP die Rede ... aber über SPI ist auch ne Methode. Wieder eine zusätzliche Idee über die es sich lohnt nachzudenken und diese in Betracht zu ziehen. Darum fragt man ja in einem Forum ... es gibt oft mehrere Möglichkeiten ein Problem zu lösen. Dein Hinweis dazu ist sehr gut, ... Danke dafür! > 6) Bootloader: Tja, das ist die aller einfachste Möglichkeit sich sein > Controller-Netz so zurecht zu stricken, wie man es braucht. Man kann > ganz einfach ( via RS485 :) ) alle Kontroller vernetzen und einem > Controller eine serielle zusätzlich verpassen. Über diesen spielt man > dem ganzen System Häppchenweise die neue Software ein. > Was spricht gegen Bootloader? Nix. Selbst wenn man jeden Kontroller > durch ein offenes Kabel irgendwo versteckt erreichbar macht geht das > Seriell über 2 Adern + Masse. Bootloader sind Millionenfach im Einsatz > und das auch im AVR. Es gibt Bootloader von Atmel und hier im Forum > Links zu diversen bestens getesteten und freien, die man nach eigenen > Bedürfnissen anpassen kann. Hier ist aber mein Verständnisproblem ... es werden meist 4 Leitungen benötigt die zeitlich eine Verknüpfung haben (z.B. mit der Taktleitung). Ich frage mich wie es funktionieren soll 4 Leitungen auf 2 zu quetschen, so das hinten exakt das raus kommt, was vorne reingeht. So ganz einleuchtend ist mir das noch nicht. Zumindest, wenn ich von ISP ausgehe ... da gibts ja keine direkten TXD oder RXD-Leitungen ... > 7) Fuses und Angst... Verstehe ich nicht. Wenn das alles so ein > Kostenfaktor ist, dann musst Du Investieren um keinen Müll zu > produzieren, sprich AVRs zerflashst. Also kauf Dir den originalen AVRISP > MK II für ca. 39,-. Benutze die original AVR-Studio Software, schließe > den Controller an und lese die Flags aus. Ändere nichts oder lies genau, > was neben den Flags steht, lies dazu im Datenblatt oder frage hier. > Das ist sicher und sinnvoll im Gegensatz zu Schaltungen die erst > gebastelt und verifiziert werden müssen. Schätze die Wahrscheinlichkeit > ab mit der Du durch einen fehlerhaft zusammen gebauten Programmer Deine > eigentlichen Schaltungen eventuell nachhaltig beschädigst. > AVRDude (verwende ich auch) ist sicherlich eine gute Idee, wenn Du die > Fuses und deren EInstellung im Makefile verstanden hast. Vorher ist es > in Deinem Fall aber eine zusätzliche Gefahr. Und AVRISP und AVRDude > schließen sich ja nicht aus. Ist der AVR-Dragon Müll ? Nun das Problem ist hier nicht der Programmer, sondern die Kabellänge, das gilt es zu lösen. Es wird generell immer gesagt, das man die Fuses möglichst """in Ruhe lassen soll""". Also mache auch ich da mehr oder weniger einen Bogen drum ... > Du hast gesagt, die Platinen sind schon fertig. Das ist dumm gelaufen, > denn das ganze Thema Software Update wurde wohl vergessen. > Also muss dran-geflickt werden. Nee, eben nicht, das dran-geflicke will ich mir ja ersparen indem eine vernünftige und sichere Lösung im Vorfeld gefunden wird um ein eventl. auftretendes Problem direkt im Vorfeld zu eliminieren. Noch is nix verloren :-) > Und mach aus dem Ziel nicht so ein Geheimnis. Viele Fragen und Wege > hätten sich erübrigt, wenn wir vorher genau gewusst hätten, was soll da > wo hin und wie ist der exakte Stand der Dinge. Du musst ja nicht gleich > Schaltpläne und Betriebsgeheimnisse posten, aber die nötigen > Rahmenbedingungen sollten schon allen zur Verfügung stehen um hier > sinnvolle Antworten zu erhalten. Wo ist das Problem ? Die Frage war ganz einfach, wie ich den MC über eine 6 Meter lange ISP-Leitung "sicher" programmieren kann. Das eigentliche Projekt und das drumherum ist da doch wohl unwichtig und auch wo es verbaut wird. Fakt ist das die Leitung so lang sein muß und meine Frage war, was man technisch machen kann um dort keine Probleme zu kriegen. > Dass bei einer Frage in einem Forum immer noch einer kommt, der es noch > anders gemacht hat ist selbstverständlich. Du musst aus den Angeboten > den passenden Weg wählen. Das ist ja auch gut so so lernt man auch zusätzlich Lösungsmethoden kennen. Kann nur von Vorteil sein. MFG Marco
Marco K. wrote: >> 6) Bootloader: Tja, das ist die aller einfachste Möglichkeit sich sein >> Controller-Netz so zurecht zu stricken, wie man es braucht. ... > Hier ist aber mein Verständnisproblem ... es werden meist 4 Leitungen > benötigt die zeitlich eine Verknüpfung haben (z.B. mit der Taktleitung). > Ich frage mich wie es funktionieren soll 4 Leitungen auf 2 zu quetschen, > so das hinten exakt das raus kommt, was vorne reingeht. So ganz > einleuchtend ist mir das noch nicht. Zumindest, wenn ich von ISP ausgehe > ... da gibts ja keine direkten TXD oder RXD-Leitungen ... Das ist ja gerade der Witz an nem Bootloader, daß er an kein Protokoll gebunden ist. Er hat mit dem ISP per SPI überhaupt nichts mehr zu tun. Minimal reicht eine einzige Leitung aus, maximal braucht man 2 (für alle AVRs gemeinsam). Bei nem Bootloader mit Autobaud braucht man sich auch keinen Kopf mehr um die Leitungslänge zu machen. Man geht einfach solange mit der Baudrate runter, bis es klappt. Irgendwelche teuren supidupi Leitungstreiber sind also völlig unnötig. Peter
Dann kristalisiert sich jetzt die beste Möglichkeit heraus ... Also, ich werde einen ISO-K-Line-Wandler benutzen, die wurden extra fürs KFZ entwickelt. Können direkt die Bordspannung ab und arbeiten bidirektional. Braucht nur eine einzige Leitung und ist CMOS-kompatibel, kann also direkt an die serielle Schnittstelle des MC angebunden werden. Das kommt meiner Vorstellung schon mehr als nahe ... sie ist quasi "perfekt". Jetzt muß ich nur noch mit dem Bootloader klarkommen, da muß ich mich einlesen. MFG Marco
Ok, ist schon spät, aber nur um weitere Missverständnissen vorzubeugen: SPI ist ein Bus, der bei den meisten AVRs ( es gibt auch Ausnahmen) für der ISP verwendet wird. SPI = Serial Periphal Interface ISP = In System Programming Verwendet werden MOSI ( MasterOutSlaveIn), MISO ( MasterInSlaveOut), SCK (SerialClocK) und RESET für das ISP Interface. Es werden mit der SCK immer gleichzeitig ein Bit via MISO an den Master und via MOSI vom Master übertragen. Es wird klar, dass durch das mitgelieferte SCK die Geschwindigkeit vorgegeben wird, also zwar eine Geschwindigkeit vorgegeben werden muss, aber diese Information steht als eigenes Signal beiden Seiten einer Kommunikation zur Verfügung. Du wirst das ISP Interface verwenden müssen um wenigstens einmal einen Bootloader auf dem Chip zu installieren, es sei denn Du verwendest einen der noch nicht lieferbaren neuen Chips der mega-U oder ATxmega auf denen ein Bootloader bereits vorinstalliert sein soll. Ob Du für diese Erstprogrammierung den Dragon nehmen oder AVRISP oder was auch immer, Hauptsache Du beherrschst es sicher. Dieser Bootloader wird in einen speziellen Bereich des normalen Flash installiert, der vom Chip gelesen werden kann, wären andere Bereiche reprogrammiert werden. Normalerweise können Controller nicht auf einen Speicher zugreifen, der gerade programmiert wird aber hier ist das anders. Da der Bootloader auf jede Peripherie des AVRs zugreifen kann, weil er ein ganz normales Programm ist, das es fertig gibt oder von Dir geschrieben werden kann, ist klar, dass er auch über jeden zur Verfügung stehenden Weg die Daten erhalten kann, die er in den Flash schreiben soll. Nun kann man also den Bootloader so schreiben, dass er über einen UART Daten und Befehle erhält und diese dann ausführt. Also auch einen Befehl wie lade n Bytes, prüfe sie anhand einer Prüfsumme und wenn sie stimmt, dann programmiere die Bytes ab Adresse in den Flash. Melde Dich zurück, wenn das Programmieren abgeschlossen ist und die nächsten Bytes gesendet werden können. Der UART benötigt dafür nur 3 Leitungen, RX (Empfangen), TX (Senden) und Masse. Ein RS485 braucht dazu 4 Leitungspaare aber keine Masse: A-B ( Pärchen fürs Senden) und Y-Z ( Pärchen fürs Empfangen) man kann das sogar auf 2 Leitungen reduzieren. Dazu schließt man A-Y und B-Z zu einem Pärchen zusammen. Der RS485 Treiber hat einen Steuereingang mit dem man dann zwischen Senden und Empfangen umschalten kann. Da die Kommunikation recht einfach ist, bei einem Bootloader, ist das schnell geschrieben. Was Dich verwirrt ist an meiner Idee einen RS485 für den ISP, also den SPI-Port zu nehmen. RS485 macht nichts anderes, als ein Signal auf zwei Leitungen zu senden. Dabei wird auf einer Ader das Signal positiv, auf der anderen das gleiche Signal negativ übertragen, es wird also differentiell übersetzt. Nutzt man verdrillte Adern, dann ignoriert dieses Verfahren Störeinstrahlungen von außen prinzipbedingt. Außerdem ist RS485 insofern Busfähig, als das man mehrere Partner anschließen kann. Die Kommunikation muss man sich halt irgendwie überlegen. So steuere ich zum Beispiel mit 100 kleinen AVRs 100 Lampen in einem Testrahmen, jeweils 20 an einem Bus mit einem ARM7, der diese kontrolliert und seine Befehle wiederum aus dem TCP/IP Netz von einem Server erhält. So, und nun sollten die gröbsten Missverständnisse geklärt sein. Du kannst natürlich über einen CAN-Bus Baustein auch ein Software-Update via OBD2 für Dein System bauen oder über ein paar GPIOs die K-Line emulieren. Du kannst die Platine auch hinter einem Schlitz verstecken und durch diesen hindurch eine SD-Card für Software-Updates einstecken. Durch einen Bootloader ist fast alles machbar, was in den Bootloader Sektor hineinpasst. Zu den Fuses kann ich nur sagen: Du solltest sie schnell verstehen. Hier werden nämlich nicht nur wilde Dinge wie Sperren gegen Zugriffe auf Bootloader und / oder Flash festgelegt, etwas dass Du nicht verändern willst, sondern auch die Eigenschaften von BrownOut Reset und Taktbasis. Und wenn Du das Teil in einem PKW einsetzen willst, kannst Du die Schaltung nur mit den korrekten Einstellungen dieser Fuses zu einer zuverlässigen Mitarbeit überreden. Da hilft, fürchte ich, nix. Gruß, Astralix Ps: Außer Con und Rei gibt es auch noch Segor als Lieferanten für den Normal-Bastler.
Zur Fragestellung: 6m ISP-Kabel sind kein Problem, wenn jede 2te Ader des Flachbandkabels Masse ist und SCK und MOSI am Target mit 2k2 nach Masse gezogen werden. Reset wird am Target mit 4k7 nach Vcc gezogen, MISO wird am Programmer mit 2k2 nach Masse gezogen. Alle Signalleitungen erhalten zusätzlich 33 Ohm Serienwiderstände auf der Programmerseite. Funktioniert sicher mit über 1Mhz ISP-Frequenz.
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.