Hallo,
ich versuche jetzt schon seit einiger Zeit eine Schaltung zu entwerfen,
um den avrisp mkII galvanisch von der Zielschaltung zu trennen. Dabei
bin ich auf folgende Schwierigkeiten getroffen:
- der isp prüft, ob die Zielschaltung Strom hat, indem der High Pegel
des Reset Kanals getestet wird und versucht sie dann auf low zu ziehen.
Das habe ich folgendermaßen realisiert (siehe Anhang, Reseteingang am
Mikrocontroller beschaltet wie üblich)
- bei den benötigten 3 anderen Leitungen (MISO, MOSI, SCK) hingegen
kriege ich meiner Meinung nach Probleme, wenn andere Geräte am SPI
hängen. Wenn ich Optokoppler oder Übertrager einsetze, werden die
Potentiale der Leitungen von diesen immer auf das Eingangslevel, das vom
ISP kommt, gezogen, eine Kommunikation des uC mit dem Gerät ist dann
nicht mehr möglich. Abhilfe würde hier ein Tristate schaffen, der
aktiviert wird, wenn der Programmiervorgang startet, aber ich habe keine
Möglichkeit gefunden, dieses Event irgendwie abzugreifen.
Als Lösungen sehe ich hier, den Programmer immer nur einzustecken, wenn
programmiert werden soll (unpraktisch, dann könnte ich immer auch auf
Batteriebetrieb wechseln um das Isolationsproblem zu umgehen) oder halt
keine anderen SPI Geräte einzusetzen.
Ist mein Gedankengang hier überhaupt richtig, hat jemand schonmal
soetwas gemacht?
bobberjahn schrieb:> - der isp prüft, ob die Zielschaltung Strom hat, indem der High Pegel> des Reset Kanals getestet wird und versucht sie dann auf low zu ziehen.> Das habe ich folgendermaßen realisiert
Nimm C und R ´raus und schalte die LED des Optokopplers mit 1k nach Vcc.
bobberjahn schrieb:> bei den benötigten 3 anderen Leitungen (MISO, MOSI, SCK) hingegen> kriege ich meiner Meinung nach Probleme, wenn andere Geräte am SPI> hängen. Wenn ich Optokoppler oder Übertrager einsetze, werden die> Potentiale der Leitungen von diesen immer auf das Eingangslevel, das vom> ISP kommt, gezogen, eine Kommunikation des uC mit dem Gerät ist dann> nicht mehr möglich.
Optokoppler sind ausgangsseitig hochohmig, wenn sie nicht angesteuert
werden.
bobberjahn schrieb:> Ist mein Gedankengang hier überhaupt richtig,
Eher nicht. Die von Dir verwendeten Optokoppler sind viel zu langsam und
bidirektionale Interfaces, wie PDI, funktionieren damit gar nicht. Schau
Dir mal optische oder magnetische High-Speed Koppler an, die Du so
verschaltest, dass alle Interface-Formen, die der mkII beherrscht, auch
damit abgedekt werden.
bobberjahn schrieb:> Abhilfe würde hier ein Tristate schaffen, der> aktiviert wird, wenn der Programmiervorgang startet, aber ich habe keine> Möglichkeit gefunden, dieses Event irgendwie abzugreifen.
Der RESET-Pin des MkII ist dieses Event. Ist er LOW, dann müssen die
Treiber durchgeschaltet werden, ist er HIGH, dann müssen sie hochohmig
sein.
>Als Lösungen sehe ich hier, den Programmer immer nur einzustecken, wenn>programmiert werden soll (unpraktisch, ...
Wie oft programmierst du deinen µC? Warum soll der Programmer ständig
eingesteckt bleiben?
Wenn ich per SPI angesprochenen Baugruppen verwende, habe ich die per
Flachbandkabel an die ISP-Buchse angeschlossen. Nach dem Programmieren
wird halt umgesteckt.
Ich würde eine Box (oder nur LP) mit Schaltern dazwischen bauen, um die
entprechenden Leitungen für die Programmier-/Testphase abzuschalten bzw.
umzuschalten.
@ bobberjahn (Gast)
>ich versuche jetzt schon seit einiger Zeit eine Schaltung zu entwerfen,>um den avrisp mkII galvanisch von der Zielschaltung zu trennen.
Warum? 99% der Schaltungen brauchen das nicht. Zerschossene ISP-Adapter
haben meist andere Ursachen.
>- der isp prüft, ob die Zielschaltung Strom hat, indem der High Pegel>des Reset Kanals getestet wird und versucht sie dann auf low zu ziehen.>Das habe ich folgendermaßen realisiert (siehe Anhang, Reseteingang am>Mikrocontroller beschaltet wie üblich)
Funktioniert nur bedingt. Du täuschst nur ein Rücklesen des Signals vor.
OK, zum Austricksen des Programmers reicht es. Aber auch hier ist der
Optokopplerausgang eher schwach, ein (Open Drain) Treiber in Form einen
kleinen FETs wäre sinnvoll.
>- bei den benötigten 3 anderen Leitungen (MISO, MOSI, SCK) hingegen>kriege ich meiner Meinung nach Probleme, wenn andere Geräte am SPI>hängen.
Nö, du brauchst halt echte Treiber hinter den Optokopplern. 74HC125 z.B.
>nicht mehr möglich. Abhilfe würde hier ein Tristate schaffen, der>aktiviert wird, wenn der Programmiervorgang startet,
Genau.
> aber ich habe keine>Möglichkeit gefunden, dieses Event irgendwie abzugreifen.
Kann man über ein retriggerbares Monoflop an SCK erreichen. Solange
SCK wackelt, sind die Treiber aktiv. Ist es für ein paar Sekunden ruhig,
werden die Treiber dekativiert. Oder über das Reset, das ist ja während
der gesamten Programmierung auf LOW, IIRC.
>Als Lösungen sehe ich hier, den Programmer immer nur einzustecken, wenn>programmiert werden soll (unpraktisch, dann könnte ich immer auch auf>Batteriebetrieb wechseln um das Isolationsproblem zu umgehen)
Was für ein Isolationsproblem hast du denn? Motorsteuerung auf
Netzpotential?
MFG
Falk
Danke, das sind schonmal hilfreiche Tipps.
Falk Brunner schrieb:> Was für ein Isolationsproblem hast du denn? Motorsteuerung auf> Netzpotential?
Bei bestimmten Einsatzzwecken bin ich kein Fan von externen Netzteilen
und möchte daher mal Kondensatornetzteile ausprobieren. Und das Risiko
mir dann wegen der fehlenden galvanischen Trennung über den Programmer
den PC zu zerschießen will ich nicht eingehen.
> und möchte daher mal Kondensatornetzteile ausprobieren. Und das Risiko> mir dann wegen der fehlenden galvanischen Trennung über den Programmer> den PC zu zerschießen will ich nicht eingehen.
Geht das überhaupt? Ist da nicht eher der Programmer futsch und bei
falschen Strom schaltet Windows die USB-Schnittstelle aus. Hab ich schon
ein paar mal gehabt. Wieder aktiviert und gut war.
@ bobberjahn (Gast)
>> Was für ein Isolationsproblem hast du denn? Motorsteuerung auf>> Netzpotential?>Bei bestimmten Einsatzzwecken bin ich kein Fan von externen Netzteilen>und möchte daher mal Kondensatornetzteile ausprobieren.
Dann sollte man sein Testobjekt sowieso über einen Trenntrafo betreiben.
> Und das Risiko>mir dann wegen der fehlenden galvanischen Trennung über den Programmer>den PC zu zerschießen will ich nicht eingehen.
Je nach Netzteilaufbau gibt es zwei Fälle.
A) Masse=N, nix passiert
B) Mass=L, satter Kurzschluß über deinen Programmer und PC, Sicherung
fliegt.
@ bobberjahn (Gast)
>> A) Masse=N, nix passiert>> B) Mass=L, satter Kurzschluß über deinen Programmer und PC, Sicherung>> fliegt.>Verstehe ich nicht. Wenn ich es so aufbaue, wie zB hier>http://www.mikrocontroller.net/articles/Controller...>gezeigt, ist es doch verpolungssicher.
Nö. Nicht aus Sicht des angeschlossenen ISP-Programers. Zeichne mal eine
Masseverbindung vom GND im Schaltplan zu GND von PC, welcher mit PE der
hausinstallation verbunden ist. Und dann schließ dein
Kondensatornetzteil mal so und mal so an die Steckdose an. Bitte nur
gedanklich, denn sonst knallt es wirklich.
Gut, diese permanent vorhandene Potentialdifferenz hatte ich durch die
gewollte galvanische Trennung ausgeblendet ;) Aber um das zu Trennen bin
ich ja dabei die Schaltung zu entwerfen, um die dieser Thread geht.
Funktionieren müsste es also so wie oben beschrieben, vorrausgesetzt
eine korrekte Isolation der beiden Seiten der Trennungsschaltung ist
vorhanden.