COURS Pic PDF
COURS Pic PDF
COURS Pic PDF
Faculté de Technologie
Département de Génie Biomédical
Microcontrôleur
1-Introduction
Dans un passé pas très lointain, l’électronique se résumait essentiellement aux circuits analogiques et
éventuellement en logique câblée (portes
( logiques, compteurs, registres à décalage…).
décalage L’usage des
microprocesseurs était plutôt réservé à un public averti d’ingénieurs sachant les interfacer avec différents
circuits périphériques (eprom, ram…) …) et programmer en assembleur.
Au fil du temps on a vu apparaître de nouveaux circuits regroupant dans une seule puce le
microprocesseur et ses circuits périphériques : les microcontrôleurs. On en trouve maintenant partout :
automobile, lave-vaisselle,
vaisselle, rasoir, brosse à dent électrique…
2-Intérêt de la programmation
grammation en langage C
Heureusement, avec la montée en puissance des microcontrôleurs, on voit apparaître actuellement des
compilateurs en langage C (voire même C++) qui permettent de gagner un temps considérable pour le
développement et le débogage des programmes.
1-Le
Le C est un langage de « haut niveau », comparé à l’assembleur,
l’assembleur, qui permet d’écrire des programmes
nettement plus intelligibles et donc plus faciles à relire et corriger ou modifier.
2-Le
Le compilateur contrôle la cohérence du code au moment de la compilation et signale bon nombre
d’erreurs, qui seront autant de bogues en moins à corriger.
3- Le compilateur prend en charge la gestion d’un certain nombre de mécanismes fastidieux : par
exemple, pas besoin de spécifier la page mémoire dans laquelle on veut écrire, le compilateur s’en charge.
charge
4- De plus, certains compilateurs permettent tout de même d’accéder à des ressources de bas niveau, voir
même d’insérer dans le code des portions d’assembleur.
d’assembleur. A vrai dire, à moins d’être un « pro » de
l’assembleur, vous pourrez certainement créer avec un bon compilateur C un code plus propre et plus
robuste, en nettement moins de temps.
Pour bien fixer les idées sur la différence de niveau de langage entre assembleur et
C, je vais donner un exemple. Soit it à décrire une action simple :
En assembleur ça donnerait :
{- soulever pied droit
- avancer pied droit
- poser pied droit
- soulever pied gauche
- avancer pied gauche
- poser pied gauche
- soulever pied droit
- avancer pied droit
- ….
- Sélectionner bras gauche
- Soulever bras
- Avancer bras
- Prendre poignée fenêtre dans main gauche
- Tourner poignée de -90°
- Tirer poignée
- Etc.…}
En C ce serait plutôt :
{- Ouvrir la fenêtre}
Dr HAMZA CHERIF Lotfi
1
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
3-Choix du compilateur
2
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
-MikroC
roC Pro for PIC de Mikroeloktronika.
Flowcode de Matrixmultimédia.
-Flowcode
Dr HAMZA CHERIF Lotfi
3
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
b-Fonctionnement du Flowcode :
Flowcode est construit sur un compilateur C - C2C. Il s'agit d'un objectif général 8 / 16 bits compilateur
conçu spécialement pour les appareils PICmicro. Flowcode génère un fichier de code C de l'organigramme
que vous créez. Ce code est automatiquement compilés
compilés en code assembleur par le compilateur C2C et
ensuite traduits en un code machine Hex fichier à l'aide de Microchip MPASM assembleur.
Toute tierce partie PIC programmeur peut ensuite être utilisé pour télécharger le fichier résultant Hex dans
l'objectif du PIC program mémoire.
4-La
La carte de programmation (hardware) :
Il existe des cartes de programmation qui se branchent sur le port parallèle, le port série ou bien le port
USB d'un ordinateur.
4
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
5-Le
Le programmateur (software) :
IC-Prog
Prog (logiciel freeware développé par Bonny Gijzen), Serial Bootloader AN1310 (Microchip) et mikroProg Suite
For PIC (Mikroelectronika) permettent
tent le transfert du code objet (fichier .HEX) dans la mémoire Flash du
microcontrôleur.
5
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
6- Connexion avec le PC
Une solution consiste à utiliser le programmeur à deux résistances qui marche très bien sur le port série d'un
PC de bureau (ne marche pas avec un PC portable). Pour le logiciel, on utilise PICPGM qui a l'avantage de
détecter le PIC quand le câblage est correct. En cas de difficulté, on sélectionner le programmeur JDM
programmer dans la section Hardware
6
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
7-Choix du microcontrôleur.
a-Du
Du microprocesseur au microcontrôleur.
microcontrôleur
Le processeur est l'élément central d'un système informatique : il interprète les instructions et traite les
données d'un programme. Il a besoin de certains éléments externes pour fonctionner :
-Une horloge pour le cadencer.
-De la mémoire pour stocker les variables durant l’exécution du programme (mémoire
(mémoire vive RAM)
RAM et le
programme d’une mise sous tension à l’autre (mémoire
( morte ROM). ). Si l'on conçoit un système assigné à
une tâche bien particulière
lière (ce qui est généralement le cas des systèmes embarqués), le programme n'est pas
amené à changer. Il peut donc être stocké dans une mémoire morte (ROM) ;
-Des périphériques (pour interagir avec le monde extérieur).
Ces éléments sont reliés par 3 bus :
-le bus d'adresse qui permet au microprocesseur de sélectionner la case mémoire ou le périphérique auquel
il veut accéder pour lire ou écrire une information (instruction ou donnée) ;
-le bus de données qui permet le transfert des informations entre les différents éléments ; ces informations
seront soit des instructions, soit des données en provenance ou à destination de la mémoire ou des
périphériques ;
-le bus de contrôle qui indique si l'opération en cours est une lecture ou une écriture, si un périphérique
demande une interruption pour faire remonter une information au processeur, etc.
b-Microcontrôleurs
Microcontrôleurs comme Composants intégrés
Un microcontrôleur intègre sur un unique boitier :
Un processeur (CPU),, avec une largeur du chemin de données allant de 4 bits pour les modèles les plus
basiques à 32 ou 64 bits pour les modèles les plus évolués ;
De la mémoire vive (RAM) pour stocker les données et variables ;
7
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
De la mémoire morte (ROM) pour stocker le programme. Différentes technologies peuvent être
employées :EPROM, EEPROM, mémoire flash (la plus récente) ;
Souvent un oscillateur pour le cadencement. Il peut être réalisé avec un quartz, un circuit RC, des
périphériques, capables d'effectuer des tâches spécifiques. On peut mentionner entre autres :
c-Famille
Famille de microcontrôleur
8
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
La famille des PICs est subdivisee en 3 grandes familles : La famille Base--Line, qui utilise des mots
d’instructions de 12 bits, la famille Mid-Range,
Mid qui utilise dess mots de 14 bits (et dont font partie la 16F84
et 16F877), et la famille High-End,, qui utilise des mots de 16 bits.
Les PICs sont des composants STATIQUES, Ils peuvent fonctionner avec des fréquences d’horloge
allant du continu jusqu’a une fréquence max spécifique a chaque circuit. Un PIC16F876-
PIC1 04 peut
fonctionner avec une horloge allant du continu jusqu’a 4 MHz.
9
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
Explication :
En effet, ils ont été conçus sur une architecture dite HARVARD (RISC) et non sur un modèle VON
NEUMANN (COMPLEX).
- L’architecture VON NEUMANN employée par la plupart des microcontrôleurs actuels (INTEL80XX,
(
motorola HC05, HC08 et HC11, ou ZILOG Z80) Z80) est basée sur un bus de données unique. Celui-ci
Celui
véhicule les instructions et les données.
données
-L’architecture HARVARD utilisée par les microcontrôleurs PICS est basée sur deux bus de données. Un
bus est utilisé pour les données et un autre pour les instructions.
10
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
11
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
4-Exemple de programme :
void main()
{
TRISB=0x00; // registre de configuration (1 seul fois (0 : sortie, 1 : entrée)) TRISB=0b00000000; TRISB=0 ;
PORTB=0x00; // registre de travail.
delay_ms(1000);
PORTB=0b00111111;
PORTB=0;
}
12
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
Le schéma ci-dessus
dessus représente les différents modules du PIC 16F877.
16F877
13
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
1-Le
Le cœur du PIC : le microprocesseur
Un microcontrôleur, c’est avant tout un microprocesseur, une unité de traitement logique qui effectue
l’une après l’autre les opérations contenues dans un microprogramme stocké en mémoire (la ( mémoire
FLASH). On peut le voir sur le schéma (en jaune ci-dessous),
ci dessous), il est essentiellement composé de :
-l’ « ALU » (Unité Arithmétique et Logique) qui effectue les opérations sur les donnés,
-le registre de travail « W reg.. », le multiplexeur « MUX », le registre de statut « status reg », le registre «
FSR reg » utilisé pour l’adressage indirect (en assembleur…), le multiplexeur d’adresse « Addr mux », le
compteur programme « Program Counter » qui pointe les instructions à exécuter, écuter, la pile à 8 niveaux « 8
level Stack », le registre d’instruction « Instruction reg », ainsi que les différents bus qui relient tous ces
éléments entre eux.
On s’aperçoit que les bus autour de l’ALU ont un format de 8 bits : le PIC 16F877 travaille sur des
données de 8 bits, c’est donc bien un microcontrôleur
microcontr 8 bits.
-Pourquoi
Pourquoi donc ce cas le « Program Bus » est-il,
est lui, large de 14 bits ?
C’est simple, certaines instructions peuvent être codées sur plus de 8 bits. Si ce bus n’était large que de 8
bits, il faudrait plus d’un cycle d’horloge pour transmettre ces instructions, alors qu’avec un bus plus large,
ça passe en une fois. De plus, la mémoire programme, indépendante du bus de données, est elle-même elle
adressée avec un bus large : le « Program Counter », qui pointe sur l’instruction en cours, à une largeur de
13 bits. Et avec 13 bits on peut coder environ 8000 adresses. Autrement dit, on à 8000 cases de mémoire
programme
ramme pouvant contenir chacune UNE instruction complète. Cette architecture avec bus de données et
de programme séparés (architecture « Harvard ») permet donc d’optimiser le fonctionnement du PIC.
La plupart du temps, le PIC exécute une instruction et charge la suivante simultanément en un seul cycle
d’horloge. En comparaison, un microcontrôleur 8 bits construit selon l’architecture concurrente « Von
Neumann » (mémoire programme et données reliés au microprocesseur par un unique bus 8 bits) devra faire
plusieurs cycles pour chercher les instructions en mémoire (en plusieurs fois si c’est une instruction longues)
et les exécuter ensuite. En conséquence, à fréquence d’horloge égales, un microprocesseur « Harvard » sera
plus rapide qu’un « Von Neumann ».
2- La mémoire
Sur le PIC, il n’y a trois mémoires :
2-a. La Mémoire Programme,, de type FLASH sur le 16F877. Capacité : 8K. C’est dans celle-ci qu’est
stocké le programme du PIC. Après compilation de votre code, le compilateur génère un fichier « .hex »,
une suite de codes hexadécimaux. Celui-ci
Celui est transféré ensuite dans la mémoire programme du PIC
P à l’aide
du programmateur. Cette mémoire n’est pas reliée au bus de données (DATA Bus), sa vocation est de
stocker le programme du PIC, mais PAS les variables de votre programme. Le gros avantage de la mémoire
FLASH c’est que vous pouvez la réécrire, donc
do implanter un nouveau programme dans le PIC. Les PIC
14
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
2-b. La Mémoire RAM,, qui fait partie de la zone d’adressage des données.
donn Elle comprend tous les registres
spéciaux permettant de contrôler le cœur du PIC ainsi que ses périphériques. Elle contient également des
cases mémoires à usage générique dans lesquelles pourront être stockées les variables de nos futurs
programmes.
3-c. La Mémoire EEPROM.. L’EEPROM est plutôt une mémoire de stockage de données à long terme,
alors que la RAM est utilisée pour les variables du programme. Sur le PIC 16F877, on a 256 octets
d’EEPROM disponible. Les mémoires de type EEPROM sont limitées en nombre de cycles d’effacement /
écriture. Ce nombre de cycle est tout de même de l’ordre du million pour le PIC, mais si on l’utilisait pour
stocker des variables modifiées plusieurs milliers de fois par secondes, cette limite pourrais être atteinte plus
vite qu’on ne le croît. Par contre, pour stocker toute les heures une mesure de température, c’estc tout bon
(Programme de fonctionnement du PIC).
15
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
Le « Program Counter » ou PC est le compteur qui pointe dans la mémoire programme la prochaine
instruction à exécuter. Il est
st lié à la pile système (Pile = Stack en anglais) qui est sur le PIC 16F877 une pile
8 niveaux ; Cela signifie qu’on peut avoir jusqu'à 8 niveaux d’imbrication d’appels de sous-programme ou
fonctions. Ce point est surtout critique pour la programmation en assembleur : un sous-programme
sous peut
appeler un autre sous-programme
programme qui appelle à son tour un autre sous-programme…programme… jusqu’à une «
profondeur » de 8. Au-delà, c’est la cata : votre programme est buggé et va faire n’importe quoi, étant donné
que le PIC ne peut « dépiler » que 8 niveaux. Le Compteur Programme n’arrivera pas à revenir à la racine
des appels. La programmation en C apporte là un peu de souplesse : un bon compilateur veillera pour vous à
ce que la limite de 8 niveaux ne soit pas dépassée,
dépassée, quitte à recopier localement une fonction pour éviter un
saut à l’adresse mémoire où cette fonction est déjà présente. Au détriment donc de l’occupation en mémoire.
Ainsi, mieux vaut-il il éviter de créer trop de niveaux d’imbrication d’appels de fonctions fonction dans nos
programmes.
Le PIC 16F877 est généreusement doté de 5 ports, ce qui est plutôt confortable. Un examen plus attentif
du schéma du brochage nous montre cependant que les lignes d’entrées/sorties (les pattes du composant)
correspondantes sont également utilisées par d’autres modules du PIC. Ainsi, les pattes du PORTA servent
également au convertisseur Analogique/Numérique, les pattes du PORTD au Port Parallèle Esclave, etc. Il
faudra faire des choix au moment de la conception du schéma électronique. On voit également que les ports
B, C et D ont 8 lignes d’entrée/sortie, alors que le port A n’en a que 6 et le port E que 3. Ils sont tous
connectés au bus de donnée (DATA
DATA BUS),
BUS), on pourra donc librement les adresser pour y lire ou écrire des
données, et donc allumer des LED, commander des moteurs pas à pas, des afficheurs LCD, lire les données
envoyées par un clavier ou un bouton poussoir… On peut configurer les entrées/sorties
es/sorties de chaque port en
entrée ou en sortie, grâce à un registre spécial dédié à chaque port. De plus, un des ports (le port B) possède
des résistances de « pull-up
up » internes qui peuvent êtres validées ou non par logiciel.
Le Port Parallèle Esclave est un port 8 bits permettant d’interfacer le PIC avec, par exemple, un autre
microprocesseur. Les données transitent via les lignes PSP0 à PSP7, qui physiquement
hysiquement utilisent les mêmes
broches que le PORTD. Le flux de données est contrôlé par les lignes RD, WR et CS qui correspondent aux
broches du PORTE. C’est le microprocesseur externe qui est le chef d’orchestre : il valide notre PIC par la
ligne CS (Chip Select), et indique au PIC s’il lit ou
ou écrit grâce aux lignes RD (Read) et WR (Write). D’où
l’appellation de port parallèle ESCLAVE. Esclave, puisque c’est le microprocesseur externe qui donne les
ordres, notre PIC ne fait qu’exécuter.
16
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
6-Le
Le circuit de génération d’horloge
Pour faire battre le cœur de notre PIC, on a besoin d’un circuit de génération d’horloge. Avec les PIC «
Mid Range », plusieurs options possibles : circuit RC (résistance + condensateur), ou circuit résonateur
céramique, ou oscillateur à quartz... Le mode de fonctionnement est déterminé au moment de la
programmation du PIC par des « bits de configuration » qui sont en fait des emplacements de mémoire non-
volatile. Pour générer un « cycle d’instruction », il faut 4 cycles d’horloge. Autrement dit, si votre quartz
q bat
à 20 MHz, les instructions du programme s’exécutent à une cadence de 5 MHz.
7-Le TIMER0
Dans le passé, le Timer0 s’appelait RTCC. C’est un compteur 8 bits (0 à 255) simple, qui compte des
impulsions soit internes, soit d’une source externe. On peut par ailleurs lui appliquer une pré-division
pré
programmable entre 1 et 256. On peut librement lire ou écrire dans le registre de comptage associé. On peut
donc le pré charger avec une valeur, à partir de laquelle il comptera jusqu’à atteindre 255.
Une fois le registre de comptage plein, il peut générer une interruption. Étant donné qu’une fois configuré il
fonctionne quasi-indépendamment
indépendamment du microprocesseur, on pourra s’en servir comme base de temps.
8- le TIMER1
Le Timer1 fonctionne sur le même principe que le Timer0, mais avec un registre de comptage plus gros :
16 bits au lieu de 8, ce qui étend notablement ces capacités de comptage. De plus, il possède un mode de
fonctionnement particulier : on peut l’utiliser en association
association avec un des modules CCP (modules de capture
et de comparaison).). Voyons rapidement le mode « capture » : lorsqu’un événement survient sur l’entrée du
module CCP, la valeur du Timer1 est lue. Comme on connaît la fréquence de comptage, on peut en quelque
sorte « chronométrer » la survenue d’un événement. Exemple : si l’entrée du module CCP est reliée à un
capteur qui délivre une impulsion à chaque tour de l’arbre d’un moteur, la valeur contenue dans le registre
du Timer1 au moment de l’impulsion est le reflet
re de la vitesse de rotation.
Voyons maintenant le mode « comparaison » : Le Timer1 compte en continu, et une interruption est générée
chaque fois que la valeur du compteur est égale à celle qu’on aura pré chargée dans le registre de
comparaison. On peut s’en servir pour, par exemple, générer un signal carré.
17
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
9-Le TIMER2
Le Timer2 a un fonctionnement différent des Timer0 et Timer1. C’est un compteur 8 bits avec pré-diviseur
pré
et post-diviseur.
diviseur. On s’en sert pour générer des signaux carrés, ou, en association
association avec le module CCP, des
signaux PWM. PWM étant l’acronyme de « Pulse Width Modulation » ou, en français, Modulation de
Largeur d’Impulsion (MLI).
On en a parlé au moment de voir les Timer1 et Timer2 ; on a deux modules CCP sur le PIC. CCP pour «
Capture, Compare, PWM ».
imers, ils vont nous permettre de générer des signaux à modulation de
En association avec les deux Timers,
largeur d’impulsion (PWM) pour, par exemple, faire varier la vitesse d’un moteur à courant continu, réguler
le courant (et donc la luminosité) dans une ampoule…
Ils vont également nous permettre de comparer l’occurrence d’un signal en entrée avec la valeur du
compteur Timer1, réalisant ainsi un chronométrage de l’événement en question (par exemple : indication de
la fréquence de rotation d’un moteur). Ils vont encore nous permettre de générer des signaux carrés, et cela
de manière quasi-indépendante
indépendante du reste du microcontrôleur qui pourra continuer à vaquer à ses occupations.
11-Le convertisseur
seur Analogique – Digital 10bits :
Le convertisseur A/D convertit le signal analogique présent sur une de ses 8 entrées en son équivalent
numérique, codé sur 10 bits. Les pattes AN2 et AN3 peuvent être utilisées comme références de tension ou
comme entrées analogiques standard, les références de tension étant dans ce dernier cas prises sur les
tensions d’alimentations du PIC : VDD et VSS. (VDD pour le + et VSS pour le -). - On peut donc numériser
jusqu’à 8 signaux analogiques. Pas tous en même temps, bien sûr, étant donné qu’il n’y a qu’un seul module
de conversion pour 8 signaux d’entrée multiplexés. Mais si vos signaux n’évoluent pas trop vite (fréquence
basse), vous pouvez numériser le signal sur la patte AN0, puis celui sur AN1…
Les paramètres
res important dont il faudra tenir compte sont :
• La résolution du convertisseur. Ici 10 bits, donc meilleur qu’un convertisseur 8 bits, mais moins précis
qu’un 12 bits…
• Le temps de conversion.
• La rapidité d’évolution des signaux présents sur les entrées
entr (leur fréquence pour des signaux périodiques).
• Le nombre de signaux à numériser.
En effet, pour un signal périodique, la fréquence d’échantillonnage doit être au moins deux fois supérieure à
la fréquence du signal.
18
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
12-L’USART
L’USART ou Universal Synchronous Asynchronous Receiver Transmitter est l’un des deux modules de
communication série du PIC ou SCI en anglais (Serial Communication Interface). Comme son nom
l’indique, elle peut établir une liaison synchrone ou asynchrone, recevoir et transmettre des données, selon la
manière dont elle est configurée. C’est son côté « je peux tout faire » qui lui vaut l’attribut « Universal ».
Concrètement, l’USART permet de communiquer avec le reste du monde : un ordinateur ou tout autre
matériel équipéé d’une interface série RS232, des circuits intégrés convertisseurs Numérique/Analogique ou
Analogique/Numérique, des EEPROMs série…
13-Le
Le SSP, Synchronous Serial Port
L’utilisation de l’un de ces deux modules de communication, USART ou MSSP dépend donc
essentiellement du protocole de communication nécessaire. Schématiquement, l’USART est bien adaptée
pour communiquer avec le reste de l’univers via la célèbre interface RS232 alors que le MSSP permet de
communiquer aisément avec d’autres composants électroniques à interface série. Une dernière remarque par
rapport aux interfaces de communication : certains PIC (mais pas le 16F877) intègrent une interface USB ou
un module de communication Ethernet.
19
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
• L’OSCILLATOR START UP TIMER : une fois la temporisation du Power-Up Up Timer écoulée, c’est au
tour de l’Oscillator Start Up Timer de prendre le relais. Il s’agit d’une temporisation dont le but est de
permettre au circuit de l’oscillateur de démarrer proprement. En effet, de la même manière que la tension
d’alimentation met un certain temps à se stabiliser, l’oscillateur a besoin de temps pour démarrer et se
stabiliser
• Le POWER-ON RESET : à la mise sous tension, lorsque VDD est détecté, ce module génère une
impulsion de reset, ce qui lance le Power-Up
Power Timer et remet un certain nombre de registre du PIC dans un
état déterminé. Habituellement on utilise un circuit externe à résistance / condensateur
condensateur pour générer ce «
pulse » de reset. Mais sur le PIC, à condition que l’apparition de la tension d’alimentation soit assez «
énergique » vous pouvez vous passer de ce circuit RC. On ramène juste la tension d’alimentation à travers
une résistance appropriée sur la patte « MCLR » (Memory CLeaR).
• Le WATCHDOG TIMER : C’est le « Chien de garde » (watchdog en anglais) du PIC. S’il est utilisé, ce
timer doit être périodiquement remis à zéro par le programme, car, s’il « déborde », il place le PIC en mode
Reset. Ainsi, en cas de plantage de votre programme le PIC est redémarré automatiquement.
15-L’In-Circuit Debugger
Ce module permet de simplifier la phase de débogage des programmes. Une fois activé,
il donne accès à des fonctionnalités avancées de débogage. Celles-ci sont exploitées
par le module ICD de MPLAB, l’environnement de développement intégré de Microchip.
Vous pouvez alors suivre « en live » l’évolution de votre programme entrain de s’exécuter
sur le PIC, poser des points d’arrêt, lire le contenu des registres, etc.
16-Low-Voltage
Voltage Programming et ICSP (In-Ci
(In rcuit Serial Programming)
Comment se passe
asse la programmation ICSP ?
- On alimente le PIC avec sa tension de programmation, généralement 13V
- On utilise pour transférer le programme les lignes RB6 (qui devient l’horloge
cadençant le transfert) et RB7 (pour transférer les données en écriture ou lecture).
On à donc besoin d’une tension de programmation,
programmation plus élevée que la tension
d’alimentation normale.
20
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
C’est pour le cas standard, mais grâce au module « Low Voltage Programming », il y a moyen de faire la
même chose en ayant pas besoin de la tension de programmation.
Il y a également un autre moyen de programmer notre PIC : l’utilisation d’un Boot loader. Qu’est-ce
donc ? Un boot loader (traduction littérale : « chausse-pied
chausse ») est un petit bout de programme que l’on
implante dans la mémoireoire du PIC et qui va « charger » le programme que vous voulez implanter dans la
mémoire du PIC. Ici, plus besoin de programmateur. Si votre PIC est équipé d’une interface série, ou
USB, ou autre, vous pouvez transférer le programme via cette interface. C’est C’ le boot loader, en
coordination avec le logiciel ad’ hoc sur votre ordinateur, qui va se charger du transfert et de l’écriture en
mémoire programme. Le boot loader reste ensuite inactif dans la mémoire du PIC pendant que votre
programme s’exécute normalement. Au prochain démarrage du PIC, si le boot loader détecte une nouvelle
tentative de transfert de programme sur l’interface sélectionnée (série, USB,…) il le charge et remplace
l’actuel. Sinon il passe la main au programme actuel.
Ce mécanismee est surtout très pratique dans les phases de prototypage où de nombreux transferts son
nécessaires, d’autant plus que la vitesse de transmission des données est beaucoup plus rapide qu’avec un
programmateur. Ici encore, la programmation se fait sur un mode
mode série, mais comme on ne passe pas par un
programmateur on à pas accès à la tension de programmation. L’utilisation du module « Low Voltage
Programming » prends ici tout son sens.
Un certain nombre d’événements sont susceptible de générer des interruptions : fin de conversion de
signal analogique, écriture en mémoire EEPROM terminée, débordement de Timer, USART, SSP,
changement d’état d’une entrée de port….
Si votre programme comprend une routine de gestion de cette interruption, le déroulement normal
s’interrompt et la routine de gestion de l’interruption est exécutée.
Le gros avantage de ce mécanisme, c’est que le microcontrôleur peut vaquer à ses occupations sans être
obligé de scruter en permanence si telle ou telle action a eu lieu. Par exemple, si un clavier est raccordé au
PIC, pas besoin de surveiller en permanence si une touche a été activée.
activée. Si c’est le cas, le changement d’état
sur le port générera une interruption. Le PIC sera ainsi mis au courant qu’un changement a eu lieu et
exécutera les actions adéquates.
21
Université Abou Bakr Belkaïd Tlemcen
Faculté de Technologie
Département de Génie Biomédical
Le mode Sleep est un mode de fonctionnement particulier particulier du PIC dans lequel celui-ci
celui réduit sa
consommation électrique au minimum. Il est presque entièrement désactivé, son oscillateur est éteint. Le
PIC est en mode « veille » !
Pour sortir de cette torpeur, il faut un des événements suivant :
- Reset du circuit, ou
- Réveil par le Watch-Dog
Dog Timer (ci celui-ci
celui est activé, il continue de fonctionner en mode SLEEP)
- Interruption générée par un module périphérique (Timer, convertisseur A/D, changement d’état de port,
SSP….)
22