Forum: Mikrocontroller und Digitale Elektronik 15 PICs parallel programmieren


von Stefan N. (suckiden)


Lesenswert?

Hallo Leute,

ich muss für ein Projekt 15 PICs parallel bzw. hintereinander 
programmieren (ICD3). Diese befinden sich auf einem Nutzen und weil ich 
das Programmierkabel nicht immer umstecken will suche ich eine Lösung 
wie ich das vermeiden kann. Drehschalter wäre eine sehr einfache Lösung, 
jedoch gibt es die meisten max mit 12 pins was für die 15 zu wenig ist.

Daher meine Frage: hat schon irgend jemand Multiplexer verwendet um 
zwischen den einzelnen µCs umzuschalten oder gibt es eine andere Lösung 
an die ich noch nicht gedacht habe?

Gruß suckiden

von Udo (Gast)


Lesenswert?

15 Stück, das ist doch gar nichts.
Du wirst länger brauchen um da eine
Schaltung für zu bauen, als wenn du
das Kabel umsteckst. Wenn die nur
einmal programmiert werden sollen,
dann steck immer um.

von Takao K. (takao_k) Benutzerseite


Lesenswert?

theoretisch geht es, Vpp schalten, in der Praxis nicht wenn ICSP DAT und 
CLK Pegel ausgeben (oder du must die halt stilllegen).

z.B. mit DIL Schalter, brauchst du aber 3 per IC ansonsten must du halt 
sehen ob es auch mit einem Schalter geht (austesten).

von Frank K. (fchk)


Lesenswert?

Was für PICs sind das? Ab PIC24 ist es sehr einfach, weil da der ganze 
High Voltage Krempel wegfällt. Die Umschaltung in den Programmiermodus 
geschieht hier durch das Reintakten eines Codewortes in !MCLR, und das 
läuft alles komplett bei 3.3V/5V ab.

Bei den 8-Bittern ist das naturgemäß etwas komplexer.

fchk

von Peter (Gast)


Lesenswert?

Udo schrieb:
> 15 Stück, das ist doch gar nichts.
> Du wirst länger brauchen um da eine
> Schaltung für zu bauen, als wenn du
> das Kabel umsteckst. Wenn die nur
> einmal programmiert werden sollen,
> dann steck immer um.

Du hast keine Ahnung.

Takao K. schrieb:
> theoretisch geht es, Vpp schalten, in der Praxis nicht wenn ICSP DAT und
> CLK Pegel ausgeben (oder du must die halt stilllegen).
>
> z.B. mit DIL Schalter, brauchst du aber 3 per IC ansonsten must du halt
> sehen ob es auch mit einem Schalter geht (austesten).

Du liegst genauso um 100% daneben



Es ist vom Hersteller vorgesehen, dass PICs in Serie geschaltet geflasht 
werden können. Man lese dazu die div. AppNotes die es von Microchip dazu 
gibt. Lass dich nicht von Leute vollschwätzen die keine Ahnung haben!

von Erich (Gast)


Lesenswert?

Üblicherweise wird der uC auf der Platine / dem Nutzen über 
Federkontaktstifte im ICT programmiert.
http://www.fixtest.de/produkte/federkontakte/
Gruss

von Amateur (Gast)


Lesenswert?

Zwei Mäuseklaviere reichen für 16 PICs

von Nico (Gast)


Lesenswert?

@Peter:
Hast du auch mehr zu bieten, außer dass wir keine Ahung haben und es 
irgendeine Appnote von Microchip geben soll?

von Michael L. (michaelx)


Lesenswert?

Nico schrieb:
> @Peter:
> Hast du auch mehr zu bieten, außer dass wir keine Ahung haben und es
> irgendeine Appnote von Microchip geben soll?

Zustimmung. Das würde mich auch interessieren.

Zu den anderen Vorschlägen:
Die Umschaltung mit Mäuseklavier ist einigermaßen sinnlos. Da geht 
umstecken wahrscheinlich deutlich schneller, und ist weniger 
fehleranfällig.

von Takao K. (takao_k) Benutzerseite


Lesenswert?

