Forum: Mikrocontroller und Digitale Elektronik AVR: Mehrere ISP Programmer anbinden


von Tony S. (tooony)


Angehängte Dateien:

Lesenswert?

Hallo in die Runde,

für das folgende Vorhaben suche ich eine elegante Lösung:

Ein AVR (ATMega2560) läuft mit 5V und bedient mehrere SPI-Slaves auf der 
5V Ebene und auf der 3,3V Ebene. Als SPI-Pegelwandler kommt ein 
74AHCT125 (hoch) und ein 74LVC125 (runter) zum Einsatz. Das funktioniert 
auch wunderbar.

Zusätzlich werden die SPI Pins für ISP über die gleichen genannten 
Pegelwandler (aber in andere Richtung beschalten) auf die 3,3V Ebene 
gebracht. Anbei ist ein Bild der Pegelwandler für die ISP-Leitungen.

Die Resetleitung des ISP schaltet bei Programmierung die Pegelwandler 
für SPI ab und aktiviert die ISP Gatter.

Zum Problem:

Die ISP-Leitungen sollen an ein Raspberry Pi Compute Module 
angeschlossen werden, um den AVR via avrdude zu programmieren. Wenn ich 
die ISP-Leitungen an das Compute Module anschließe und avrdude ausführe, 
kann ich problemlos auf den AVR zugreifen und eine neue Firmware 
aufspielen.

Hinzukommen soll nun auch der klassische ISP-Wannenstecker, um als 
Entwickler auch mal eine Firmware unabhängig vom Compute Module 
aufzuspielen. Folglich muss das ISP-Interface des Wannensteckers mit an 
die bereits vorhandenen ISP-Leitungen (3,3V Ebene) angeschlossen werden.

Wie schaltet man am besten mehrere ISP-Programmer parallel an die 
ISP-Leitungen (3,3V Ebene). Genügt hierfür pro Programmer ein 
Serienwiderstand für jede Leitung in Reihe? Wenn ja, groß sollte dieser 
sein? Oder wäre hierfür ein Multiplexer/Demultiplexer (Analogschalter) 
sinnvoll? Wenn ja, welchen könnt ihr empfehlen?

Hat jeman so etwas schon mal umgesetzt und eine Beispielschaltung 
anzubieten?

Ein zeitgleiches Programmieren durch Compute Module (avrdude) und 
angeschlossenem externen Programmer (Atmel Ice) ist zunächst mal 
ausgeschlossen.

Vielen Dank für eure Mühe!

Gruß,
Tony

von Stefan F. (Gast)


Lesenswert?

Ich würde das mit Multiplexern lösen, anstatt mit halbgaren Workarounds 
die nicht einmal wesentlich günstiger oder kleiner sind.

von Tony S. (tooony)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich würde das mit Multiplexern lösen, anstatt mit halbgaren Workarounds
> die nicht einmal wesentlich günstiger oder kleiner sind.

Kannst du einen passenden Schaltkreis empfehlen?

von Stefan F. (Gast)


Lesenswert?

CD4053B

von Tony S. (tooony)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> CD4053B

Vielen Dank für den Hinweis. Hab mir den direkt mal angeschaut und 
eingezeichnet. Anbei der komplette Schaltplan des SPI / ISP Interfaces 
am AVR.

Aktuell fehlt noch das Umschalten des CD4053B in Abhängigkeit der 
Resetleitungen. Hierzu noch eine Frage: Für die Resetleitungen wäre 
meiner Meinung nach ebenfalls ein Mux/Demux sinnvoll. Hierbei muss dann 
der Mux/Demux der beiden Resetleitungen getriggert werden durch, bspw. 
den externen Reset des ISP-Wannensteckers. Folglich wäre dann die 
ISP-Resetleitung des Compute Modules und dessen ISP Interface 
standardmäßig am Mux/Demux ausgewählt. Sehe ich das richtig?

Kannst du eine Empfehlung für einen Mux/Demux für die Resetleitung 
aussprechen - quasi ein CD4053B aber SIngle Channel. Bei TI und Co gibt 
es ja sehr viele im Katalog. Ich würde gerne einen bewährten 
Einkanal-Mux/Demux einsetzen.

Gerne auch einen Kommentar zur gesamten Schaltung, ob das so 
funktionieren kann. Bezüglich der Widerstände R147-149 und R155-158: Die 
habe ich vorgesehen um ein paar Ohm in die Leitungen einzubauen. Primär 
für den Fehlerfall, dass mal Ausgang gegen Ausgang treibt. Wären diese 
Widerstände sinnvoll? Wenn ja, welcher Widerstandswert wäre denkbar? Ich 
dachte an 33..100 Ohm, aber mir stellt sich die Frage, ob das so 
praktikabel ist, da im Fehlerfall dann ja relativ viel Strom fließt.

Vielen Dank für eure Mühe!

Gruß,
Tony

von Tony S. (tooony)


Lesenswert?

Tony S. schrieb:
> Kannst du eine Empfehlung für einen Mux/Demux für die Resetleitung
> aussprechen - quasi ein CD4053B aber SIngle Channel. Bei TI und Co gibt
> es ja sehr viele im Katalog. Ich würde gerne einen bewährten
> Einkanal-Mux/Demux einsetzen.

Update: Bezüglich eines Mux/Demux für die Resetleitungen bin ich über 
den SN74LVC1G3157 gestolpert.

http://www.ti.com/product/SN74LVC1G3157

von Pandur S. (jetztnicht)


Lesenswert?

Als Resetmux verwende ich den  4LVC2G126, im TSSOP8

von Stefan F. (Gast)


Lesenswert?

Tony S. schrieb:
> Anbei der komplette Schaltplan

Den Reset Eingang des AVR kannst du ruhig mit Dioden verknüpfen, dann 
entfallen ein paar Transistoren und Widerstände.

Etwa so:
1
In o----|<|----+
2
               |
3
In o----|<|----+-----------+----[===]---o 3,3V
4
                           |
5
                           +-----||-----| GND
6
                           |     100nF
7
                           |
8
                           o AVR reset

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.