Microchip hat in den letzten Jahren seit Veröffentlichung des ICD allerhand neue Chips auf den Markt gebracht, die allesamt eine große Gemeinsamkeit haben: sie lassen sich nicht mit dem ICD laden und debuggen.
Natürlich gibt es von Microchip einen neuen InCicuit Debugger, der diese Chiptypen kennt. Er heißt ICD2 und wird über USB an den Rechner angeschlossen. Um also PICs der neueren Generationen in Betrieb setzen und entwanzen zu können, muss ein ICD2 her. Natürlich soll es eine Nachbaulösung sein, denn das Original ist mir für meine sporadischen Aktivitäten mit PICs zu teuer.
Im Netz sind zu diesem Thema inzwischen viele Fundstellen (vor allem in verschiedenen Foren) vorhanden, wenn man sich aber intensiv mit dem Thema befasst, merkt man schnell, dass lediglich zwei oder drei Designs existieren, auf die sich alle anderen Threads beziehen.
Als besonders einfach und nachbausicher hat sich die Version von Lothar Stolz gezeigt. Die meisten Teile für seine Version des ICD2 finden sich in der Bastelkiste, die Schaltung selbst lässt sich mal eben auf die Schnelle auf einer Lochrasterplatine aufbauen. Diese Einfachheit bringt natürlich Abstriche im Bedienkomfort mit sich. Einzelheiten kann jeder auf den Seiten von Lothar (Stand 06/2019: site down) nachlesen.
Mich selbst hat seine zweite Version des ICD2 angesprochen. Diese Version hat wie das Original einen USB-Anschluss, ist aber in Wahrheit “nur” eine serielle Version, die mittels eines USB-Serial-Converters von FTDI am USB betrieben werden kann. Folgerichtig muss man in MPLAB dann auch eine serielle Kopplung zwischen Rechner und ICD2 auswählen. Aber davon später mehr.
Der Vorteil des USB: der ICD2 braucht keine getrennte Stromversorgung, die Verkabelung fällt also deutlich übersichtlicher aus.
Das Design von Lothar ist in SMD ausgeführt, was mir nicht so behagt hat. Ich dachte, durch Einsatz von bedrahteten Bauteilen habe ich mehr Platz für Leitungen auf der Platine, so dass die restlichen 6 Luftlinien, respektive Drahtbrücken, auch noch verschwinden können.
Dieser theoretische Ansatz hat sich in der Praxis dann allerdings doch als nicht ganz zutreffend heraus gestellt. Die Zuordnung zwischen Pins am PIC und Programm sind so gewählt, dass kurze Verbindungen zwischen SMD-Versionen von PIC und USB-Controller sowie der restlichen Peripherie heraus kommen. Da der von Lothar verwendtete USB-Controller FT232BM aber nur als SMD-Variante geliefert wird und die DIL-Variante des PIC 16F876 sozusagen “verdreht” auf der Oberseite der Platine sitzt, ergeben sich gegenüber dem Lothar´schen Design zusätzliche Leitungskreuzungen, die auf dem einseitigen Layout doch wieder einige Brücken notwendig machten.
Meine Version von Schaltbild und Layout ist in EAGLE erstellt.
Durch Click auf das Bild wird die Schaltung in voller Auflösung (lesbar) dargestellt ;-)
Durch Click auf das Bild wird das Layout in voller Auflösung dargestellt ;-)
Die Unterlagen lassen sich natürlich auch als EAGLE-Dateien laden.
(Hinweis
: In der ZIP-Datei ist das aktuelle Design enthalten, wie hier beschrieben. Auf dem Layout ist als Text auf der Kupferseite leider noch “V1.0” angegeben, diese Angabe
ist falsch, die Leiterbahnen sind korrekt nach dem Schaltplan V1.1 verlegt. Danke für den Hinweis Leo!)
Im Layout ist unterhalb des eigentlichen Platinenbereiches ein Polygon abgelegt, das normalerweise an den Rändern der Platine platziert ist. Wird vor dem Ausdrucken “Ratsnest” ausgeführt, werden durch dieses Polygon alle freien Flächen auf der Unterseite der Platine mit Kupferflächen belegt. Auf diese Weise muss im Ätzbad nur ein Bruchteil der Kupfermenge weg geätzt werden, was die mögliche Platinenfläche pro gegebener Menge Ätzflüssigkeit stark erhöht. Dieses Polygon ist hier im Bild nicht sichtbar.
Um die Belegung der freien Flächen mit Kupfer durchzuführen, muss das Polygon zuerst wieder um die Platine herum platziert werden. Danke an Rudolf für diesen Hinweis.
In Natur sieht das Teil momentan so aus:
Gegenüber dem Layout sind folgende “Zusatzverdrahtungen” eingebaut:
Um den SMD-Chip sauber auflöten zu können, sind neben einem SMD-Lötkolben (Spitze maximal 0,7 mm Durchmesser) eine ruhige Hand und SMD-Lötzinn notwendig. Es ist in meinen Augen auch kein Zeichen von Schwäche, wenn man eine Lupe bei den Arbeiten verwendet (vorzugsweise so eine schöne große Schreibtischlupe mit eingebauter Ringleuchte :-)
Ich habe darauf geachtet, dass alle Bauteile bei Reichelt erhältlich sind, weshalb ich z.B. den von Lothar als Taktgeber für den FT232BM verwendeten Keramikresonator durch einen entsprechenden Quarz mit Kondensatoren ersetzt habe.
Eine weitere Änderung meinerseits: Der Programmierstecker zum Target hat die gleiche Belegung wie der Stecker am alten ICD. So kann ich meine vorhandenen Adapterkabel und Demoboards weiter verwenden.
In diesem Zusammenhang noch ein Hinweis:
Der von mir erwähnte Programmierstecker auf dem alten ICD ist wenig hilfreich
beschrieben (wie mir Jörg dankenswerter Weise mitteilte). Man müsste schon im Schaltbild des Demoboards nachschauen, wohin die entsprechenden Steckverbindungen
am Target-PIC führen, wozu aber unabdingbar EAGLE bemüht werden müsste (weil ich das Schaltbild des Demoboards nicht als Bild zur Verfügung gestellt habe).
Deshalb hier zumindest diesen wichtigen Ausschnitt aus dem Demoboard-Schaltbild.
Die Liste der notwendigen Bauteile kann sich jeder selbst leicht durch Aufruf des ULP “bom.ulp” in EAGLE erstellen.
Für den geneigten Nachbauer hier zur Übersicht die Bestellnummern und Preise von Reichelt Stand 05/2005.
Menge Wert Device Bauteile Bestellnummer Preis
Reichelt in Euro
2 LED LED3MM LED1, LED2 LED 3MM 2MA RT 0,09
1 Steckverbinder MA06-1 SV1 SL 1X36G 2,54 0,17
1 Step-Up-Wandler NME DC1 SIM1-0515 SIL4 4,95
1 USB-B-Buchse PN61729 X1 USB BW 0,24
2 1k R-EU_0207/10 R22, R23 METALL 1,00K 0,08
1 1k5 R-EU_0207/10 R3 METALL 1,50K 0,08
1 2k2 R-EU_0207/10 R14 METALL 2,20K 0,08
5 4k7 R-EU_0207/10 R10, R12, R16, R17, R18 METALL 4,70K 0,40
1 4u7 CPOL-EUE2.5-5 C9 RAD 4,7/63 0,04
1 6MHz XTAL/S Q2 6-HC49U-S 0,49
2 6k8 R-EU_0207/10 R13, R19 METALL 6,80K 0,40
1 10uF CPOL-EUE2.5-5 C7 RAD 10/35 0,04
1 15uH L-EU0207/12 L1 SMCC 15µ 0,19
1 20MHz XTAL/S Q1 20-HC49U-S 0,44
2 22p C-EU025-025X050 C1, C2 KERKO 22P 0,04
2 27R R-EU_0207/10 R1, R2 METALL 27,0 0,16
2 27p C-EU025-025X050 C11, C12 KERKO 27P 0,04
1 33n C-EU025-025X050 C4 X7R-2,5 33N 0,09
1 56R R-EU_0207/10 R7 METALL 56,0 0,16
2 100k R-EU_0207/10 R6, R15 METALL 100K 0,16
1 100k R-TRIMM3006P P1 962-20 100K 0,43
6 100n C-EU025-025X050 C3, C5, C6, C8, C10, C13 X7R-2,5 100N 0,72
3 330R R-EU_0207/10 R8, R9, R11 METALL 330 0,24
1 470R R-EU_0207/10 R4 METALL 470 0,08
1 BC547B BC547B T1 BC 547B 0,03
1 FT232BM FT232BM IC1 FT 232 BM 6,35
1 LM358N LM358N IC3 LM 358 DIP 0,09
1 PIC16F876P PIC16F872P IC2 PIC 16F876-20SP 6,25
1 Sockel für IC2 GS 28P-S 0,33
1 Sockel für IC3 GS 8P 0,09
Summe 22,95
Wenn die Schaltung soweit aufgebaut und kontrolliert ist (nach Spannung anlegen keine Rauchzeichen usw., als alter Bastler kennt man das ja ;-) muss der PIC16F876 noch mit dem original Bootloader geladen werden, damit er von MPLAB erkannt wird. Das habe ich mit dem TOPIC2icsp von David Tait gemacht, jeder andere, einfache oder komplizierte, PIC-Programmer ist ebenfalls geeignet.
Achtung!
Der auf der TOPIC2icsp-Seite beschriebene “...ISP-Stecker J1 auf dem ICD...” bezieht sich auf das ICD(1)-Design und ist auf dem ICD2 nicht vorhanden. Diesen Satz also im Geiste streichen.
Der Bootloader liegt im Verzeichnis “C:\Programme\Microchip\MPLAB IDE\ICD2” und ist in der Datei “BL010101.hex” enthalten, soweit man die Standard-Einstellungen bei der Installation von MPLAB beibehalten hat.
Eine kleine Einführung, was getan werden muss, um den ICD2 nach obigem Vorschlag in MPLAB einzubinden, sei hier auch noch gegeben:
Nachtrag
Bitte beachten, dass Treiber für den FT232BM mit Versionsnummern größer
“2154” lt. Mitteilung mehrerer Nachbauer nicht mehr funktionieren. Bei FTDI (Link oben) gibt es diese Version nur noch für 64-Bit Windows Versionen (Stand 03/2006), weshalb ich den passenden Treiber in Version 2154 zum Download anbiete, bis FTDI eine korrigierte Version anbietet.
Hinweis dazu
MPLAB unterstützt von Hause aus nur COM1 oder COM2, vom Treiber des FT232BM werden einige mehr angeboten, die aber nicht funktionieren, wenn man sie in MPLAB selektiert (obwohl sie auch hier aufgelistet werden).
Im EDA-Board-Forum wird von crazyduck ein Workaround für diese Einschränkung beschrieben:
Einfach in der Datei ICD2.INI den ComPort auf die Nummer einstellen, die im Treiber-Dialog unter “Advanced” eingestellt wurde.
Damit funktioniert die Kommunikation zum ICD2 auch auf anderen
Portnummern. Allerdings dürfen die Kommunikationseinstellungen danach nicht mehr über die MPLAB-Oberfläche eingestellt werden. Alle anderen Eigenschaften
unter “Programmer->Settings...” von MPLAB dürfen weiterhin normal gehandhabt werden.
Diese kleine Einführung erhebt keinen Anspruch auf Vollständigkeit. Wichtige Zwischenschritte können (aus Versehen) ausgelassen worden sein. Bitte bei der Inbetriebnahme immer den gesunden Menschenverstand einschalten und genau überlegen, ob der nächste Schritt so sinnvoll und gefahrlos möglich ist. Danke!
Ebenfalls interessant dürfte der Vorgang zur Einstellung der Programmierspannung sein.
Wenn die Schaltung komplett aufgebaut ist, wird die Programmierspannung nur noch dann aktiviert, wenn per IDE ein Programmiervorgang durchgeführt wird. Um die
Programmierspannung einmalig auf den korrekten Wert einzustellen ist dieses Verfahren aber eher ungeeignet.
Besser ist dieses Vorgehen:
Der PIC 16F876 wird entfernt und Pin 13 (RC2) am Sockel des PIC wird von Hand auf 5V
und Pin 11 (RC0) auf Masse gelegt. Dadurch wird die Programmierspannung am Ausgang des Operationsverstärkers eingeschaltet und kann in Ruhe - und ohne irgend
einen PIC zu gefährden - mit dem Digitalmultimeter nachgemessen und am Poti eingestellt werden.
Nachtrag
Wer Probleme hat, die von mir verwendete Version des FT232BM zu besorgen, kann
alternativ die neue Version des Bausteins FT232BL einsetzen, die RoHS-konform bleifrei gefertigt ist.
Tipp
Wird ein PIC 16F876A für den ICD2 verwendet, muss eine andere Firmware eingesetzt
werden. Der A-Typ verwendet einen anderen Algorithmus um Daten ins interne Flash zu speichern, weshalb die bei MPLAB mitgelieferte Version der Firmware hier nicht
funktioniert. Im Netz kursiert eine passende Version der Firmware für den A-Typ.
Im mikrocontroller.net-Forum gibt´s einen Link zum Download. Hier der entsprechende Thread. Dort nach “ICD661.HEX” suchen.
Schmankerl
Ich bin bereits des Öfteren im Netz über gerenderte Bilder von EAGLE-Layouts gestolpert
und war jedes Mal begeistert, bin aber auch davor zurück geschreckt, es selbst mal auszuprobieren. Bis vor einigen Tagen...
Ich habe gerade ein neues Projekt gestartet, zu dem ich eine Platine entworfen habe, die aber noch nicht geliefert wurde. Ich wollte trotzdem einen optischen Eindruck der Schaltung erhalten und bin wieder bei Eagle3D hängen geblieben. Diesmal habe ich mich erfolgreich durchgekämpft und im Anschluss sofort auch noch Ansichten des ICD2 erzeugt.
Verblüffend ;-)
Die aktuelle Version von Eagle3D (V1.05, Stand 10/2008) arbeitet übrigens auch mit Eagle V5.0 zusammen. Das passende ULP ist “3d41.ulp”.
Ich möchte nochmals ausdrücklich darauf hinweisen, dass das oben von mir beschriebene Design ausschließlich nach den Ideen und anhand des Schaltbildes von Lothar Stolz entstanden ist, dem ich hiermit meinen Dank und meine Anerkennung für das gelungene Design ausspreche.
Den nachfolgenden Satz muss ich hier so oder ähnlich auch noch loswerden:
Der Nachbau der Schaltungen anhand der Pläne auf meiner Homepage sowie der Betrieb der Schaltungen erfolgt auf eigene Gefahr. Eine Haftung seitens Microchip oder mir (oder Lothar Stolz) für die ordnungsgemäße Funktion der nachgebauten Schaltungen ist ausgeschlossen.