2006/2007
Introduction au MICROCONTROLEUR : COURS
Répartition horaire :
cours : 2h
TD : 4h
TP : 8h
Auteurs du document :
Myriam CHESNEAU-DEWEIRDT
Responsable du document :
idem
Intervenants
Myriam CHESNEAU-DEWEIRDT
André BETEMPS
Dernière mise à jour : 01/01/2007
1. INTRODUCTION AU
MICROCONTROLEUR
Unité de traitement de l’information de type
microprocesseur
+
Périphériques internes
→
Réalisation d’applications autonomes sans ajout de
composants externes
IUT ANNECY MPh MC 2007
1
alimentations
1. Présentation du circuit
1.1 Schéma de principe
Mémoire Mémoire RAM Mémoire
FLASH pour de travail EEPROM
stocker le pour stocker
(volatile)
programme les données
(permanente)
(permanente)
Unité Timer
-décodage instructions Compteur
Horloge -traitement
-calculs Ports
I/O
Circuits de
mise en route
et de veille
IUT ANNECY MPh MC 2007
2
IUT ANNECY MPh MC 2007
3
1.2 Les mémoires
Mémoire flash : (16F84)
contient le programme compilé
possède 1024 emplacements de 14 bits (taille d’une instruction)
conserve les données hors tension
RAM
permet le stockage des données temporaires nécessaires à
l’exécution du programme
possède 68 octets + 15 registres spécialisés de 8 bits
son contenu est perdu en cas de coupure
EEPROM
contient des données produites par le programme
conserve les données hors tension
IUT ANNECY MPh MC 2007
4
1.3 Unité « centrale »
Elle récupère les instructions du programme, les décode et les
exécute.
1.4 L’horloge
Elle reçoit un signal périodique issu d’un oscillateur, et fabrique
la référence « temps » du système.
Une instruction élémentaire est en général exécutée en 1 cycle,
soit 4 périodes du signal de l’oscillateur.
Avec un oscillateur à 4 Mhz, un µc PIC16F84-04 peut effectuer
un million (4 M / 4) instructions simples.
IUT ANNECY MPh MC 2007
5
1.5 Les circuits de mise en route et de veille
Ils permettent
de réaliser une bonne mise sous tension du système,
de le mettre en veille en cas de non utilisation,
de sortir convenablement du mode veille.
IUT ANNECY MPh MC 2007
6
2. Les périphériques
2.1 Ports A et B d’entrées – sorties :
Le port A fournit 5 entrées - sorties : RA0 – RA4
RA0 – RA3 :
En entrée : comprennent les niveaux TTL
En sortie : délivrent des niveaux TTL : 0 ou 5 V
RA4
En entrée, trigger de Schmitt pour convertir en TTL
En sortie : drain ouvert
Peut être connectée à l’entrée du timer pour du comptage
IUT ANNECY MPh MC 2007
7
Le port B fournit 8 entrées – sorties
RB0 – RB7 comprennent et reçoivent des niveaux TTL
En entrée : peuvent être connectées au 5 V par programme
de plus
RB0 peut être utilisée pour une interruption externe, elle
fonctionne alors en trigger de Schmitt
RB7 est utilisée pour charger le programme en mémoire
on peut décider par programme de générer une interruption si
la valeur d’une des lignes RB4 à RB7 a changé, quand elles
sont en entrée.
IUT ANNECY MPh MC 2007
8
2.2 Le compteur – timer
Le compteur-timer possède 8 bits.
Il compte les fronts montants ou descendants présents sur son
entrée, ( 0, 1, …254, 255, 0, 1 …)
Son entrée est
- un signal externe (RA4 : T0CKI) ou
- interne : l’horloge de fréquence fo = fosc/4.
On peut diviser la fréquence du signal d’entrée par 2 , 4, 8, 16,
32 ou 64 avant de l’appliquer en entrée du compteur : on utilise
le prédiviseur.
Un bit est positionné en fin de compte (255 -> 0), il peut alors
générer une interruption.
IUT ANNECY MPh MC 2007
9
En comptage : signal externe
Le compte s’incrémente sur chaque front de RA4 : T0CKl
Il est accessible dans un registre TMR0
En timer : signal de l’horloge (1 MHz)
Le compte s’incrémente sur chaque front de l’horloge interne
On peut positionner le compte à une valeur choisie dans le
registre TMR0
IUT ANNECY MPh MC 2007
10
Chargement
ou Compte
Oscillateur fo/4
Externe
Horloge
fo Diviseur
Clk Out
Source Externe Compteur
RA4(TO CKl)
IUT ANNECY MPh MC 2007
11
3. Les registres du PIC
Les registres spécialisés du PIC permettent
de définir le fonctionnement du PIC
de s’informer sur l’état du PIC
de configurer les périphériques
de communiquer (lecture / écriture) avec les périphériques
IUT ANNECY MPh MC 2007
12
3.1 Les registres du timer
TMR0 permet d’écrire et de lire le compte du timer/compteur
OPTION permet de définir, entre autres, les paramètres permettant
l’utilisation du timer/compteur
source de l’horloge du compteur
utilisation du diviseur
valeur du diviseur
A la mise sous tension, tous les bits sont positionnés à 1.
IUT ANNECY MPh MC 2007
13
NOT RBU INTEDG TOCS TOSE PSA PS2 PS1 PS0
RBi à Vcc Interruption Source Front Diviseur Pré chargement diviseur d’horloge
externe d’horloge source d’horloge
externe
1 : non 1 : front + 1: 1 : front – 1: Timer : Watchdog :
0 : oui 0 : front - externe(*) 0 : front + watchdog 000 : 2 000 : 1
0 : fH/4 0 : timer 001 : 4 001 : 2
(*) RB0 / (*) … …
INT RB4/TOCKl 111 : 256 111 : 128
INTCON…voir paragraphe suivant
IUT ANNECY MPh MC 2007
14
3.2 Le registre des interruptions
INTCON
permet le contrôle des interruptions et leur localisation et
indique la fin de compte du timer
GIE EEIE TOIE INTE RBIE TOIF INTF RBIF
Int non Int Int dépast Int Int Changt Dépast Int Changt
masquées EEPROM timer externe RB4-7 timer externe RB4-7
autorisées autorisée autorisée (RB0/INT) autorisée
autorisée
1 : oui 1 : oui 1 : oui 1 : oui 1 : oui 1 : oui 1 : oui 1 : oui
0 : non 0 : non 0 : non 0 : non 0 : non 0 : non 0 : non 0 : non
IUT ANNECY MPh MC 2007
15
3.3 Les registres des ports
TRISA : indique la direction des lignes du port A
1 : entrée, 0 : sortie
X X X Dir Dir Dir Dir Dir
RA4 RA3 RA2 RA1 RA0
PORTA : lecture – écriture du contenu du port A
TRISB : indique la direction des lignes du port B
1 : entrée, 0 : sortie
Dir Dir Dir Dir Dir Dir Dir Dir
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
PORTB : lecture – écriture du contenu du port B
IUT ANNECY MPh MC 2007
16
4. Programmation
4.1 Procédure et logiciels
Pour utiliser le PIC, il faut respecter les phases suivantes :
1. Écriture du programme dans un langage évolué
2. Traduction du programme en langage PIC (type assembleur
: 35 instructions)
3. Transfert du fichier obtenu en mémoire flash du PIC
4. Mise en fonctionnement du PIC
IUT ANNECY MPh MC 2007
17
Le positionnement d’une broche du PIC permet de choisir entre les
modes
Chargement du programme (PGN) pour la phase 3
Normal (RUN) pour la phase 4
IUT ANNECY MPh MC 2007
18
Nous utiliserons
L’éditeur de texte ConText pour écrire le programme en
langage C : fichier xxx.c, puis à partir de cette éditeur, nous
appellerons
Cc5x pour la création du fichier en langage PIC : [Link]
NTPicprogVf pour le transfert de ce fichier de l’ordinateur vers
la mémoire flash du PIC par liaison série
IUT ANNECY MPh MC 2007
19
4.2 Adresse des registres
Chaque registre possède une adresse dans la RAM :
Exemple : PORTB est un registre 8 bits situé à l’adresse 06 de la
RAM
Dans le logiciel utilisé, le nom d’un registre coïncide avec son adresse
PORTB = 0b01011100
permet d’écrire les 8 bits 01011100 à l’adresse 06 de la RAM
On peut utiliser les bases 2, 10 ou 16 :
PORTB = 0b01011100, PORTB =92, PORTB = 0x5C
Pour désigner le bit n°i du port XXX, on utilise XXX.I
Exemple TRISA.0 désigne le bit 0 du registre TRISA.
IUT ANNECY MPh MC 2007
20
Grâce à l’ajout d’un fichier en tête spécial (16f84.h), un nom est
associé à chaque bit de certains ports :
RA0 = 1
Permet de mettre à 1 le bit 0 du port A sans modifier les autres.
IUT ANNECY MPh MC 2007
21
On peut ajouter de telles définitions au sein du programme :
(en C)
# define TOIF INTCON.2
Permet de nommer TOIF le bit n°2 du registre des interruptions
INTCON
IUT ANNECY MPh MC 2007
22
4.3 Exemple de programmation des ports
Pour utiliser les lignes des ports A et B, il faut :
Définir la direction des lignes : entrée ou sortie
Écrire sur les lignes en sortie ou lire les lignes en entrée
On peut travailler sur un port en entier ou sur une ligne :
TRISA.0 = 0;
TRISB.5 = 1;
RA0 = RB5;
TRISB = 0b00000000;
PORTB = 0b01010101;
IUT ANNECY MPh MC 2007
23
4.4 Programmation du timer OPTION.210
(voir exemples en TD) PS2 PS1 PS0
prescaler
Chargement
ou Compte
TMR0
Oscillateur fo/4
Externe
Horloge
fo Diviseur
Clk Out
Source
Externe Compteur
INTCON.2
RA4(TO CKl) TOIF
OPTION.4
TOSE : source edge
OPTION.5 OPTION.3
TOCS : clock source PSA
IUT ANNECY MPh MC 2007
24
4.5 Remarques complémentaires
On travaille principalement avec des bits ou des octets.
On peut utiliser la représentation binaire avec le logiciel ConText :
Unsigned char octet;
Octet = 0b11001110;
IUT ANNECY MPh MC 2007
25
5. Interruptions
5.1 généralités nécessité de
mémoriser
l'endroit, les
programme variables….
arrivée utilisateur
interruption
4
1
3
traitement de
l'interruption :
lecture et
2
sauvegarde
IUT ANNECY MPh MC 2007
26
demande d’interruption
sauvegarde du contexte
traitement de l'interruption en exécutant des lignes de programme
: lecture et stockage des données
restitution du contexte et reprise de la tâche initiale
IUT ANNECY MPh MC 2007
27
5.2 Sources d’interruption
Le PIC utilisé en possède 4, le programme en cours peut-être
interrompu si
- un front (+ ou -) est présent sur RB0
- une des lignes RB4 à RB7 change d’état (lignes placées en entrée)
- le timer atteint la fin de son cycle (débordement)
- une écriture dans l’EEPROM est terminée
Pour utiliser une interruption, il faut
- autoriser les interruptions en général
- autoriser une (ou +) interruptions en particulier
5.3 cas du PIC
Voir documentation en TP pour la programmation
IUT ANNECY MPh MC 2007
28
IUT ANNECY MPh MC 2007
29