Peter schrieb:
> Udo schrieb:
>> 15 Stück, das ist doch gar nichts.
>> Du wirst länger brauchen um da eine
>> Schaltung für zu bauen, als wenn du
>> das Kabel umsteckst. Wenn die nur
>> einmal programmiert werden sollen,
>> dann steck immer um.
>
> Du hast keine Ahnung.
>
> Takao K. schrieb:
>> theoretisch geht es, Vpp schalten, in der Praxis nicht wenn ICSP DAT und
>> CLK Pegel ausgeben (oder du must die halt stilllegen).
>>
>> z.B. mit DIL Schalter, brauchst du aber 3 per IC ansonsten must du halt
>> sehen ob es auch mit einem Schalter geht (austesten).
>
> Du liegst genauso um 100% daneben
>
>

Das ich es schon gemacht habe zaehlt wohl nicht.

>
> Es ist vom Hersteller vorgesehen, dass PICs in Serie geschaltet geflasht
> werden können. Man lese dazu die div. AppNotes die es von Microchip dazu
> gibt. Lass dich nicht von Leute vollschwätzen die keine Ahnung haben!

Aha, in Serie schalten, zeig doch mal die Appnote.

Geht auch ganz besonders gut wenn schon ein Programm drauf ist welches 
die pins als IO verwendet.

von Georg (Gast)


Lesenswert?

Stefan N. schrieb:
> Diese befinden sich auf einem Nutzen und weil ich
> das Programmierkabel nicht immer umstecken will suche ich eine Lösung
> wie ich das vermeiden kann.

Was nützt dir ein Drehschalter, wenn du trotzdem 15 Kabel anschliessen 
musst? Dann kannst du genauso schnell nacheinander umstecken. Eine 
vernünftige Lösung, wenn es sich tatsächlich um grössere Stückzahlen 
handelt, ist ein Nagelbett-Adapter für den Gesamt-Nutzen und ein Relais 
für jeden Prozessor, oder eine Kaskadierung der Programmieranschlüsse, 
wenn das vom Hersteller so vorgesehen ist (JTAG z.B. ist im Prinzip 
kaskadierbar, aber das gilt für den Test und nicht unbedingt für die 
Programmierung). Dann bleibt aber noch das Problem, dass die Leitungen 
dafür durch alle Teilplatinen durchlaufen müssen und erst später 
getrennt werden können.

Am besten kombiniert man das in einem Adapter für Test und 
Programmierung. Immer vorausgesetzt es handelt sich wirklich um 
Stückzahlen und nicht um Grössenwahn.

Georg

von Takao K. (takao_k) Benutzerseite


Lesenswert?

Falls es eine Platine ist, pads machen, und pogo pins aufpressen.

Oder extra Platine um das IC vor dem einloeten zu programmieren (auch 
einfach nur aufpressen).

Drehschalter waere schon sehr ungewoehnlich.

Die appnote wuerde ich schon gern mal sehen wie PICs in Serie 
programmiert werden sollen?

Da ich die ICSP normalerweile nicht opfern moechte, muss ich alle 3 pins 
schalten, nicht nur Vpp.

Wenn ein PIC Versorgungsspannung bekommt, sind alle ports auf tristate. 
Egal ob ein Programm im Flash ist oder nicht. Konfigurationswort ist ja 
noch nicht programmiert, geht der Oszillator auch noch nicht.

von Carsten (Gast)


Lesenswert?

Dann nimm halt einen Bootloader für UART. Wenn du zu wenige Pins hast 
dann nimm die PGx Pins und lass ein Soft UART drauf laufen. Wenn es dir 
ums initiale Programmieren geht - man kann bei Microchipdirekt mit 
custom hex oder Bootloader vorprogrammiert bestellen.

von chris (Gast)


Lesenswert?

Pics parallel programmieren geht problemlos, man braucht nur OC treiber.
Macht jedoch nur bei pic Sinn welche den internen flash lesen können.
Der Grund ist dass es nicht möglich ist den code zurückzulesen bzw calib 
reg zu sichern wie auch interne Seriennummer.
Deshalb macht man die chksum sowie serial Huber speziellem bootloader 
welchen man dann wenn alles OK ist, umbiegt.
In Serie Prog, da gibt es effektiv AN und dank Lvp geht dies effektiv 
sehr gut.

von Somebody123 (Gast)


Lesenswert?

Hallo,

einige PICs haben JTAG.
Falls bei deinem das so ist, könnte man eine Chain verwenden und mit 
einem Programmer alle oder mehrere gleichzeitig programmieren. Dazu muss 
man aber auch mehrere Platinen auf dem Nutzen verbinden - kann ich mir 
gerade schlecht vorstellen. Ob 15 geht bin ich mir außerdem nicht sicher 
(Fanout).

