Forum: Mikrocontroller und Digitale Elektronik "ISP" - Programmierleitung von 6 metern Länge möglich ?


von Marco K. (mbc)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wie wär's mit RS-232 und einem zusätzlichen Controller der die 
ISP-Programmierung vornimmt?

von Marco K. (mbc)


Lesenswert?

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

von andy (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Marco K. (mbc)


Lesenswert?

>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

von Gabriel W. (gagosoft)


Lesenswert?

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

von Marco K. (mbc)


Lesenswert?

> 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

von Peter D. (peda)


Lesenswert?

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

von Ulrich P. (uprinz)


Lesenswert?

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

von Gast (Gast)


Lesenswert?

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

von Gabriel W. (gagosoft)


Lesenswert?

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.

von Marco K. (mbc)


Lesenswert?

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

von andy (Gast)


Lesenswert?

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

von Marco K. (mbc)


Lesenswert?

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

von andy (Gast)


Lesenswert?

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

von annerer (Gast)


Lesenswert?

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

von Andreas K. (a-k)


Lesenswert?

Dann solltest du aber unbedingt die 10pol Variante nehmen und mit 
Serienwiderständen arbeiten.

von Gabriel W. (gagosoft)


Lesenswert?

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.

von Ulrich P. (uprinz)


Lesenswert?

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

von Marco K. (mbc)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Marco K. (mbc)


Lesenswert?

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

von Ulrich P. (uprinz)


Lesenswert?

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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.