logo_PLG

Electronique

ICD2 Programmer & Debugger

Platine du programmateur ICD2

Je reprends ici le montage conçu et fabriqué par Chapslab.com pour lequel j'ai légèrement redessiné le PCB afin de pouvoir l'intégrer dans un boitier HAMMOND réf. 1591 , plus facile à se procurer que celui proposé à l'origine. Cela nécessite cependant quelques découpes dans les angles de la carte afin de pouvoir l'intégrer dans son coffret.
J'ai écrit cet article en accord avec son auteur, que je remercie vivement pour sa gentillesse ainsi que sa disponibilité.


Introduction

Pour ceux qui ne connaissent pas l'ICD2 (In Circuit Debugger 2), c'est une interface qui permet de programmer et debugger des microcontrolleurs PIC depuis un PC.

Ce projet est un ICD2 qui est un peu simplifié par rapport à la version de Microchip. Le but n'est pas de refaire exactement un clone (car il faut partir sur un PCB double couche avec vias et trouver des composants peu courants genre Cypress CY7C64613). Celui présenté ici est beaucoup plus simple, avec des composants courants (hormis peut-être le FT232R mais il est tout à fait possible de faire une version série avec un MAX232).

Les caractéristiques principales sont les suivantes :

  • ICD2 vu comme un original par MPLAB
  • Compatible avec les futures versions de MPLAB vu qu'il utilise ses firmwares (Mise à jour auto via MPLAB)
  • Alimenté par le bus USB
  • Possibilité d'alimenter la cible (max 400mA)
  • Convertisseur DC/DC pour générer la tension de programmation VPP (réglable entre +11 et +15V)
  • Connecteur RJ12 identique à celui de Microchip (longueur du câble 20-30cm maxi à cause des parasites éventuels)


Description

Deux composants principaux sont au cœur de ce montage : un PIC 16F876(A) qui contient le bootloader (voir "réalisation") et le firmware que MPLAB installe suivant la série de PIC que l'on débogue.
L'autre composant est le tout nouveau FT232RL de chez FTDI Chip qui assure la conversion USB-RS232 (niveaux TTL) pour communiquer avec le PC. De ce fait, cet ICD2 n'est pas vraiment USB, mais il est vu par MPLAB par le port série, comme si on branche l'original via son port série. L'intérêt d'être quand même en USB est double : d'une part les ports séries disparaissent sur les PCs récents, d'autre part le bus USB permet d'alimenter l'ICD ainsi que des cibles de consommation raisonnable, ce qui est fort pratique.


Fichiers de construction

Deux versions du firmware de l'ICD2-like vous sont proposées. Elles ne diffèrent que par le PIC utilisé, le PIC 16F876 ou le PIC 16F876A (la programmation interne diffère légèrement entre les deux versions, d'où les différents firmwares) :

saveVersion "standard" logo md5s : 1ecdc511aeee8193f9b7d84c71a70f9c
saveVersion "A"logo md5s : ac8858f12f1139958aa0ac1555be3050


Schéma & PCB

Schéma de l'ICD2

Le PCB est un circuit simple face, avec 2 straps :

PCB de l'ICD2

saveFichiers Eagle logo md5s: 5a97ea7e5ef8f8eecdb784f1eb217f74


ICD2 vue côté composants

ICD2 vue côté soudures
ICD2 assemblé dans son coffret

Vous trouverez ci-dessous la liste des composants utilisés ainsi que leurs références chez Farnell :
saveListe des composants logo md5s : 7acde43a13780e90c31860d42ca6abbc


Réalisation

Ne disposant pas du matériel nécessaire à la fabrication des circuits imprimés, j'ai fait fabriquer le mien par une petite entreprise . Faites votre demande de devis par e-mail avec en fichier attaché une image du PCB au format TIFF/600dpi par exemple, ils répondent très rapidement.

Le bootloader permet, une fois l'ICD connecté à MPLAB, de reprogrammer le PIC (écriture de la mémoire programme) afin de charger le firmware correspondant à la famille de PICs choisie (12F, 16F, 18F, ... ).
Il est donc nécessaire de disposer d'un programmeur de PICs pour programmer le bootloader.

