{{tag>programmation BROUILLON}}
----
====== PICkit2 ======
Le PICKit 2 est un programmateur de PIC de chez [[http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805|Microchip]]. Ce tutoriel traite de la façon d'utiliser et de programmer avec un controleur 16f88.
===== Pk2cmd : le programme de communication =====
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]]
==== Installation à partir du code source ====
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)
==== Utilisation ====
Branchez le PICkit2 sur le port USB pour tester s'il est bien détecté.
pk2cmd -P
Auto-Detect: Found part PIC16F88.
Operation Succeeded
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
=====  Dwarf : une interface graphique pour pk2cmd =====
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 : le compilateur pour PIC =====
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.\\
[[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>gputils|gputils]]** 
=====  Premier Code =====
Écrivons notre premier programme.
[[:tutoriel:comment_modifier_un_fichier|Créez un fichier]] **//hello.asm//** contenant:
    #include           ; 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:
=====  Voir aussi =====
  * [[piklab]]
  * [[conception_electronique]]
----
//Contributeurs: FIXME //