Forum: Mikrocontroller und Digitale Elektronik Zwei über SPI verbundene µC brennen


von Christian B. (chris001)


Lesenswert?

Hallo Leute!

Ich experimentiere hier im Mom mit zwei Atmega 8 und tausche zwischen 
den beiden über SPI Daten aus.

Das Problem was ich habe, wenn ich an einem der beiden µC ein neues 
Programm aufspielen will, muss ich immer den SPI zu dem zweiten µC 
trennen. Sonst funktioniert es nicht. Gibt es da ein Trick, damit ich 
das nicht immer trennen muss?

LG

Christian

von Walter T. (nicolas)


Lesenswert?

CLK-Leitung abtrennen reicht aus.

von Guest (Gast)


Lesenswert?

Habe es jetzt nicht ausprobiert. Aber was passiert, wenn du die 
Resetleitung auftrennst und während dem Programmieren den andern uC auf 
Reset hälst?

von clk (Gast)


Lesenswert?

Ich habe das mit einem Jumper in der CLK-Leitung gelöst.

Guest schrieb:
> Aber was passiert, wenn du die
> Resetleitung auftrennst und während dem Programmieren den andern uC auf
> Reset hälst?

Beim Programmieren wird der uC im Reset gehalten. Nur dann ist 
Programmieren möglich.
Deshalb müsste man den uC, den man nicht programmieren will, nicht im 
Reset halten. Aber dann würde er unter Umständen das SPI treiben.

Also über CLK machen.

von Walter T. (nicolas)


Lesenswert?

Naja, um genau zu sein: Beide µC im Reset halten, aber nur den 
programmierten mit CLK versorgen.

Ansonsten treibt der andere immer noch MOSI.

von Christian B. (chris001)


Lesenswert?

Danke für die schnellen Antworten.

Wenn ich beide auf Reset halte, überträgt der auf beide das Programm. 
Ich hab also dann auf beiden µC das gleiche Programm...

Das mit dem clk funktioniert aber auch iwi nicht so ganz.
Wenn ich den clk unterbreche, wird die Übertragung mit Fehlermeldung 
abgebrochen. Lege ich beide µC auf Reset und unterbreche den clk, wird 
das Programm übertragen. Leider sind die beiden µC danach so 
durcheinander, das ich die Spannungsversorgung kurz unterbrechen muss.

Ist das, dass Ende vom Lied?

LG

von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

Christian Betzen schrieb:

> Ist das, dass Ende vom Lied?

Nö. Nimm einen Vierfach 2:1 Analogmultiplexer wie

FST3257 (Fairchild)
74CBT3257 (TI)
74FST3257 (ON)

Wenn Reset auf Low gezogen wird, schaltet der Multiplexer die 
Prozessorpins auf den ISP-Stecker. Bei Reset auf Hi schaltet der 
Multiplexer die Pins auf die restliche Schaltung.

Das funktioniert immer.

fchk

von Christian B. (chris001)


Lesenswert?

Alles klar!

Danke für die ausführliche Antwort. Werd mir bei Gelegenheit mal so n 
Multiplexer bestellen und es ausprobieren....

Danke....

von Frank K. (fchk)


Lesenswert?

Christian Betzen schrieb:

> Danke für die ausführliche Antwort. Werd mir bei Gelegenheit mal so n
> Multiplexer bestellen und es ausprobieren....

für jeden AVR einen. Besser ist das.

von CS_Signal (Gast)


Lesenswert?

Hey,

das SPI-Interface hat noch eine vierte Verbindung, mit welcher der 
Master einen von mehreren Slaves am Bus auswählt, meist als !CS 
gekennzeichnet, d.h. der Slave ist aktiv, wenn das Signal low ist. Ist 
der Slave inaktiv, schaltet er seine PINs als Eingang und stört den Bus 
nicht weiter. Das sollte schon mal den einen µC (Slave) schützen.
    Der andere, also der Master, müsste seine PINs als Eingang schalten, 
wenn er grad nichts senden will.
    Zum Proggen wird dann der entsprechende µC über seinen !Reset 
ausgewählt und für den normalen Datenaustausch, der SPI am Master 
aktiviert und dem Slave über !CS mitgeteillt, dass Daten für ihn kommen.

So sollte es funktionieren, ob's das tut hab ich noch nicht probiert.

von Christian B. (chris001)


Lesenswert?

Hi!

> das SPI-Interface hat noch eine vierte Verbindung, mit welcher der
> Master einen von mehreren Slaves am Bus auswählt.

Ne, funktioniert nur bei einem der beiden µC alles sehr experimentell.
Die Sache mit dem Multiplexer gefällt mir. Alternativ kann  man bestimmt 
noch was mit nem 4066 CMOS IC machen. Sowas hab ich da, ich werds mal 
versuchen.

LG

von wat (Gast)


Lesenswert?

Christian Betzen schrieb:
> Wenn ich den clk unterbreche, wird die Übertragung mit Fehlermeldung
> abgebrochen.

Hast du was anderes erwartet?
Du musst den CLK natürlich mit dem uC verbinden, den du programmieren 
möchtest.
Und beide ins reset ziehen, damit die Leitung frei wird.

von Christian B. (chris001)


Lesenswert?

Hi!

Ich habe jetzt die Pins SCK, MISO, MOSI über ein 4066 getrennt. Die 
Eingänge des ICs schalte ich über Reset. Wird also eins der beiden µC 
programmiert, werden die Eingänge über Reset nach GND gezogen und damit 
die beinden µCs voneinander getrennt. Funktioniert einwandfrei....

LG

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.