{{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
Si vous obtenez le message d'erreur suivant :
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
===== 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 //