Dann könnte man die PICs vor dem Einlöten programieren. Soweit ich weiß, 
bietet Microchip einen solchen Service an, oder man nutzt ZIF-Sockel 
dazu. Ich würde das so machen, dass nur ein Bootloader programmiert ist 
und die finale Firmware über UART oder wasauchimmer dazukommt.

Eigentlich kenne ich das aber so, dass das Programmieren beim Test der 
Schaltung gemacht wird, üblicherweise am ICT. In dem Fall kontaktiert 
man mit Nadeln die Debug-Testpunkte auf der Platine, im Testadapter 
sollte der ICD2 sitzen.

Oder man nimmt das PICkit3 (nur Kleinstserie), das kann ohne PC 
programmieren (Programmer otg).

von Stefan N. (suckiden)


Lesenswert?

soo, hätte nicht gedacht, dass sich so viele an diesem Thema beteiligen.

Erst einmal ein paar zusätzliche Informationen:
1. Der verwendete Pic ist ein PIC12F683, soweit ich das gesehen habe 
besitzt der µC keine JTAG Schnittstelle
2. Der Nutzen soll auf einem Testadapter programmiert und getestet 
werden, bei der Kontaktierung werden Federkontaktstifte verwendet, hab 
ich wohl vergessen zu erwähnen.
3. Die Stückzahlen sind soweit ich weiß nicht die Massen, jedoch bin ich 
schon sehr oft vor dieser Problematik gestanden und möchte auch aus 
persönlichem Interesse eine Lösung dafür finden.
4. Es sind nicht insgesamt 15 Stk. sondern immer 15 Stk. pro Nutzen.
Meine Fragen:
Warum eignet sich ein Relais mehr als ein Multiplexer, besserer 
Übergangswiderstand?
5 @ chris: was genau meinst du mit OC treiber? und könntest du mir die 
parallele und serielle Methode vielleicht noch einmal genauer 
beschreiben?


Gruß

von trus (Gast)


Lesenswert?

> 4. Es sind nicht insgesamt 15 Stk. sondern immer 15 Stk. pro Nutzen.

Den 12F683 kannst Du nicht parallel programmieren. Da würde ich 
Pogo-Pins nehmen. Der übliche 5-pol Programmier-Adapter geht aber doch 
genauso schnell.

von sepp (Gast)


Lesenswert?

Es gibt z.B. von Softlog oder CCS Programmer für 8Bit Pics, welche 
mehrere Pics auf einmal Flashen können. Habe ich aber noch nie verwendet 
und keine Erfahrung damit.

von trus (Gast)


Lesenswert?

> Es gibt z.B. von Softlog oder CCS Programmer für 8Bit Pics, welche
> mehrere Pics auf einmal Flashen können.

Die haben halt mehrere Programmer in 1 Gehäuse. Die musst Du aber auch 
alle anschliessen.

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Peter schrieb:
> Es ist vom Hersteller vorgesehen, dass PICs in Serie geschaltet geflasht
> werden können.

Zeig mal die App Note, vor allem wie das dann verifiziert wird.

Stefan N. schrieb:
> Der verwendete Pic ist ein PIC12F683,

Spendier ihnen doch eine Art Bootloader mit dem sich die Dinger 
gegenseitig programmieren.

von Georg (Gast)


Lesenswert?

Stefan N. schrieb:
> Warum eignet sich ein Relais mehr als ein Multiplexer, besserer
> Übergangswiderstand?

Bei einem Relais musst du dir keine Gedanken machen über Potentiale, 
Aus- und Ein-Widerstände, Logikpegel, Ströme usw.

Ich verstehe nicht, warum hier jeder so gegen Relais ist, nichts kommt 
dem idealen Schalter näher. Ich baue Testadapter für Halbleiterfabriken 
mit zig bis hundert Relais, das ist absolut professionell und keineswegs 
rückständig.

Das einzige Problem sind die Schaltzeiten, aber das spielt bei der 
vorliegenden Anwendung keine Rolle (ganz bestimmt ist ein Relais 
schneller als ein handbetätigter Drehschalter).

Georg

von Takao K. (takao_k) Benutzerseite


Lesenswert?

