PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ISP Eigenbau



ShadowPhoenix
19.10.2005, 02:31
Hallo!

Ich möchte, wenn meine Schaltkreise fertig sind, nicht immer extra jeden Mikrocontroller rausnehmen und in den Programmer stecken müssen.
In meinem System kommen etwa 3-4 AVR's vor.
Ich habe mir das etwa so vorgestellt:

Von jedem AVR werden die 3 erforderlichen Programmier-Pins (Für den Parallelport) mit einem kleinen Relais verbunden.
Dieses verbindet in ausgeschaltetem (kein Strom) Zustand die Pins normal mit dem restlichen Schaltkreis. Werden die Relais beschalten, sind die jeweils 3 Pin's mit dem Parallel-Anschluss verbunden. (Externe Stromversorgung der Relais)

Allerdings, ich möchte Relais verwenden, die direkt vom AVR Port gesteuert werden können (ohne Transistor). Das spart nochmal Platz und ein wenig Geld :O
Da kommt es ja auf den Widerstand der Spule an?
Nehmen wir an, ich nehme ein 5V Relai mit mehr als 200Ohm, dann hätte ich doch nur wenige mA an Verbrauch?
Wieviel schafft ein AVR Port?

MfG,
ShadowPhoenix

PICture
19.10.2005, 03:17
SchadowPhoenix!
Ich arbeite zwar mit PIC`s aber das Prizip ist eigentlich gleich. Ich bin für einfachste Lösungen und habe keine Relais, aber das macht auch kein Unterschied. Ich benutze ein Programmer, also die MC´s hängen bei mir nicht direkt am LPT. Ich habe schon zweite, und möchte die wieder mit besseren ersetzen um Nachteile derzeitigen zu eliminieren. Mein ISP hab ich so gemacht, das ich die MC mit gleichem Kabel sowohl auf Der Entwicklungsplatine, als auch danach im fertigem Gerät, programmieren kann um, nach der Inbetriebnahme Verbesserungen rasch realizieren zu können.
MfG

ShadowPhoenix
19.10.2005, 03:23
Aber macht es auch nichts, wenn während dem Programmieren die 3 Pins auch mit der Restelektronik verbunden sind?

PICture
19.10.2005, 04:26
Das ist eben das wichtigste. Die dürfen während der Programmierung mit der Hardware nicht verbunden werden, deswegen hat mein ISP 9 Pins und der Verbindungskabel zum Programmer nur 5. Ich hab schon sehr viele Projekte gesehen, in denen die für programmierung benötigte Pins des MC´nicht benutzt wurden. Weil ich immer mit echter Hardware meine Schaltungen entwickle, und benutze gern die kleinsten PIC´s (8 Pin), das fur mich sehr wichtig war. Das habe ich mit einem vierfachen Wechsler erledigt und die 9 Pins (die hälfte von 18-pin IC Sockel) sind mir auch nicht zu viel.

frank-findus
19.10.2005, 07:31
Hallo,

nimm doch einfach Jumper, die im Normalfall den AVR mit der Schaltung verbinden und wenn du sie abziehst eben von jener trennen. Mit einem passenden Stecker kannst du dann auch bei abgezogenen Jumpern programmieren ... wo ist das Problem? Dein "Problem" ist evtl., dass es nichts kosten soll, ansonsten gingen natürlich auch Relais, Micro-Drehschalter oder gar Analogschalter-ICs ...

Frank

PICture
19.10.2005, 07:56
Hallo frank-findus!
Nein. Ich habe mit meiner Entwicklung Platine und ISP überhaupt keine Probleme, weil ich das Thema zur Diskusion nicht gestellt habe. Ein Grund, warum ich keine von MC gesteuerte Relais nicht will ist, das die Schalter mit dem Kabel zum Programmer fest ferbunden sind, und werden genauso benutzt, wenn ich den MC auf der Platine mit fertigen Schaltung Programiere. Auserdem jetzt auf der nächster Platine kommen noch 16 Wechsler dazu, also am Ende hätte ich, statt Entwicklungs- Relaisplatine. Und so was brauche ich nicht.
MfG

ShadowPhoenix
19.10.2005, 17:44
Ja, mit Wechslern wollte ich das machen.
(Keine Jumper, weil ich den Kasten nicht immer aufschrauben mag ;) )

Die 3 Pins werden über Wechsler-Relais geschalten.
(Relais nicht beschalten: Standardverkabelung, Relais beschalten: Pins unterbrochen und mit Schnittstelle verbunden)

Ist es denn nun möglich, ein Relais direkt am AVR Port zu schalten?

MfG,
ShadowPhoenix

uwegw
19.10.2005, 17:48
ein reedrelais 5V/500 ohm sollte direkt am AVR funktionieren... nur die freilaufdiode nicht vergessen!

Rage_Empire
19.10.2005, 18:30
Hallo, habe damit auch schon angefangen (hier im Forum unter multiflashing avr). Ich benutze die Resets um den zu progenden AVR auszuwählen (mit Logic). Scheitere aber im Moment eher an der Programmierung.

ShadowPhoenix
19.10.2005, 19:28
Was ist eine Freilaufdiode? Wo muss die hin?

Weiß wer, wo ich diese Reedrelais (Wechsler) mit 5V/500Ohm herbekomme?
Bei Conrad ist sowieso alles viel zu teuer, bei Reichelt fand ich nichts :(

MfG

ragnar
19.10.2005, 23:10
Habe ich das Problem jetzt richtig verstanden:

Ihr wollt auf einer Platine mit mehreren AVRs den ISP nur einmal anstecken ? Und dann, z.B. über einen kleinen Schalter, auswählen welcher AVR gerade programmiert wird ? Und nebenbei sollen die entsprechenden Pins der AVR in der restlichen Schaltung verwendet werden ?

Dann schreit das Problem absolut nach Bustreiber-Bausteinen, wie sie z.B. auch in den einfachen Parallelport Programmieradaptern verwendet werden. Ganz konkret meine ich den 74HCT244, bzw. den 74HCT241.

Der 74HCT241 z.B. hat 2*4 Signale, die je über ein enable-Signal hochohmig geschaltet ('abgesteckt') werden können. Eines der beiden enable-Signale ist invertiert. Damit kann man genau die vier Leitungen des uC (Reset, SCK, MISO, MOSI) zu- bzw abschalten. Die enable-Leitungen hängen jeweils am 'Reset' Ausgang des ISP und werden über den ISP-Auswahlschalter geschaltet. Die anderen Signale (SCK, MISO, MOSI) sind als Bus untereinander und mit dem ISP verbunden.

Wenn der ISP nun programmieren will, zieht er an Reset. Reset wird aktiv und durch den Schalter wird genau ein Bustreiber angesprochen. Dieser trennt dann durch den invertierten Eingang die Peripherie und verbindet durch den nicht invertierten Eingang den ISP mit dem uC. Nach dem Programmieren geht Reset wieder auf low und die Peripherie ist wieder angeschlossen. Die anderen AVRs haben kein 'enable' und sind damit auch vom Programmiervorgang nicht betroffen.

Nachteil des ganzen:
74HCT241 hat 20 pins (und damit 2,5 mal soviel wie ein 8-pin uC)

Vorteil des ganzen:
Wesentlich einfacher, besser, stromsparender, billiger und sicherer als mit Relais.

ciao,
Georg

PICture
20.10.2005, 03:25
Hallo!
Hier ist meine praktisch ausprobierte ICSP. Wenn es jemandem gefällt, soll sich das anwenden. Ich benutze es seit längeren Zeit ohne Probleme.
Kurze Erklärung:
Ich benutze 4 Wechsler, weil mein Programmer ohne Vcc Umschaltung nicht programmiert. Wenn es ohne geht, kann man sich ein Wechsler und zwei pins sparen.
M - Mikrokontrollerpin, der zur Programmierung benötigt wird.
H - Punkt in der Hardware, wo im normalen Betrieb o.g. pin angeschlossen ist.
Diese ICSP kann sowohl in eine Entwicklungsplatine (wo biliebige Hardware angeschlossen werden kann), als auch in eine ferfige Schaltung eingesteckt werden. Nach der letzten Programmierung der fertigen Schaltung müssen die ensprechende M und H pins der ICSP Buchse mit einer einsteckbaren 4-fachen Brücke oder durch löten verbunden werden. Und das ist ein Nachteil dieser Lösung. Wenn man noch ein paar Vorteile findet, dann baut man sich das auf.
Als ICSP Stecker benutze ich die hälfte des 18-pin Steckadapters ( Reichelt AR 18 ) und als ICSP Buchse die hälfte einer 18-pin IC-Fassung ( Reichelt GS 18 ). Die 4-fache Brücke habe ich aus der übrigen hälfte des Steckadapters gemacht.
MfG




Kabel zum Programmer

||||| Brücke
||||| o---o o---o o---o o---o
||||| | | | | | | | |
||||| V V V V V V V V
||||| H M H M H M H M
|||||
|||||---------------------------|
|||| |
||||--------------------| |
||| | |
|||-------------| | |
|| | | |
||------| | | | A Programmieren
o o o o | |
__--o __--o __--o __--o | | (alle Wechsler gleich
o | o | o | o | | | umgeschaltet)
| | | | | | | | | |
| | | | | | | | | V Betrieb
-|---|---|---|---|---|---|---|---|------------------------.
| | | | | | | | | | |
| V V V V V V V V V<----- ICSP Stecker |
| V V V V V V V V V<----- ICSP Buckse |
| | | | | | | | | | |
| | | | | | | | | === |
| H M H M H M H M GND |
| |
| |
| |
| Entwicklungsplatine oder fertige Schaltung |
'----------------------------------------------------------'

(created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)

ShadowPhoenix
20.10.2005, 03:35
Alles sehr interessant, aber ich denke, ich werde das mit einem Logik-Chip lösen. Wie ragnar schon meinte:
"Wesentlich einfacher, besser, stromsparender, billiger und sicherer als mit Relais."

Nun, mein Standard-Extern-Programmierer hat einen SN74HCT244N eingebaut.
Ich muss mir mal das Datenblatt anschauen.
Mit dem ist es also möglich, die angeschlossenen Programmier-Ports mit dem eigentlichen System zu verbinden, und bei Bedarf davon zu trennen und mit der Programmierschnittstelle zu verbinden?

Der Nachteil wegen der Größer des Chips ist kein Problem.
Würdest du mir einen Schaltplan zur Verfügung stellen, falls dies keinen Aufwand bereitet?

MfG,
ShadowPhoenix

Frank
20.10.2005, 08:20
Wenn es nur darum geht die ISP Ports auch in der Schaltung für eigene Zwecke (außer Programmierung) zu verwenden, dann kann man das gewöhnlich ohne Probleme einfach nutzen. Ich verwende in vielen Schaltungen die Ports auch für andere Dinge, dennoch läßt sich das Board mit dem normalen Dongel programmieren. Man sollte nur darauf achten das die Ports nicht dauerhaft von der Schaltung auf Masse gezogen werden. Also wenn man z.B. Led anschließt, dann die Kathode an den ISP Pin.

Board Umschaltung: Kleiner Hinweis, wenn mehrere Boards per ISP Umschalter programmiert werden sollen, dann gibts dafür schon ein Projekt/Platine, siehe https://www.roboternetz.de/phpBB2/viewtopic.php?t=5200

Gruß Frank

ragnar
20.10.2005, 08:39
@Frank: Wenn man nur einen ISP-Anschluss hat und die SPI-pins nur als Ausgänge genutzt werden dann geht das natürlich. Dann einfach die restliche Schaltung über drei Widerstände abkoppeln, damit die von den Programmierimpulsen nicht gestört wird.

Hier sollen aber mehrere uCs programmiert werden(über eine ISP Buchse) und da bietet es sich an, die freien Treiber des 74241 auch gleich zu nutzen. Alternativ kann man an einen 74244 sogar zwei uCs dranhängen oder nur einen 74125 verwenden.

Das mit dem Umschalter klappt natürlich auch.

Georg

SprinterSB
20.10.2005, 14:41
Alternativ kann ein Analogschalter zum Einsatz kommen, wie MC14451: 4 x 2-Kanal analog Multiplexer/Demultiplexer, in PDIP-16 oder SOIC-16. Gibts bei ON-Semi (onsemi.com), SGS-Thomson, Datenblatt bei alldatasheets.com.
Analog (De)multiplexer hat's auch beim Reichelt (MOS4551, MOS 405x), die bei mehreren µC vielleicht noch mehr Platz sparen.

ShadowPhoenix
21.10.2005, 03:56
Also, ich möchte zwischen 3 AVR's umschalten, und dabei einen Programmier-Anschluss verwenden.

Welchen Chip soll ich da nehmen? Ein Schaltplan wäre auch super, habe ein wenig Probleme mit Datenblättern :/

PICture
21.10.2005, 06:02
Hallo ShadowPhoenix!
An Dein Problem bin ich selber gestoßen. Ich habe noch keine konkrete Lösung Ausgewählt. Warscheinlich warte ich ab, bis die Diskussion zu Ende ist. Ich programmire zwar PIC´s aber in dem fall mit den AVR ist es daselbe. Ganz allgemein (damit Du sich auch gedanken daruber machst).
Das hat nichts mit ICSP zu tun. ICSP bleibt für alle Prozessoren gleich.
Umschalten muß man praktish alle Pins die an Programmer und alle Pins die an Hardware, an die mehr als ein MC angeshlossen werden kann, umschalten. Ich stelle mir das so vor, das ich für jeden Prozessor einen mehrkontaktigen Schalter (mechanisch oder elektronisch) der mir die benötigen I/O pins mit Hardware und Programmer verbindet. Die Schalter sind so gesteuert, dass momentan nur einer MC mit der Hardware/Programmer verbunden ist. Für mich ist immer die eifachste Lösung die beste. Zur Zeit tendiere ich zu von @SBSprinter genannten analog Schalter. Die alle andere o.g. Bustreiber, Multi- und Demultiplexer können nicht verwendet werden, weil sowohl während der Programmierung als auch im Betrieb, die Daten an allen o.g. Pins in beiden Richtungen fliessen. Wenn ich mich entgültig entscheide, werde ich sicher, so wie für ICSP, ein komplettes, geprüftes Schaltplan hier vorstellen.
MfG

PICture
21.10.2005, 08:37
@SchadowPhoenix!
Noch ein kleiner Nachtrag zum meinem letzten Beitrag. Ich habe das Problem diesmal schon genauer analiesiert und sehe ich so:
Um 28,18,16 und 8-pin MC´s auf der Enwicklungsplatine umzuschalten brauche ich 60 Schliesser bzw. 15x4-fachen IC Schalter. Weil ich während der Entwicklung (leider) mehrere Tage mit einem MC zu tun habe, bevor ich mit einem anderen MC die nächste Enwicklung anfange, die Umschaltung finde ich nicht nötig. Mein Ziel habe ich mit derzeitiger Platine (wo ich einen MC aus einem Sockel heraus nehme und den anderen in ein Sockel reinstecke) eigentlich schon erreicht, und eine Platine, an der mehr Umschalter, als MC´s sind brauche ich nicht. Bei konkreten Problemen mit Datasheets würde ich Dir aber gerne helfen.
MfG

PICture
26.10.2005, 00:10
Hallo!
Ich habe festgestellt, dass ich beim Programm schreiben sehr oft die Wechsler umschalten muß. Weil ich sowieso Betriebspannung des MCs vor dem Programmieren abschalte, werde ich jetzt die Schalter durch zwei doppelte Wechslerrelais ersetzen. Das wird auch die kleine ICSP Platine mit den Wechsler und den ICSP Anschluss schonen, weil sie nicht mehr betätigt werden. Die Relaisspulen werden an das Netzteil angeschlossen, von dem sie Entwicklungsplatine mit Betriebspannung versorgt ist. So wird es automatisch mit der Abschaltung des Betriebspannungs auf Programmieren umgeschaltet.
MfG

ShadowPhoenix
26.10.2005, 00:47
Also ich hab mir das so vorgestellt:

http://wmaxx.xardas.lima-city.de/isp.bmp


Die Pfeile gehen zur üblichen Hardware. Wenn switch, dann kann programmiert werden.




Über 3 Schalter wird der jeweilige AVR ausgewählt.
Die Schalter sollten 2xEIN , also jeweils 2 getrennte Schalter sein.
(Insgesamt 4 Kontakte):

http://wmaxx.xardas.lima-city.de/sw.bmp

(Punktlinie stellt die mögliche getrennte Verbindung dar, wenn Schalter gekippt..)

Wenn der Schalter gekippt wird, bekommt ein AVR Strom und das Relais wird geschalten, was die Pins von der Hardware trennt und mit dem Programmierport verbindet.

Warum 2 getrennte Schalter in einem verwenden?
Damit, wenn nicht programmiert wird, die AVR Betriebsspannung nicht die Relais schaltet ;)

(Sry die Bilder sind verschwunden, kA warum...)

PICture
26.10.2005, 00:58
Hallo SchadowPhoenix!
Das obere ist richtig, wenn Du die Betriebspanung von AVR beim Programmieren nicht abschalten musst. Wegen der unteren Lösung, muß ich Dich fragen, weil ich Deine Erklärung (glaube ich) nicht ganz oder falsch verstehe. Ist jeder von den 3 MVR´s auf anderer Enwicklungsplatine oder was?
Und so wird mein ICSP mit Relais sein:
MfG
P.S. Inzwischen habe ich meine Enwicklungsplatine schon umgebaut und ausprobiert. Es funktioniert.



v o m P r o g r a m m e r

GND PGC PGD VPP VCC
V V V V V
| | | | |
| | | | |
.-----------|---|-------|-------|-------|------.
| +----+---|---|-------|-------|-------|---+ |
Programm | | | | | | | | | |
A | _|_ _|_ | o o o o | |
| ||_/_||_/_| | __--o __--o __--o __--o |
| | | | | o | o | o | o | |
V | | | | | | | | | | | | |
Betrieb | +----+---+ | | | | | | | | |
| ICSP | | | | | | | | | |
| Platine | | | | | | | | | |
'-----------|---|---|---|---|---|---|---|---|--'
VCC .-----------V---V---V---V---V---V---V---V---V--.
+ | V V V V V V V V V |
| _/ | 1| 2| 3| 4| 5| 6| 7| 8| 9| |
+-o/ o--------------|---|---|---|---|---|---|---|---+ |
| | | | | | | | | | |
+--------------------+ | | | | | | | | |
| | | | | | | | | | | |
=== | M&H H M H M H M H M |
GND | GND PGC PGD VPP VCC VCC |
| |
Netzteil | Entwicklungsplatine oder fertige Schaltung |
'----------------------------------------------'

+---+ +---+ +---+ +---+
ICSP Brücke | | | | | | | | |
V V V V V V V V V
1 2 3 4 5 6 7 8 9

ShadowPhoenix
26.10.2005, 02:44
Der AVR braucht doch eine Versorgungsspannung, wenn programmiert wird?!
Die Versorgungsspannung für den Programmiervorgang wird entweder von einem Akku oder Ext. IN genommen.

Du hast es nicht ganz verstanden? Ich versuche, es nochmals zu erklären:
(In meinem Falle)


Das ganze System arbeitet mit 3 AVR's. Die Versorgungsspannung kommt von einem Akku oder Ext. IN.
Weiters gibt es einen Schalter zum einschalten der Programmierplatine. Auf dieser sitzen dann insgesamt 9 Relais, pro AVR 3 Leitungen.

Wenn man nun Schalter1 kippt, schalten 3 Relais für die Programmierleitungen von AVR1 um. Gleichzeitig bekommt dieser eine AVR eine Versorgungsspannung von der Programmierplatine.

(Man kann die Programmierplatine einschalten, ohne dass das gesamte System läuft)

ShadowPhoenix
26.10.2005, 17:23
Achja, ich habe einen Denkfehler entdeckt.

Das Programmieren funktioniert auch, wenn das komplette System eingeschaltet ist, also alle AVR's Versorgung haben.
Dann werden einfach per Schalter 3 Pins umgeschaltet, mit Laptop verbunden und programmiert. Dann einfach wieder umschalten, und die Pins sind wieder mit der üblichen Hardware verbunden.

PICture
26.10.2005, 19:20
Na ja jetzt verstehe ich Dein Problem. Mein ist schlimmer. Ich möchte auf einer Entwicklungsplatine mind. 3 Typen (PIC) eigesteckt haben und diese nicht nur an Programmer, aber auch nach gleiche Software die an die Platine angeschlossen ist, umschalten. Muss ich aber probieren, ob wenn ich jetzt zwei einstecke und nur einer mit Spannung versorge, der dann läuft oder wird von dem anderen gestört.
MfG

PICture
27.10.2005, 17:35
Hallo!
Ich möchte nur noch sagen (bitte, nicht als Selbstlob nehmen), dass ich mit der o.g. Lösung in der Praxis sehr zufrieden bin. Während der Entwicklung brauche ich jetzt bloß das Netzteil ausschalten, PIC programmieren und wieder das Netzteil einschalten. Dann läuft schon mein geändertes Programm (wenn ich kein Fehler programmiert habe). :)

Inzwischen hat sich auch gezeigt, dass die Umschaltung von Vcc (+5V) ermöglichst auch problemloses "Brennen" von PICs die z.B. mit nur 2V Versorgungsspannung arbeiten.

Zuletzt habe ich den Stecker mit der Buchse getauscht um übliche Jumper auf der Platine mit fertiger Schaltung verwenden zu können.

MFG