Vous êtes sur la page 1sur 6

Programmateur de PIC

sous mac OSX 10.4 ( et ultrieur )


Par Jean-Luc BERT
jean-luc.berte@laposte.net
18 Avril 2008 Rvision 00.1

Tutoriel
1re partie
Voil quelques semaines que je me suis lanc dans la programmation de PIC sous mac OS X 10.4 et
ultrieurs. La plupart des outils existants sont destins aux PC. A force de recherches et d'aides obtenues via
le net, j'ai pu enfin programmer ma premire PIC en utilisant uniquement un MAC et des outils open source.

1) Le programmateur
Le Pickit 2 de Microchip est une solution extrmement intressante car peu coteuse ( environ 23 ).
On peut le commander cette adresse :
http://www.microchipdirect.com/
Pour faire les premiers essais, je me suis servi du PICKit 2 Starter Kit qui comprend le
programmateur de microcontrolleur et le Low Pin Count Demo Board. Le prix de l'ensemble est actuellement
de 35
environ sans compter les frais de port.

2) Interfaage avec le MAC


Compilation de pk2cmd
Les outils de dveloppement fournis avec le Starter Kit sont exclusivement destinns Windows. Il existe
heureusement une magnifique solution Open Source propose par Jeffery L Post : c'est Pk2cmd.
http://home.pacbell.net/theposts/picmicro/ Il est destinn initialement Linux et Mac OS X 10.5, mais aprs

quelques modification, Simon Cooper http://www.sfik.com/ http://www.sfik.com/bio.html pu l'adapter la


version 10.4 et plus...De plus il l'a mis sous la forme d'un projet Xcode, ce qui facilitera grandement
l'laboration d'une interface graphique avec Cocoa.

Cette version est tlchargeable ici : http://labo-rrim.bbactif.com/presentation-f12/pk2cmd-mac-osx-104t25.htm


Pour la compilation il y a deux possibilits :

Via le Terminal ( Macintosh HD/Applications/Utilitaires/Terminal ). Dans ce cas dans le rpertoire


pk2cmd-MacOSX_10.4 faire make osxhid
Utiliser Xcode 2.4.1 ou plus ( on le trouve sur le cd d'installation du MAC ) et on double clique sur
pk2cmd.xcodeproj. On doit avoir cette fentre :

On clique sur Build and Go


Le fichier compil se trouve alors dans pk2cmd-MacOSX_10.4 /build/Release
Rq : le fichier pk2cmd ne peut fonctionner correctement qu'avec le fichier PK2DeviceFile.dat dans le mme
rpertoire.
Mise a jour du firmware de Pickit 2
Le firmware livr initialement avec PICKit 2 est obsolte.
Dans le rpertoire contenant contenant pk2cmd on doit avaoir un fichier pk2v022000.hex.

Dans le terminal faire


$ ./pk2cmd -dpk2v022000.hex
Pickit 2 est alors prte. Si tout s'est bien pass lorsqu'on fait
$ ./pk2cmd -?v
on doit avoir :
Executable Version: 1.01.00 (Linux/Mac port 0.07)
Device File Version: 1.42.00
OS Firmware Version: 2.20.00
Operation Succeeded
Pour vrifier si tout fonctionne correctement on connecte le Low Pin Count Demo Board sur lequel
normalement est connect la PIC16f690
on fait alors :
$ ./pk2cmd -p16f690 -i
on a :
Device ID = 1406
Operation Succeeded

Si ces diffrentes tapes se sont droules correctement votre PIC est prte tre programme.

3) SDCC
SDCC ( Small Device C Compiler ) est un cross compiler c'est dire un langage capable de traduire un code
source en code objet dans un environnement diffrent de celui ou la compilation est effectue. Aini partir du
processeur ( Intel ou PPC du MAC ), on effectue une compilation qui sera comprhensible par la PIC 16F690.
Il faut tlcharcher la dernire version de sdcc ici :
http://sdcc.sourceforge.net/
On dcompacte l'archive, puis dans le rpertoire sdcc, faire :

$ ./configure
$ make
# make install
Pour premier exemple, on va raliser un Hello World pour le 16F690.
partir d'un des diteurs du terminal du mac, (vi,emacs...) on cre le fichier lights-on.c :
#include <pic16f690.h>
/* You might need the following configuration information */
typedef unsigned int word;
word at 0x2007 __CONFIG = (_INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _BOR_OFF &
_PWRTE_ON & _MCLRE_OFF & _IESO_OFF & _FCMEN_OFF);
void main () {
TRISC = 0x00; /* PORTC, All outputs */
PORTC = 0x0f; /* All lower bits on */
while (1);
/* Loop indefinitely */
}
pour compiler ce programme avec sdcc, faire :
$ sdcc -mpic14 -p16f690 lights-on.c
on doit obtenir un fichier lights-on.hex si tout s'est bien pass.
On efface le contenu de la PIC :
$ ./pk2cmd -pPIC16f690 -e
Il ne reste plus alors qu' transfrer le fichier .hex dans la PIC
$ ./pk2cmd -pPIC16f690 -flights-on.hex -mp -t -r
et en principe les 4 DEL du Starter Kit s'allument.

Explications :

*******************

word at 0x2007 __CONFIG = (_INTRC_OSC_NOCLKOUT & _CP_OFF & _WDT_OFF & _BOR_OFF &
_PWRTE_ON & _MCLRE_OFF & _IESO_OFF & _FCMEN_OFF);
Paramtres de configuration de la PIC

TRISC = 0x00; /* PORTC, All outputs */


Le registre TRISC est mis zro de manire ce que le registre PORTC soit configur en output .
Si on avait TRISC = 0x0F ( rappel : 0x0F = 00001111 en binaire ) le registre PORTC aurait t configur en
input
PORTC = 0x0f; /* All lower bits on */
Allumage des 4 diodes des 4 DEL de la Low Pin Count Demo Board ( rappel : 0x0F = 00001111 en
binaire )
A partir de l, j'ai plus raliser un programme un peu plus labor qui faisait clignoter les diodes :
#include <pic16f690.h>
typedef unsigned int word;
word at 0x2007 __CONFIG = (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _BOR_OFF & _PWRTE_ON &
_MCLRE_OFF & _IESO_OFF & _FCMEN_OFF ); /*Configuration de la PIC */
void attente() /*Routine d'attente pour qu'on puisse observer le clignotement des diodes*/
{
char i,j;
for (i=0; i<=100;i++ )
for( j=0; j<=100; j++);
}
void main()
{
char i;
TRISC = 0x00; /* Initialisation de PORTC en "output" */
for(i=0x00; i<= 0x0f;i++)
{
PORTC = i; /* Allumage des diodes en fonction de la valeur de i */
attente();
}
}
Cette fois ci, les diodes s'allument en suivant une progression croissante sur 4 bits :
0000
0001
0010
0011
0100
0101
0110
0111
1000

1001
1010
1011
1100
1101
1110
1111

En cas de difficults, remaques ou suggestions, contactez moi cette adresse : jean-luc.berte@laposte.net


ou sur le site : http://labo-rrim.bbactif.com/presentation-f12/

Remerciements :
Merci tout ceux qui m'ont aid et qui m'ont fait dcouvrir la programmation de PIC et m'aident comprendre
ces diffrents systmes :
Jean-Baptiste et kiryu du forum Mactronique :
http://www.mactronique.com/forums/viewtopic.php?t=255&postdays=0&postorder=asc&start=0
Claude Bigonoff pour ses nombreux conseils :
http://www.abcelectronique.com/bigonoff/index.php
Jeffery L POST ( le concepteur de pk2cmd )
http://home.pacbell.net/theposts/picmicro/
Simon Cooper
http://www.sfik.com/bio.html
Xiofan Chen
http://forum.microchip.com/tm.aspx?m=260540&mpage=4