ICD2 Programmer & Debugger
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
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
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
Version "standard" : 1ecdc511aeee8193f9b7d84c71a70f9c
Version "A" : ac8858f12f1139958aa0ac1555be3050
Schéma & PCB
Le PCB est un circuit simple face, avec 2 straps :
Fichiers Eagle : 5a97ea7e5ef8f8eecdb784f1eb217f74
Vous trouverez ci-dessous la liste des composants utilisés ainsi que leurs références chez Farnell :
Liste des composants : 7acde43a13780e90c31860d42ca6abbc
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.
→ 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.
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 :
Si vous préférez un composant tarversant, voici le modèle au pas de 5,08mm qu'il vous faut :
Programmation du PIC 16F876(A)
Il n'est pas utile de cocher les fusibles, laissez-les comme indiqué ci-dessous :
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...
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] :
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 :
Fichier du Firmware : 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.
Vous pouvez contrôler le résultat de l'opération en visualisant ces paramètres :
Outil 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à !
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) :
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".
- 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
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$...
Remerciements