12F ist nicht so schwierig zu programmieren, einfach mal das PDF 
anschauen, und z.B. mit einem 16F PIC einen Flash Writer aufbauen.

Und z.B. seriell von einem Master PIC via USB das hexfile laden.

Kompliziert sind PIC Programmer nur weil diese so viele unterschiedliche 
PICs unterstuetzen.

Vpp laesst sich dann recht einfach mit Transistoren zuschalten, und mit 
einen Joulethief erzeugen (brauchts nur 1mA).

Wenn ich es richtig verstehe, sollen immer 15 PICs gleichzeitig 
programmiert werden, also mit 15 Fassungen.

Wenn TE dafuer konkrete Hilfe braucht, ich habe das schon ausprobiert, 
MCLR sauber auf tristate (freigeben), auf GND oder auf Vpp. Mit 2 
Transistoren.
Mit LED, die ist dann entweder aus, an (Versorgungsspannung), funzelt 
nur ein ganz kleines bisschen (auf tristate), oder leuchtet hell (Vpp).
 Brauche jedoch keinen eigenen PIC programmer, also eingemottet.

Vpp wird mit einem kleinem PCB erzeugt, habe ich auch noch blanke PCBs 
herumliegen.

: Bearbeitet durch User
von Jürgen D. (poster)


Lesenswert?

Einfach 15 vorprogrammierte PICKIT3 bei den man den Taster durch ein 
Relaiskontakt ersetzt um alle gleichzeitig zu starten.

von Stefan N. (suckiden)


Lesenswert?

Danke für die Vorschläge,

ich bin mir gerade selber nicht mehr sicher welche Leitungen ich 
standardmäßig an alle PICs anlegen kann und welche sequentiell dazu 
geschaltet werden.

Alle Prints haben einen eigenen Spannungsregler bestückt, also kann ich 
mir Vdd vom ICD schon einmal sparen oder?

Die GND Leitungen zwischen PIC und ICD nehme ich an müssen schon 
miteinander verbunden sein.

PGC kann solange der Pin nicht als Ausgang/Eingang verwendet wird auch 
an allen PICs anliegen.

PGD sollte immer nur an den zu programmierenden PIC anliegen.

Vpp/MCLR müsste eigentlich auch egal sein dann werden eben alle PICs 
zwischenzeitlich immer wieder resetet.

@Takao K. kannst du mir deine vorgeschlagene Methode bitte noch einmal 
genauer erklären, gerne auch per PN.

@Jürgen D. "15 vorprogrammierte PICKIT3" klingt nicht sehr billig und 
bei einer Softwareänderug muss jeder neu programmiert werden.

Gruß

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Stefan N. schrieb:
> ich bin mir gerade selber nicht mehr sicher welche Leitungen ich
> standardmäßig an alle PICs anlegen kann und welche sequentiell dazu
> geschaltet werden

Durch die Mclr Leitung wird erkannt ob der Pic programmiert wird (bei 
der "Hochvolt Technik).

Möglich wäre mittels zweier Rändelradschaltern mit dezimaler Ausgabe

http://www.digikey.de/product-detail/de/301109000/CKN5013-ND/253329

die MCLR Leitung zu multiplexen und die andern Leitungen parallel zu 
halten (notfalls über z.B. 47-100 Ohm Widerstände entkoppeln).

Die anderen Pics können mit einem pulldown Widerstand im reset gehalten 
werden.

Der PicKit kann programmer to go.

Da musst du dann nur noch den Rändelradschalter einen weiter drehen und 
wieder auf den roten Knopf drücken.

von Chris S. (schris)


Angehängte Dateien:

Lesenswert?

Wenn es schnell gehen muss nimm entweder 15 pickit2 lite mit opv sowie 
i2c oder ein 16f877 bzw equivalent.
Ansonsten Bau dir eine MUX carte.
Achtung beim current Relais ist eines eingezeichnet, es braucht aber 
zwei damit man unterbrechungsfrei schalten kann.
Die sind auch recht praktisch wenn man proprietäre Programmer muxen 
muss.
Ansonsten was musst du zusatzlich testen/messen?
OC ist open collector.
CLK kann nur output sein und für alle gleich, wie auch mclr gnd und vcc.
EV könntest du auch einen nutzen nehmen, diesen für die pogo Pins 
verwenden und die mcu programmieren dann die target mcu. Dafür braucht 
es normalerweise nur minimale modificationen.

EV mehr über PN.

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.