Get Adobe Flash player

ICD2 USB

User Rating:  / 0
PoorBest 

Link Articolo Originale: 

http://www.harald-sattler.de/html/body_icd2_usb.htm

 

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 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.

ICD2 USB nach Lothar Stolz. Click für volle Auflösung...

Durch Click auf das Bild wird die Schaltung in voller Auflösung (lesbar) dargestellt ;-)

 

ICD2 USB nach Lothar Stolz. Click für volle Auflösung...

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 normaler Weise 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:

ICD2_USB Bestückseite

Gegenüber dem Layout sind folgende “Zusatzverdrahtungen” eingebaut:

  • Die Platine war ein paar Millimeter zu kurz, weshalb ich die Masseleitung am rechten Rand durch zwei Drahtbrücken ersetzt habe.
  • Im Bereich unterhalb des Operationsverstärkers musste ich durch eigene Schusseligkeit die Versorgung des IC neu verlegen (der rote Draht). 
    Um am Ausgang 13 V Programmierspannung für den Target-PIC erreichen zu können, muss der Operationsverstärker natürlich mit der 15 V Betriebsspannung aus dem Step-Up-Wandler versorgt werden, nicht mit 5 V, wie der Rest der Schaltung.
    Im Layout V1.1 ist diese Änderung enthalten, die gezeigte Platine wurde noch nach V1.0-Design erstellt.

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:

    • von der FTDI-Seite muss der Treiber für das eigene Betriebssystem geladen werden (in meinem Fall Windows XP)

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.

    • alle Dateien aus dem ZIP-File in ein Verzeichnis entpacken
    • den ICD2 mit einem USB-A-B-Kabel an den Rechner anschließen und warten, bis der FT232BM per Plug&Play erkannt wurde
    • bei der Frage nach den Orten, wo der passende Treiber gesucht werden soll, das Verzeichnis angeben, wohin die Treiberdateien entpackt wurden
    • Windows wird jetzt den USB-Seriell-Converter installieren
    • als nächstes wird der Treiber für den neuen USB-Seriell-Port installiert, hier genauso verfahren
    • über den Eigenschaften-Dialog des USB-Seriell-Ports unter “Port settings”->”Advanced” den zu emulierenden COM-Port auswählen
       

    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.

      • ebenfalls im Eigenschaften-Dialog des USB-Seriell-Port-Treibers wird die Baudrate und das Handshake- Protokoll eingestellt (z.B. 57600 und Xon / Xoff, 8N1). Die tatsächlich verwendetet Baudrate wird anschließend in MPLAB eingestellt (“Programmer->Settings...”, dort dann im Tab “Communication”). 
        MPLAB meldet bei 57600 Baud, dass das wahrscheinlich zu schnell ist und nicht unterstützt wird. 19200 Baud funktionieren.
      • hier nicht auf USB stellen (denn unser ICD2 wird über eine simulierte Serielle Schnittstelle angesprochen) sondern den COM-Port auswählen, der im Treiber-Dialog des FT232BM eingestellt wurde. 
        Bitte auch den Hinweis dazu weiter oben beachten, und den entsprechenden COM-Port ggf. mit einem Ascii-Editor einstellen. MPLAB muss dazu geschlossen sein und anschließend wieder neu geladen werden.
      • als nächstes kann über “Programmer->Connect” die Verbindung zum ICD2 aufgebaut werden
      • jetzt über “Configure->Select device...” das Ziel-Device auswählen. Das ist der PIC, der programmiert oder entwanzt werden soll.
      • MPLAB wird sich wahrscheinlich darüber beschweren, dass das falsche oder gar kein Operating System installiert ist und anbieten, das passende OS zu laden. Wir nehmen dankbar an :-)
      • ab jetzt muss die Zielhardware angeschlossen sein und es darf entwanzt oder programmiert 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.

      Eagle3D - USB_ICD2_top
      Eagle3D - USB_ICD2_bottom

      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.

      Login Form

      Elettronica Open Source