Zur Druckansicht wechseln Visit the English version of this page

www.jb-electronics.de » Elektronik » Digitaltechnik » PICkit3 und die ICSP-Schnittstelle

PICkit3 und die ICSP-Schnittstelle

Wie schon im Einführungsartikel zu PIC-Controllern erwähnt, wird ein Gerät zum Übertragen des Maschinencodes in den Flash-Speicher des Controllers benötigt. Ich entschied mich nach einiger Zeit dazu, das PICkit3 zu erwerben:

Das PICkit3 von MicroChip

Es ist sehr klein und handlich, und im ersten Moment fragt mensch sich sicherlich: Wie sollen denn damit Mikrocontroller programmiert werden? Es sind ja gar keine Programmiersockel zu sehen.

Das Zauberwort ICSP

ICSP steht für In Circuit Serial Programming. Die Idee ist, dass PIC-Mikrocontroller alle über das prinzipiell gleiche serielle Protokoll geflasht werden können. Dazu werden die Leitungen DATA, CLOCK und MCLR (Master Clear) benötigt, zudem noch die Betriebsspannung und Masse. Manchmal tritt auch noch eine weitere Leitung namens LVP auf.

Die Leitungen liegen so an der Hohlbuchsenleiste des PICkit3 an:

Die Anschlussbelegung des PICkit3

Wie genau das ICSP-Protokoll funktioniert will und kann ich hier nicht erklären, es soll vielmehr darum gehen, wie ICSP benutzt werden kann, um sich selbst Arbeit zu ersparen.

Das Einbinden des PICkit3 in die MPLAB IDE

Das PICkit3 wird mit einem USB-Kabel mit dem Computer verbunden. Eventuell muss enmalig noch ein Treiber von der mitgelieferten CD installiert werden. Wenn dann MPLAB gestartet wird, kann PICkit3 unter ProgrammerSelect ProgrammerPICkit3 einfach angewählt werden. Es erscheint dann eine Meldung, ob sich das PICkit3 erfolgreich verbunden hat.

Betriebsspannung

Das PICkit3 benötigt keine eigene Betriebsspannung, es versorgt sich über den USB-Port mit Strom.

Wenn ein Controller in der Zielschaltung geflasht werden soll, dann fragt mensch sich: Was ist mit der Betriebsspannung der Zielschaltung? Darf die eingeschaltet bleiben? Ja, das darf sie, das PICkit3 kann einen Controller in der Schaltung programmieren, wenn diese mit Strom versorgt wird. Aber da dann die Peripherie der Zielschaltung meistens auch noch versorgt ist, können während des Flashens unliebsame Effekte auftreten.

Daher bietet das PICkit3 die Funktion, die Betriebsspannung während des Flashens selber zur Verfügung zu stellen. Diese Option muss unter ProgrammerSettings...Power eingestellt werden. Die Versorgungsspannung der Zielschaltung muss dann aber während des Flashvorgangs ausgeschaltet bleiben.

Nach dem Kompilieren des Programmcodes kann nun das Hex-File bequem aus MPLAB zum PIC übertragen werden.

Richtiges ICSP

Das Gute am ICSP ist ja eben, dass kein Programmiersockel benötigt wird. Der Controller kann direkt in der Schaltung programmiert werden. Verbunden werden müssen dazu alle Pins außer LVP. LVP steht für Low Voltage Programming, also das Programmieren mit einer Spannung von 5V. Die zum Flashen erforderliche höhere Spannung wird dann auf Kosten eines IO-Pins intern im PIC erzeugt. Es lohnt sich daher für den Hobbybastler überhaupt nicht: Mensch hat einen IO-Port weniger, aber das Flashen dauert genau so lange. Daher werde ich hier nicht weiter darauf eingehen.

Es bleiben aber noch genug Leitungen zum Verbinden übrig. VSS wird klarerweise einfach mit der Digitalmasse im Zielschaltkreis verbunden, genau so wird VDD mit der Versorgungsleitung des Controllers in der Zielschaltung verbunden. Aber was ist mit den restlichen Leitungen?

