Forum: Mikrocontroller und Digitale Elektronik Mit einem ISP Stecker zwei Atmega programmieren


von Niine (Gast)


Lesenswert?

Hey,
ich hab mal eine kurze Frage.

Ich entwickel gerade einen Schaltplan für ein Projekt in dem zwei 
Atmega16 sind. Diese sollen per SPI miteinander kommunizieren.

Nun ist meine Frage ob ich einen ISP Stecker für beide nehmen kann indem 
ich einfach den Reset Pin per Schalter auswähle? Oder brauch ich 
wirklich zwei? Das Problem ist denk ich das durch die 
Spannungsversorgung des ISP Steckers das ganze Board ja versorgt wird 
und es evtl Probleme geben kann, weil der andere ja auch empfängt und 
ein Raspberry Pi auch noch dranhängt :-/


Danke für eure Hilfe.

Lg Niine

von cppler (Gast)


Lesenswert?

Schaltplan ?
Trenne einfach alle Leitungen bis auf VCC und GND vom ISP-Anschluß.

von F. K. (superpcfan)


Lesenswert?

Hallo

Prinzipiell kannst du "einfach" den Reset per Dip-Schalter umschalten.

Du musst nur berücksichtigen, dass sich während der Programmierung alle 
anderen SPI Teilnehmer passiv verhalten müssen. Soll heißen, keiner darf 
aktiv die SPI Leitungen "treiben". Das soll ja dein Programmer tun.
Das lässt sich mit einem zusätzlichen Eingang auf dem Reset des anderen 
Controller lösen.
So kannst du den anderen Teilnehmern auch mitteilen, dass sie auf die 
Daten während der Programmierung nicht zu reagieren brauchen.

Mit einem Bootloader könnte man das Ganze sicherlich auch eleganter 
lösen, aber wie oben beschrieben funktioniert es jedenfalls.

Gruß
SuperPCFan

von c-hater (Gast)


Lesenswert?

Niine schrieb:

> Ich entwickel gerade einen Schaltplan für ein Projekt in dem zwei
> Atmega16 sind. Diese sollen per SPI miteinander kommunizieren.
>
> Nun ist meine Frage ob ich einen ISP Stecker für beide nehmen kann indem
> ich einfach den Reset Pin per Schalter auswähle?

Nein.

> Oder brauch ich
> wirklich zwei?

Nein.

Was du brauchst, ist ein Dreiebenen-Schalter. Und zwar völlig unabhängig 
davon, ob es nun eine oder zwei Programmierbuchsen gibt. Dies 
entscheidet nur noch darüber, ob es ein einfacher Dreiebenen-Schalter 
tut oder ob du sogar einen Dreiebenen-_Um_Schalter benötigst.

Das Problem ist nämlich, daß für die Kommunikation MOSI und MISO der 
beiden µC "über Kreuz" verbunden sein müssen, zum Programmieren dürfen 
sie das aber nicht sein, sondern an die Programmierbuchse müssen sie 
immer auf dieselbe Weise geführt werden.

Ich hatte das Problem auch schon gelegentlich und hab's mit einer Buchse 
und einem 3x3-Stiftfeld gelöst, auf dem ich drei (zur Senkung der 
Fehlerquote zusammengeklebte) Jumper umstecke.

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

> Das Problem ist nämlich, daß für die Kommunikation MOSI und MISO der
> beiden µC "über Kreuz" verbunden sein müssen, zum Programmieren dürfen
> sie das aber nicht sein

Korrektur: Das beschriebene Problem ist nicht dein Problem. Das ist nur 
ein Problem, wenn man die Kombination aus einen Mega und einen Tiny 
benutzt oder zwei Tinys.

Aber trotzdem brauchst du zumindest einen Zwei-Ebenen-Schalter, um den 
Ausgang des jeweils gerade nicht zu programmierenden µC zuverlässig vom 
Programmierbus abzutrennen. Den einfach fest auf Reset zu ziehen 
funktioniert nicht, dann dann würden ja wieder zwei µC auf die Anfragen 
des Programmers antworten.

von Thomas E. (thomase)


Lesenswert?

Überleg dir mal, ob es wirklich notwendig ist, zwei Controller auf einem 
Board zu haben. Meistens schafft man sich damit mehr Probleme, als daß 
es nützt. Fängt ja schon beim Flashen an.

mfg.

von Ni (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Überleg dir mal, ob es wirklich notwendig ist, zwei Controller auf
> einem
> Board zu haben. Meistens schafft man sich damit mehr Probleme, als daß
> es nützt. Fängt ja schon beim Flashen an.
>
> mfg.

Ja, ich denke schon. Der eine ist Zeitkritisch und der andere kann 
langsamer arbeiten und mit dem Raspberry arbeiten. Und es ist eine gute 
Möglichkeit mich etwas zu steigern.

Der Tipp mit den Stufenschalter ist gut. Ich stell mir also einen 
Schalter vor der 3 Positionen hat (uC 1, uC 2, Kommunikation) und je 5 
Kontakte schalten kann. Allerdings finde ich nirgends einen.
Hat da jmd von euch einen Tipp zu dem vorgestellten Bauteil?

Vielen Dank, lg Niine

von cppler (Gast)


Lesenswert?

Einmal gesucht und bei der "C Apotheke" gefunden:
http://www.conrad.de/ce/de/overview/0216600/Stufenschalter
Allerdings wäre ein Jumper mit fixen Dreifachbrücken sicherlich kleiner 
und günstiger.

von Niine (Gast)


Lesenswert?

Hey,
oh an einfache Jumper habe ich noch garnicht gedacht. Die Stufenschalter 
sind mir zu groß. Ich mach das mit den Jumpern. Danke euch allen!

Lg Niine

von c-hater (Gast)


Lesenswert?

Niine schrieb:

> oh an einfache Jumper habe ich noch garnicht gedacht.

Dann hast du mein Posting definitiv nicht bis zum Ende gelesen.

Da hatte ich nämlich beschrieben, daß ich das genau so gemacht habe. 3x3 
Stiftfeld und 3 zusammengeklebte Jumper darauf. Ersetzt auf kleiner 
Fläche einen Dreiebenen-Umschalter.

Bloß das Handling ist etwas weniger komfortabel ;o)

von Thomas E. (thomase)


Lesenswert?

Ni schrieb:
> Ja, ich denke schon. Der eine ist Zeitkritisch und der andere kann
> langsamer arbeiten und mit dem Raspberry arbeiten. Und es ist eine gute
> Möglichkeit mich etwas zu steigern.

Gesteigert hast du dich, wenn das auf einem Controller läuft.

Viel schlimmer ist aber, daß du den falschen gelobt hast:

c-hater schrieb:
> Niine schrieb:
>
>> oh an einfache Jumper habe ich noch garnicht gedacht.
>
> Dann hast du mein Posting definitiv nicht bis zum Ende gelesen.
>
> Da hatte ich nämlich beschrieben, daß ich das genau so gemacht habe. 3x3
> Stiftfeld und 3 zusammengeklebte Jumper darauf. Ersetzt auf kleiner
> Fläche einen Dreiebenen-Umschalter.


mfg.

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.