Elektronik_Header_3LŘftersteuerung mit ESP-01

 

ICD2 USB

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.

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

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.

 


Besucherzaehler

Besucher seit
25.11.2000

>