MCLR muss in der Zielschaltung mit einem 4.7kΩ..10kΩ Pullup-Widerstand nach VDD gezogen werden, damit die Leitung auf GND gezogen werden kann, ohne einen Kurzschluss zu verursachen. Zudem darf MCLR in der Zielschaltung nicht mit einem größeren Elko o.Ä. verbunden sein, da dann ein schnelles und sauberes Flashen wegen der Tiefpasswirkung des Kondensators verhindert wird.

PGC und PGD: Zu vermeiden sind hier Pullup-Widerstände, da das PICkit3 intern 4.7kΩ Pulldown-Widerstrände benutzt: die Pegel wären dann wegen des Spannungsteilers nicht mehr klar definiert. Auch hier sind Kondensatoren nicht erlaubt, da sie schnelle Signalfolgen verhindern. Zudem sollten keine Dioden verwendet werden, die die Unidirektionalität der ICSP-Verbindung zur Folge hätten: Die ICSP-Verbindung ist bidirektional, geflashte Daten werden zur Kontrolle auch zurückgelesen.

Sonstiges: MicroChip merkt an, dass allzu große Kondensatoren (> 100μF) in der Zielschaltung dazu führen könnten, dass das PICkit3 sehr lange braucht, um die erforderlichen Spannungen aufzubauen, wenn es die Schaltung beim Programmieren versorgt.

Programmiersockel für das ICSP selber bauen

Das hört sich schwierig an, ist es aber nicht, es ist nur ein wenig gegen den Sinn von ICSP. Denn eigentlich soll ICSP ja gerade ermöglichen, den Controller nicht aus der Zielschaltung entfernen zu müssen.

Manchmal kann es aber trotzdem notwendig sein, einen Programmieradapter zu verwenden, beispielsweise, wenn aus hardwaretechnischen Gründen kein ICSP möglich ist, aber kein anderer Programmer zur Verfügung steht.

Bei diesem Programmieradapter wird nur eine sechspolige Stiftleiste, eine Fassung für den jeweiligen Controller, und der 4.7kΩ-Pullup von MCLR nach VDD benötigt, hier der Schaltplan für 18-polige PIC-Controller:

Ein ICSP-Adapter für 18-polige PIC-Controller

Bitte beachten Sie, dass im Schaltplan der Pin mit dem Dreieck der Pin Nr. 1 ist; im obigen Foto des PICkit3 ist der Pin mit dem weißen Dreieck der Pin Nr. 1. Die beiden Bilder sind zueinander spiegelverkehrt, was sich aufgrund der Übersichtlichkeit im Schaltplan des Adapters leider nicht vermeiden ließ.

Die pinke Leitung kann weggelassen werden, da sie nur vom LVP-Modus genutzt wird, mit dem wir uns hier aber nicht befassen.

Aufgebaut sieht so ein Adapter so aus:

Ein aufgebauter ICSP-Adapter für 18-polige PIC-ControllerEin aufgebauter ICSP-Adapter für 18-polige PIC-Controller

Ein aufgebauter ICSP-Adapter für 18-polige PIC-Controller mit dem PICkit3 verbunden

Das soll es an dieser Stelle auch schon gewesen sein; als Fazit sollte festgehalten werden, dass ICSP viel Arbeit spart und defintiv ein sehr nützliches Werkzeug darstellt. Ein Projekt, das die ICSP-Schnittstelle nutzt, ist zum Beispiel der LED-Countdown II.

Nach oben

show print layout Die deutsche Version der Seite besuchen

www.jb-electronics.de » Electronics » Digital Technology » PICkit3 and the ICSP interface

PICkit3 and the ICSP interface

My apologies...

There is no English translation of this page available yet. It will take some more time for me to translate the whole website.

If you have a particular interest in this page getting translated as fast as possible, please contact me; I will see what I can do. Please click here for the German version.

To the top