Pour ma part, j'ai utilisé ma maquette de développement PiCée photo de ma maquette ProtoPic2840ainsi que ma carte de développement ProtoPic2840, qui me servent ensuite pour tester mes petites applications. La carte PiCée disposant in situ d'un programmateur avec interface série, j'utilise une carte d'adaptation PCMCIA/RS232 (on en trouve aussi sur Amazon.fr pour une trentaine d'euros...) sur mon PC portable.
→ J'ai depuis la conception de mon exemplaire procédé à l'adjonction d'un connecteur ICSP sur ma carte PICée...

Il faut commencer par programmer le PIC avec un bootloader, à l'aide de Ic-Prog par exemple.


Technique
Le PIC 16F876(A) est un composant CMS (montage en surface), et pour programmer le bootloader, j'ai utilisé un support d'adaptation CMS/DIL 28 broches acheté chez Farnell. Il n'est pas utile de souder toutes les pattes, seules les alimentations/masse/MCLR/RB6/RB7 sont nécessaires.
Compte tenu également du très petit pas du circuit FT232RL, il est souhaitable de s'aider d'une loupe, voire d'une lampe loupe encore plus confortable !

Note : la self présentée ici est une version CMS, mais montée comme un composant traversant. Il suffit pour ça de lui souder 2 pattes récupérées d'une résistance selon le pas de 5,08mm et le tour est joué (la gamme des selfs CMS est nettement plus vaste que les selfs classiques). Voici un aperçu de l'assemblage :

photo de la self CMS

Si vous préférez un composant tarversant, voici le modèle au pas de 5,08mm qu'il vous faut :

photo de la self


Programmation du PIC 16F876(A)
Il n'est pas utile de cocher les fusibles, laissez-les comme indiqué ci-dessous :

Ic Prog
Utilisez de préférence les ports Com1 ou Com2 pour votre liaision USB-Série, ceci afin d'éviter des problèmes de compatibilité avec MPLAB.
Si les deux sont déjà utilisés par d'autres interfaces, il vous faudra en renommer une en Com3 par exemple...

logo_windowsOutil de développement sous Windows : MPLAB
Il vous faudra bien évidemment connecter votre ICD à une maquette de développement cible, sans quoi rien n'est possible...
Une petite plaquette d'essai à pastilles (ou mieux encore avec une breadboard...) avec un PIC et les quelques composants autour pour que cela puisse fonctionner, et voilà !

Réglage
Lancez MPLAB, puis sélectionnez les options [Programmer], [Select Programmer] et [MPLAB ICD 2].
Lancez la connexion entre MPLAB et l'ICD2 par les commandes [Programmer] et [Connect], puis [Programmer] et [Settings].
Il vous faut maintenant régler la tension VPP de programmation à +13V à l'aide du trimmer P1, tension mesurable sur la cathode de D1.
C'est tout ! Si vous ne disposez pas de voltmètre, vous pourrez toujours vous aider de cet écran pour l'ajuster en activant la touche [Update] :

MPLAB Settings 2a


Programmation du Firmware
Le fichier devrait se trouver dans le répertoire (C:\Program Files\Microchip\MPLAB IDE\ICD2), mais si pour vous ce n'est pas le cas, je vous le propose en téléchargement ci-desous :

saveFichier du Firmware logo md5s: 72539d9bd3e6b92193f984e6226d0a1c

Lancez MPLAB, puis séléctionnez les options [Debugger], [Select Tool] et [MPLAB ICD 2]. Cliquez sur [Connect], et enfin sur [donwload operating system]. Sélectionnez éventuellement le type de fichier (ICD2 16F/12F Firmware Files) puis le fichier du firmware (ICD01020704.hex) à télécharger, il va alors être programmé dans le PIC 16F876(A).
Laisser la procédure se terminer d'elle même, votre PIC 16F876(A) est alors enfin prêt.

Attention toutefois, lors du premier donwload operating system, il faut régler le Baudrate du port utilisé à 19200 bauds. Par la suite, vous pourrez sans problème le repasser à 57600 bauds pour débugger.

Vous pouvez contrôler le résultat de l'opération en visualisant ces paramètres :

MPLAB Settings 1a

logo_linuxOutil de développement sous Linux : Piklab
Les noyaux Linux de version supérieure ou égale à 2.6.31 intègrent les derniers pilotes d'émulation de port virtuel du FT232. Il n'y a donc rien de spécial à installer. Le port correspondant au COMx de Windows est le périphérique /dev/ttySx.

Il vous faudra bien évidemment connecter votre ICD à une maquette de développement cible, sans quoi rien n'est possible...
Une petite plaquette d'essai avec un PIC et les quelques composants autour pour que cela puisse fonctionner, et voilà !

Vous pouvez télécharger Piklab directement sur le site du développeur , ou encore si vous êtes sous Ubuntu l'installer à l'aide de Synaptics par exemple.
copie d'écran de Piklab
Lancer Piklab, puis sélectionnez [Programmateur] et [Connecter], puis [Programmateur] et [Avancé].

Il vous faut maintenant régler la tension VPP de programmation à +13V à l'aide du trimmer P1, tension mesurable sur la cathode de D1.
C'est tout ! Si vous ne disposez pas de voltmètre, vous pourrez toujours vous aider de cet écran pour l'ajuster en activant la touche [Lire] située à droite de (Vpp du programmateur) :

copie d'écran de Piklab

Connecteur ICSP
Le connecteur de liaison de l'ICD2 comporte d'un côté une prise RJ12 à 6 pins et de l'autre un connecteur 5 points conforme à la norme "Microchip".

Schéma connexion ICSP

plan de mon système de développement Pic avec ICD2
Variante pour VPP
Certains micro-contrôleurs n'acceptent pas trop une tension supérieure à celle admissible, comme par exemple le P18F45K22 qui nécessite une tension maxi de 9V pour VPP.
J'ai donc effectué une petit modification avec des composants montés en "volant", comme illustré sur le schéma ci-dessous :
Schéma de l'élévateur de tension modifié de l'ICD2...
Ainsi, en commutant l'interrupteur S1, je peux sélectionner ma tension VPP à +9V ou +13V.
photo du boitier modifié...
Dépannage
Je vous livre ici les principaux oscillogrammes relevés directement sur mon ICD2, cela pourra vous servir au cas où le vôtre ne fonctionne pas
 
Conditions de mesure
  • L'ICD2 relié au port USB du PC
  • La maquette à programmer (nécessaire au bon fonctionnement) alimentée et reliée à la prise RJ12 de l'ICD2
  • MPLAB lancé et initalisé avec le PIC présent sur la maquette à programmer : option du Menu [Configure] puis [Select Device]
  • La sonde de l'oscilloscope en position x10
  • Les 2 mesures sur la prise RJ12 ont été réalisées avec un PIC déjà programmé, en sélectionnant la fonction lecture : [Programmer] puis [Read] dans le Menu de MPLAB
IC3 LM3578 pin6 IC2 P16F876 MCLR Power On pin1 IC2 P16F876 MCLR Connect pin1 IC2 P16F876 RxD Connect pin17 IC2 P16F876 TxD Connect pin18
IC2 P16F876 RTS Connect pin25 IC2 P16F876 CTS Connect pin26 J2 RJ12 Reading pin3 J2 RJ12 Reading pin6  
 
Coût
A titre purement indicatif, l'ensemble ICD2 m'a coûté en décembre 2010 environ 70€ câbles et coffret compris.
En comparaison avec l'original de chez Microchip DV164005 - MPLAB ICD 2 MODULE (avec câbles USB & interface ICD) dont le prix de vente est de 199.99$...
 
Elements téléchargeables du projet

Remerciements
J'adresse à l'auteur Chapslab.com de cet outil bien pratique mes plus profonds remerciements pour son aide précieuse et sa disponibilité lors du dépannage et de la mise en service de mon ICD2, ainsi que pour son autorisation quant à la mise en ligne de cet article dans mon site personnel.

Quelques liens vers les sites de mes amis...

Licence Creative Commons

 Licence CC BY NC SA 3.0 FR DEED L'ensemble de ce site hormis une notification spécifique est mis
à  disposition selon les termes de la Licence Creative Commons
Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions
3.0 France.
Licence Creative Commons