Le PICKit 2 est un programmateur de PIC de chez Microchip. Ce tutoriel traite de la façon d'utiliser et de programmer avec un controleur 16f88.
Pk2cmd est un programme open source pour communiquer avec le PICkit2.
Il est disponible sur le site internet de Microchip à la page http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
Le lien de téléchargement direct pour le noyau 2.6 et plus est http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1-20Linux2-6.tar.gz
Les sources étant disponibles depuis le site de Microchip, nous allons les télécharger, les compiler, puis les installer.
Dans un terminal saisissez:
sudo apt-get install libusb-dev wget http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1.20LinuxMacSource.tar.gz tar xvf pk2cmdv1.20LinuxMacSource.tar.gz cd pk2cmdv1.20LinuxMacSource make linux sudo make install
J'ai tester sur une 16.04 sa fonctionne bien même tester sur une configuration ARM en processeur (raspberry pi)
Branchez le PICkit2 sur le port USB pour tester s'il est bien détecté.
pk2cmd -P Auto-Detect: Found part PIC16F88. Operation Succeeded
PK2DeviceFile.dat device file not found.
il peut être nécessaire de copier le fichier PK2DeviceFile.dat vers le dossier ou se trouve l'executable pk2cmd :
sudo cp /usr/share/pk2/PK2DeviceFile.dat /usr/local/bin
Quelques commandes utiles : Activer le courant :
pk2cmd -PPIC16F88 -T
Couper le courant:
pk2cmd -PPIC16F88 -A0
Programmer le PIC avec le fichier program..hex:
pk2cmd -PPIC16F88 -M -Fprogram.hex
Pour ceux qui n'aiment pas les lignes de commande, le site du projet est ici :http://tuxtronics.com/node/1
Il suffit de décompresser l'archive dwarf.tgz dans le dossier de votre choix, et de lancer le script nommé dwarf. Sur 16.04 penser à rendre éxécutable le script et le lancer dans une console ouverte dans le dossier "dwarf master"
utilisateur@pc~ ./dwarf
Gpasm est un compilateur pour générer du code pour notre PIC. Il prend en entrée un fichier assembleur et produit du code machine.
Installez le paquet gputils
Écrivons notre premier programme. Créez un fichier hello.asm contenant:
#include <p16f88.inc> ; fichier include (définition controleur) ;La directive CONFIG sert à mettre en fonction des fusibles de fonction __CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF ;la directive CBLOCK sert à donner le point de départ des variables (RAM) CBLOCK 0x20 ;Début de la zone (0x20 à 0x6F) Delay1 ;Déclaration variable Delay1 dans banque 0 Delay2 ENDC ;Fin de la zone ORG 0 ;la directive ORG adresse de démarrage du code (ROM) bsf STATUS,RP0 ;sélection banque 1 bcf TRISB,3 ;bit 3 de TRISB = 0 movlw b'01100010' ;charge la valeur binaire dans W movwf OSCCON ;écrit la valeur dans registre OSCCON (horloge interne = 4Mhz) bcf STATUS,RP0 ;retour en banque 0 boucle ;étiquette ou label bsf PORTB,3 ;bit 3 de PORTB = 1 call delay ;appel sous routine delay bcf PORTB,3 ;bit 3 de PORTB = 0 call delay goto boucle ;saut à boucle delay decfsz Delay1,f ;Dés-incrémente et saut si égal à 0 de Delay1 dans Delay1 goto delay ;Tant que delay1 n'est pas égal à 0 on boucle decfsz Delay2,f goto delay end
Compilez :
gpasm hello.asm -p p16f88
Programmer le 16f88 :
pk2cmd -P PIC16F88 -M -F hello.hex
Lancez le programme en activant l'alimentation:
pk2cmd -P PIC16F88 -T
Si tout se passe correctement la LED câblée sur le PORTB 3 clignote.
pk2cmd -P PIC16F88 -A0
Avec cette commande on coupe alimentation du contrôleur. On utilise le contrôleur sur une bread board avec le câblage ci dessous: