<adresse_électronique CHEZ fournisseur POINT code_pays>
Copyright © 2002 Jerry Sebastian
Copyright © 2014 Sébastien Marbrier
Copyright © Année de relecture Prénom Nom du relecteur
Article paru dans le n°079 de la Gazette Linux de juin 2002.
Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
Il fut un temps où il était nécessaire de démarrer un système d'exploitation Microsoft dès qu'il s'agissait de toucher un peu au matériel. Mais c'est désormais une époque révolue — des outils libres sont disponibles pour les principaux micro-contrôleurs du marché — qu'il s'agisse des PIC du Microchip, de l'Intel 8051™, du Motorola 68HC05™, des AVR™ d'Atmel, et bien d'autres. Je décrirai dans ce document comment débuter avec le PIC 16F84™ sous Linux.
PIC est l'abréviation de Peripheral Interface Controller ou Contrôleur d'Interface de Périphérique. Le 16F64™ est le micro-contrôleur de milieu de gamme qui convient le mieux à un novice. Ces micro-contrôleurs sont peu coûteux et répondent à tous les usages grâce à ses nombreuses interfaces — 1024 octets (14 bits de longueur) de mémoire programme, 68 octets de RAM et 64 octets d'EEPROM (cela vous semble insuffisant ? En fait, c'est plus qu'il n'en faut). Le 16F84™ est dans un boîtier 18 broches et dispose de 13 broches d'entrées/sorties numériques. A l'intérieur de la puce, sont présents un temporisateur et un contrôleur d'interruption. En plus de cela, il permet la programmation in-situ en mode série. D'autres documentations sont disponibles sur le site officiel de MicroChip.
Afin d'écrire le code machine dans le PIC, il faut un programmateur. Une large variété de circuit de programmation est disponible sur le réseau, du plus simple au plus complexe. Le plus utilisé d'entre eux est le programmateur de PIC de David Tait. Ce circuit est simple et facile à monter. Il est nécessaire de posséder une alimentation délivrant au moins 15V continus afin d'utiliser correctement le circuit.
pp (Pic programmateur) est un logiciel issu du projet GNU pour écrire sur le PIC, il fonctionne avec le circuit décrit plus haut. C'est également l'œuvre de David Tait. Il peut être téléchargé depuis le site PIC archive. pp supporte une large gamme de matériels en plus du circuit précédent. La mémoire programme du PIC ne supporte que 1000 cycles d'écriture. pp est très efficace et rapide car il n'écrase que les portions dont le code diffère de celui à transférer. Si le code est identique, il ne ré-écrit pas le code en mémoire.
Utilisation du programmateur de PIC
Après la compilation du binaire de pp, les étapes suivantes sont :
Relier le matériel au port parallèle.
Mettre le circuit sous tension
Se connecter en tant que root
Saisir export PPSETUP=3 afin d'indiquer à pp que le programmateur de circuit PIC classique est utilisé
Maintenant tapez la commande pp. Si tout ce passe bien et que le matériel fonctionne alors pp affiche un message Matériel détecté OK
. Il affiche également les options qui peuvent être passées à pp au cours de l'écriture.
Dans le cas contraire, il passe en mode débogage, ce qui est utile pour vérifier le matériel.
Si tout va bien, nous pouvons procéder à l'écriture du code machine dans le PIC.
Utilisation de l'assembleur PIC GNU
L'assembleur PIC GNU génère les code machine pour les instructions assembleur en entrées. Après l'assemblage, il génère le code machine au format Intel HEX. Ce code de sortie peut être donné directement en entrée à pp.
gpasm peut être téléchargé depuis le site gputils qui contient de nombreux logiciels pour la famille PIC.
Nous allons écrite notre premier premier programme pour faire clignoter un groupe de (disons 8) diodes électroluminescentes (DEL). Les DELs sont reliées aux 8 broches de PORTB. Nous devons donc les configurer en tant que broches de sorties. Une fois PORTB configuré en port de sortie, nous pouvons envoyer des 1 et des 0 dans les 8 bits de PORTB (qui correspondent aux 8 DELs) avec une temporisation entre chaque.
Utilisez votre éditeur favori (tel que vi ou EMacs) pour écrire le code assembleur. La première ligne du code doit indiquer le micro-contrôleur utilisé (si vous utilisez GPASM). Nous pouvons à présent écrire notre code. Le code pour faire clignoter les DELs est le suivant : version texte
list p=16f84 ;Précise le micro-contrôleur utilisé. f equ 1 porta equ 0x5 ;Indique l'adresse de chaque port portb equ 0x6 ; Delay_i equ 0xc ;Le premier octet de RAM disponible. Long_Delay_i equ 0xd tmp equ 0xe goto Main ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Sous-routine générant une tempo de 1 ms avec une horloge de 4Mhz pour le PIC. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Delay movlw 0xff movwf Delay_i L1 nop decfsz Delay_i, f goto L1 return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; Sous-routine générant une tempo de 1 seconde ( environ ). ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Long_Delay movwf tmp movlw 0xff movwf Long_Delay_i L2 call Delay decfsz Long_Delay_i, f goto L2 movf tmp,w return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ;Le code ci-dessous configure tous les ports en tant que sortie. ;Pour configurer une port en tant qu'entrée, il faut mettre à 1 ;le correspondant dans le registre TRIS. ;Exemple: pour utiliser la broche portb0-3 en entrée et toutes les ;autres en sortie, utilisez les instructions ; ; movlw 0x0 ; tris porta ; movlw 0x0F ; tris portb ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Main movlw 0x0 tris porta tris portb movlw 0xff movwf portb L3 call Long_Delay ;Clignotement avec temporisation de 1s. comf portb,f ;complément portb goto L3 end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Sauvez le fichier avec l'extension .s. Le code peut être assemblé en saisissant la commande gpasm filename.s. En l'absence d'erreur, le code d'erreur sera dans le fichier filename.hex. A présent, tapez les commandes suivantes pour écrire le code.
$ export PPSETUP=3 $ pp -xp filename.hex
L'option -x indique que l'oscillateur à quartz du circuit est utilisé et -p indique que nous voulons activer la temporisation du mise en route du PIC. Les autres options habituelles sont :
-e --- pour efface la mémoire programme et la mémoire EEPROM -w --- pour activer la temporisation du chien du garde -v --- pour vérifier le code.
La figure ci-dessous montre le matériel requis pour exécuter le programme [circuit.jpg]
Alors qu'attendez-vous ? Commencez à bidouiller avec les PIC ;-)
Jerry Sebastian
Je suis étudiant en dernière année de formation en Électronique et Communication à l'Université Publique d'Ingénierie, Thrissur, Kerala, Inde.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.