Vous êtes sur la page 1sur 18

INSA CENTRE VAL DE LOIRE

Département GSI - 3ème année


MICROCONTROLEURS 1 (MIC1)

COURS POLY N°1

MICROCONTROLEURS

GENERALITES
RESSOURCES

F. COLAMARTINO
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
I- GENERALITES
Qu'est ce qu'un microcontrôleur?
Un MICROCONTROLEUR est un COMPOSANT, ("Circuit Intégré" = C.I. ou "Integrated Circuit"
= I.C.), rassemblant en un même boîtier (SINGLE-CHIP ou MONO-CHIP) des fonctionnalités
diverses, autour d'un « COEUR » constituant l'unité centrale du micro.
Ce COEUR caractérise la FAMILLE (PIC 16F/18F/24F… de MICROCHIP, 68HC11/68HC05 de
MOTOROLA, ST6 de STMICROELECTRONICS, etc ...)
Types de boîtier ("package"):

DIP (traversant) SOIC (CMS) QFP(CMS) PLCC


CMS = Composant monté en surface (SMD = Surface Mounted Device)
Quel microcontrôleur allons-nous utiliser?
Le PIC 18F4520 de MICROCHIP (avec le compilateur C18 en langage C de MICROCHIP).
A quoi sert un microcontrôleur?
Un microcontrôleur sert à gérer des entrées/sorties =E/S (Input/Output = I/O) afin de contrôler un
système (processus).

Exemple de carte microcontrôleur:

+5V D +5V E
H +5V

R2 R3
U1 10k 10k
R6
POT 2 15
3 RA0/AN0 RC0/T1OSO/T1CKI 16
RA1/AN1 RC1/T1OSI/CCP2
connecteur RJ12 4
5 RA2/AN2/VREF- RC2/CCP1
RA3/AN3/VREF+ RC3/SCK/SCL
17
18 SW1
6 23 PUSHB UTTON
RA4/T0CKI RC4/SDI/SDA
J4 C 7
RA5/AN4/SS RC5/SDO
RC6/TX/CK
24
25 TX
SW2
SWITCH
33 26 RX
6 RB6/PGC 34 RB0/INT RC7/RX/DT
5 RB7/PGD 35 RB1 19
4 36 RB2 RD0/PSP0 20
3 37 RB3/PGM RD1/PSP1 21
2 +5V RB4 RD2/PSP2
38 22
1 R1 39 RB5 RD3/PSP3 27 +5V
10K 40 RB6/PGC RD4/PSP4 28
RJ12 RB7/PGD RD5/PSP5 29
/MCLR 1 RD6/PSP6 30 220V
C1 MCLR/VPP RD7/PSP7 R4 LS1
13 8 R

14
OSC1/CLKIN RE0/RD/AN5
RE1/WR/AN6
9
10
F +5V
3
5
22p Y1 OSC2/CLKOUT RE2/CS/AN7 4
VDD

VDD

VSS
VSS

20MHz 1
C2
2 MG1
1

D1 D2
11

32

12
31

PIC16F877A LED DIODE


RELAY SPDT
22p
B +5V
A R5
Q1

1k
2N2222
G
2

MOTOR AC

CONNECTOR DB9
U3
1
RX 13 12 6
8 R1IN R1OUT 9 2
R2IN R2OUT 7
TX 11 14 3
10 T1IN T1OUT 7 8
T2IN T2OUT C5
4
+

+ C3 1 2 9
CP C1+ V+ 5
3
4 C1- CP
C2+ C6 P1
GND

VCC

+ C4 5 6
CP C2- V-
+
15

16

MA X232A/SO CP

I +5V

F. COLAMARTINO 1 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
Exemples d'entrée:
- partie D : lecture de l'état d'un bouton-poussoir.
- partie E : lecture de l'état d'un interrupteur.
- Autres possibilités: lecture de l'état d'un capteur (proximité, présence, fin de course, …).
Exemples de sortie:
- partie F :: commande d'une LED.
- partie G : commande d'un relais déclenchant un moteur (ou autre).
- Autres possibilités: commande de TRIAC (système de puissance, chauffage, électrovanne, …),
commande d'afficheurs (7 segments, LCD,…), commande de validation, …
Toutes ces E/S sont des E/S NUMERIQUES (DIGITALES) ou "TOUT OU RIEN" (TOR).
C'est-à-dire qu'on lit (entrée) ou que l'on impose (sortie) des niveaux logiques 0 (0V) ou 1 (VCC).

Cependant il peut y avoir d'autres types d'entrée/sortie:


- partie H : entrée analogique (l'entrée est envoyée sur un module ADC généralement de
gamme d'entrée 0V à VCC). Entrées AN0 à AN12 pour le PIC 18F4520.
- Entrée mesure de fréquence/durée d'impulsion (entrée type "INPUT CAPTURE" utilisant un
TIMER).
- Sortie signal périodique/impulsion (sortie type "OUTPUT COMPARE" utilisant un TIMER).
- Sortie PWM (Pulse Width Modulation) = MLI (Modulation de Largeur d'Impulsion) utilisé
pour la commande de système de puissance (moteur, …).
Pour ces 3 derniers cas, on utilise une broche CCP1 ou CCP2 du PIC 18F4520.
"CCP" = "Capture Compare Pwm module".
- Partie I : bus de communication (voir cours du second semestre), ici liaison série asynchrone
avec coupleur de ligne de type RS232.
Remarque :
Le minimum à câbler sur une carte pour que le microcontrôleur fonctionne est :
- Partie A : l'alimentation continue généralement 5V ou 3,3V.
- Partie B : l'oscillateur à Quartz (horloge). Certains µC peuvent avoir un oscillateur interne ou
RC mais souvent il est peu précis (voir plus loin pour les possibilités d'oscillateur).
- La broche de RESET (/MCLR = Master Clear pour MICROCHIP) : à relier à VCC
(inactif) ou à câbler ainsi : +V
C

RESET ou MCLR

On peut également avoir :


- Partie C : liaison (ici avec connecteur RJ12) pour programmation/déboguage in-situ.
Utilise le /MCLR ici.
Comment initialise-t-on les E/S? Comment les utilise-t-on?
Les E/S sont "rassemblées" en PORT (Voir polycopié PERIPHERIQUES).
 On détermine tout d'abord suivant l'utilisation (regarder le schéma de la carte) s'il s'agit d'une entrée
ou d'une sortie. En effet, une E/S ne peut pas avoir les 2 utilisations en même temps.
 On configure une broche en entrée ou en sortie en initialisant le registre de DIRECTION du PORT.
Exemple sur le PIC18F4520 (utilisé en TP) : pour configurer RB0 en entrée et RB3 en sortie, il faut :
TRISB 0 1
bit3 bit0
Chez MICROCHIP : 0  sortie
1  entrée

F. COLAMARTINO 2 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
ATTENTION : la plupart des E/S peuvent être associées à des modules internes (voir ressources
internes). Généralement ces modules sont désactivés au RESET (à la mise sous tension) mais
certaines E/S peuvent être par défaut associées à une autre fonction.
Exemple : certaines entrées des PIC sont souvent configurées par défaut en entrée analogique
(associées au module ADC) ou en entrée de comparateurs analogiques (module comparateur).
Fonction 1 Fonction 2

 On utilise le PORTx (PORTA, PORTB …. ou PORTE).


- Si le port (ou certain bit du port) est utilisé en sortie :
On écrit dans le registre LATx ou PORTx.
Exemple sur le PIC18F4520 (utilisé en TP) : pour écrire un 1 sur RB3 (en sortie), il faut imposer :
LATB ou 1
PORTB bit3

- Si le port (ou certain bit du port) est utilisé en entrée :


On lit dans le registre PORTx.
Exemple sur le PIC18F4520 (utilisé en TP) : pour lire sur RB0 (en entrée), il faut lire :
PORTB ?
bit0
Le ? signifie que l'on peut lire 1 ou 0 suivant ce qui est imposé sur l'entrée par le système.

La structure d'une broche d'un PORT du PIC 18F4520 est la suivante :

Qu'est ce qu'un registre?


C'est un emplacement mémoire spécifique (1 octet soit 8 bits) dédié à des fonctionnalités de chaque
périphérique ou module interne au microcontrôleur.

exemple : le registre T0CON qui permet


d'initialiser le TIMER0 du PIC 18F4520
est à l'adresse FD5h du plan mémoire de
donnée (voir plus loin). Chaque bit a
une fonction particulière (voir
Datasheet). Ici ils sont accessibles en
lecture/écriture (R/W) et valent 1 à la
mise sous tension (POR = Power On RESET).
F. COLAMARTINO 3 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
Quelles sont les possibilités d'oscillateur (horloge) pour un microcontrôleur?
Les microcontrôleurs nécessitent au minimum un oscillateur pour fonctionner (rythme l'exécution des
instructions de l'Unité Arithmétique et Logique UAL).
Chaque microcontrôleur fonctionne en utilisant un ou plusieurs types d'oscillateurs (configurable par les
bits système au démarrage).
Pour illustrer ces possibilités on présentera les différents types d'oscillateur du PIC18F4520 étudié.
Il possède 10 modes d'oscillateurs possibles avec la possibilité de faire sortir l'oscillateur sur différentes
broches du microcontrôleur (voir section 2.0 OSCILLATOR CONFIGURATIONS).
Les principaux modes sont:

Oscillateur à Quartz externe:


C'est le type d'oscillateur le plus courant qui existe sur la grande majorité des microcontrôleurs.

On devra préciser dans les bits de configuration du microcontrôleur le type de Quartz utilisé (LP,XT,HS).
L'oscillateur de type LP est à utiliser pour optimiser la consommation de certains systèmes embarqués
qui ne nécessitent pas un fonctionnement rapide.

Oscillateur à Quartz interne:


Certain microcontrôleur possède un Quartz interne et permet ainsi de "libérer" les 2 broches OSC1 et
OSC2 qui pourront ainsi être utilisées en Entrée/Sortie classique.
Le PIC18F4520 a un Quartz interne de 8 MHz.
La fréquence de ce Quartz peut être divisée par un post-diviseur (postscaler) et prendre les valeurs:
8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 31.25kHz

Oscillateur RC externe:

Les 2 modes diffèrent


selon que le signal
d'horloge ressort vers
l'extérieur sur différentes
broches (possibilité de
vérification de l'horloge)

Ce type d'oscillateur permet d'économiser sur le coût du système mais ne peut être utilisé que pour des
systèmes ne nécessitant pas une grande fréquence et une grande précision (incertitudes des composants)
et tolérant une dispersion et une dérive de la fréquence (dérive selon la tension ou la température).

Oscillateur RC interne:
Le PIC18F4520 possède un oscillateur RC interne à 31kHz

F. COLAMARTINO 4 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
Oscillateur externe:
L'oscillateur peut également provenir d'un système externe (oscillateur forcé).

Ce type d'oscillateur peut


être utilisé pour
synchroniser plusieurs
micros entre eux.

Possibilité d'augmenter (multiplier) la fréquence de l'oscillateur par PLL:


Certain microcontrôleur ont un synthétiseur de fréquence (PLL) qui permet de multiplier la fréquence
(externe ou interne). Certains sont programmables (multiplication par 2, 4, 8 …) ou fixe.
Le PIC18F4520 possède une PLL fixe permettant de multiplier la fréquence par 4.

Résumé des différentes configurations de l'oscillateur (horloge) du PIC18F4520:

Qu'est que le mode SLEEP d'un microcontrôleur?


Afin d'optimiser la consommation, certains microcontrôleurs peuvent être mis en mode SLEEP (veille)
par la commande sleep( ) qui permet d'arrêter l'horloge du CPU. Le réveil est provoqué par un évènement
externe (interruption, reset, watchdog qui seront présenté plus tard).
Le PIC18F4520 peut fonctionner en mode RUN (normal), IDLE (repos) ou SLEEP (veille).
Le mode IDLE permet d'arrêter l'horloge du CPU mais pas des périphériques.

Pour plus de détails, consulter


la section 3.0 POWER-
MANAGED MODES de la
datasheet complète du
PIC18F4520 téléchargeable sur
le site de Microchip

F. COLAMARTINO 5 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
Quelle est la différence avec un microprocesseur?
Dans un MICROPROCESSEUR (comme le 6809 par ex.), les connexions aux broches (pins ou
"pattes") du composant sont majoritairement réservées aux BUS (Adresses, Données, Contrôles).
Elles sont dans un MICROCONTROLEUR réservées aux ENTREES/SORTIES (E/S), ports
parallèles, liaisons séries (USART/SCI, SPI, I2C,…), ADC (Analog-to-Digital Converter), etc...
Le MICROPROCESSEUR est l'élément indispensable d'une configuration que le
concepteur/développeur va adapter à son besoin, en lui adjoignant des fonctions externes (circuits
intégrés, cartes, etc...) à la manière d'un MECANO.
Le MICROCONTROLEUR (au moins en mode MONO-CHIP) est figé dans sa configuration.
Le concepteur/développeur doit donc CHOISIR le composant dans l'offre faite par les constructeurs.
Ce choix technique est un élément déterminant dans la gestion de projet d'un développement, qui doit
intégrer d'autres paramètres: la connaissance d'une famille, la disponibilité d'outils de développement,
les coûts des composants, l'intérêt d'un investissement éventuel vers une famille ou un micro récent, la
pérennité, etc ...
Remarque: Certain microcontrôleur peuvent être configuré pour fonctionner comme un microprocesseur.
Le MODE ETENDU MULTIPLEXE (Extended Multiplexed Mode), permettant une extension des
ressources externes par la génération d'un BUS ADRESSE et d'un BUS DONNEES assimilant le
microcontrôleur à un microprocesseur (ex: le 68HC11 de MOTOROLA).
Avantages d'un microcontrôleur:
BUS ADRESSES

BUS DONNEES
CONTROLES

PORTS liaison ADC


P PROM RAM TIMER
E/S // série SCI /DAC

Décodages
Reset
Watch dog

TIMER
PORTS
SCI

UC
OU
RAM PROM

Un MICRO-CONTROLEUR rassemble sur le même circuit des RESSOURCES et


FONCTIONS. Outre l'UNITE CENTRALE ou CPU, la PROM programme, la RAM on peut
trouver "A BORD" des E/S parallèles ou BITS d'entrée/sortie, un TIMER, une liaison série SCI,
etc...
Un MICROCONTROLEUR peut ainsi remplir des fonctions avec un minimum de composants
extérieurs, avec des encombrements et des coûts réduits.

F. COLAMARTINO 6 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
II-STRUCTURE/ARCHITECTURE D'UN PROCESSEUR/CONTROLEUR
Le terme "architecture" est improprement utilisé pour 2 caractéristiques différentes des P/C.
II-1- STRUCTURE D'UN PROCESSEUR/CONTROLEUR
On parle d' "architecture" ou de "structure" d'un P/C pour le mode de dialogue de l'UAL avec
la(les) mémoire(s). Il existe 2 types de "structure" d'un C:
 structure de Von Neuman
 structure de Harvard

La structure de VON NEUMAN a les caractéristiques suivantes:


Le C ne dispose que d'une seule mémoire qui contient: data Mémoire
code +
 les données UAL 8 données
 les instructions (programme) adress
(+ pile)
 (+ la pile) .
Ceci implique les caractéristiques suivantes:
- une seule mémoire (pour programme + données + pile).
- un seul bus de donnée (pour les données ou les instructions)
- un seul bus d'adresse
- la mémoire doit être parfaitement gérée et "découpée" en 3 partie:
 zone de code (instructions du programme) (généralement en PROM)
 zone de données (variables) (généralement en RAM)
 zone de pile (avec gestion du pointeur de pile) (généralement en RAM)
- codage des instructions sur plusieurs octets
- temps d'exécution plus long
exemple: le 68HC11 de MOTOROLA a une structure de Von Neuman

La structure de HARVARD a les caractéristiques suivantes:


Le C dispose d'une mémoire de programme
ET d'une mémoire de données. data data
Mémoire Mémoire
Il peut même exister une mémoire de pile (stack) 8 UAL N
données adress adress code
gérée de façon totalement interne. . .
Ainsi les caractéristiques sont les suivantes:
- plusieurs mémoires:
 mémoire de code (instructions du programme)
de mots de 16 bits pour les 18F4520. pile
 mémoire de données (variables) de mots de 8 bits.
 mémoire de pile (pour les appels à sous-programme).
- plusieurs bus de data (de programme et de données (et de pile)).
- plusieurs bus d'adresse et donc plusieurs zones d'adresse:
par exemple: la zone de données va de 000h à FFFh
et la zone de programme va de 0000h à 7FFFh pour le PIC18F4520
- le bus data de la mémoire de code peut être sur un nombre N important de bits
 codage des instructions sur un seul mot (word) (mot de 16 bits pour le 18F4520)
- exécution plus rapide

exemple: les PIC de MICROCHIP ont une structure de Harvard.

F. COLAMARTINO 7 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources

II-2- "ARCHITECTURE" CISC/RISC D'UN PROCESSEUR/CONTROLEUR


On parle d' "architecture" CISC ou RISC d'un P/C pour le NOMBRE D'INSTRUCTIONS
DANS LE JEU D'INSTRUCTION QU'IL DISPOSE.
Les 2 types d' "architecture" d'un P/C sont :
 CISC = "Complex Instruction Set Computer" = jeu d'instruction complexe
 RISC = "Reduced Instruction Set Computer" = jeu d'instruction réduit

L'architecture CISC a les caractéristiques suivantes:


L'UAL peut interpréter un grand nombre d'instructions différentes:
 165 instructions différentes pour le 68HC11 de MOTOROLA (conjugué aux
différents modes d'adressage, cela donne 338 "code opération" différents).
Donc les instructions doivent être codées sur un grand nombre de bits:
 plusieurs octets (1 à 5 octets pour le 68HC11 de MOTOROLA).
Donc il faut un temps plus long pour lire l'instruction, l'interpréter et l'exécuter:
 plusieurs cycles machine (2 à 7 cycles hors multiplication et interruption logiciel
sur le 68HC11, 10 cycles pour la multiplication)

L'architecture RISC a les caractéristiques suivantes:


L'UAL ne peut interpréter qu'un nombre réduit d'instructions différentes:
 35 instructions différentes pour le PIC16F877 de MICROCHIP.
 75+8 instructions différentes pour le PIC18F4520 de MICROCHIP.
Donc les instructions seront codées sur un nombre de bits réduit:
 un seul "mot" suffit pour une instruction (3 à 6 bits parmi les 14 bits du "mot" de
commande pour le PIC16F877 de MICROCHIP, le reste étant l'opérande - 4 à 8
bits parmi les 16 bits du "mot" de commande pour le PIC18F4520 de
MICROCHIP, le reste étant l'opérande).
Donc il faut un temps plus court pour lire l'instruction, l'interpréter et l'exécuter:
 peu de cycles machine (1 ou 2 cycles pour le PIC16F877 et 1 à 3 cycles pour le
PIC 18F4520 de MICROCHIP)
Par contre, il faut souvent plus d'instructions pour faire la même fonction /Von Neuman.
 plus difficile à programmer en assembleur
Ces instructions peuvent généralement effectuer des opérations assez complexe.
 ex: test d'un bit dans un registre puis saut d'une instruction si la condition est
vérifiée.

On peut résumer dans le tableau suivant:

Architecture Avantages Inconvénients


CISC - développement assembleur + simple - code + volumineux, + de mémoire
- code assembleur + lisible - temps d'exécution + long
RISC - code - volumineux, - de mémoire - développement assembleur + complexe
- temps d'exécution - long - code assembleur - lisible

De plus, les "cross-assembleur C" permettant de traduire du code C en code assembleur sont plus
simples à développer avec l'architecture RISC.

F. COLAMARTINO 8 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
II- RESSOURCES D'UN CONTROLEUR
II-1- GENERALITES
Les FONCTIONS ou RESSOURCES caractérisent le microcontrôleur dans la famille (PIC 16F877A,
PIC 18F4520, 68HC11A1, 68HC705C8, 16C65A, etc...)
Les ressources basiques sont:
- la PROM = "Programmable Read Only Memory" = "mémoire morte"
qui va contenir le programme, suite d'instructions qui seront exécutées séquentiellement par
l'unité centrale du microcontrôleur. Cette mémoire est non volatile (reste si coupure d'alim).
Cette zone programme peut être:
- en ROM (masquage constructeur)
Production en grande série (frais fixes importants, délais)
- en OTP ( One Time Programmable, zone programmable par l'utilisateur, une seule fois).
Production, petites séries.
- en EPROM (zone programmable par l'utilisateur et effaçable par UV)
Phase de développement, prototypes, remise à niveau produit coûteux.
- en EEPROM (idem effaçable électriquement) possibilité de mise à jour.
Utilisée pour sauvegarder des données (paramètres, code secret, calibration, …)
- en FLASH (idem EEPROM). Possibilité mise à jour in situ.
Une fois programmée, la PROM n'est plus accessible qu'en lecture ("Read Only Memory"
= mémoire à lecture seule) sauf pour l'EEPROM et la FLASH où on peut initialiser ou
modifier certaines données en suivant une procédure ce qui implique un temps d'écriture
beaucoup plus long que dans une RAM (mémoire à accès direct en écriture) : à éviter.
- la RAM = "Random Access Memory" = "mémoire vive"
qui va contenir les variables de l'application, être utilisée pour la pile, les tables de données,
etc... Cette mémoire est volatile (s'efface si coupure d'alimentation).
- les PORTS d'entrées/sorties. Bits rassemblés ou non en octets disponibles comme entrée, sortie
ou bidirectionnels (c'est-à-dire programmable en entrée ou en sortie).
- le TIMER, élémentaire ou sophistiqué, pratiquement tous les microcontrôleurs disposent au
moins d'un TIMER utilisable pour fixer des intervalles de temps (base de temps) ou pour
générer un signal périodique en sortie (mode Compare) ou mesurer des intervalles de temps ou
la fréquence d'un signal en entrée.
- Le WATCH DOG ("chien de garde") ou COP "Computer Operating Properly"( COP=
"policier") est également fréquemment A BORD des microcontrôleurs, activé il permet un
"AUTO-RESET" du circuit en cas de "PLANTAGE" si on ne le "réarme" pas régulièrement.
D'autres fonctions sont quelques fois disponibles:
- ADC ("Analog to Digital Convertor") = entrées analogiques, convertisseurs généralement
sur 8, 10 ou 12 Bits. Plus rarement on trouve des DAC = sorties analogiques.
- PWM (Pulse Width Modutator), utilisé pour commander des systèmes de puissance tel des
hacheurs en pont pour la commande de moteurs.
- Des bus de communication (voir 2ème partie MICROCONTROLEURS 2)
- la SCI (Serial Communication Interface) ou UART (Universal Asynchronous Receiver
Transmitter), permet d'exploiter une liaison ASYNCHRONE adaptable en RS232.
Autre appellation: SIO, Serial Input Output.
- la SPI (Serial Peripheral Interface), permettant la connexion de composants de
ressources externes selon le protocole SPI de type liaison synchrone (EEPROM, ADC,
HORODATEURS, …).
- des interfaces de BUS (I2C, CAN, LIN, USB, Ethernet, …)
- autres: SUPERVISEUR de tension d'alimentation, JTAG entrée sortie série utilisable pour
le test et le développement, DTMF gestion des tonalités bifréquences téléphoniques, etc...

F. COLAMARTINO 9 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
II-2- RESSOURCES DU PIC 18F4520
Les caractéristiques et les ressources du PIC18F4520 de MICROCHIP sont indiqués dans la
dernière colonne de ce tableau :

Brochage (Pins diagram) : fonction 1/fonction 2/fonction 3

F. COLAMARTINO 10 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
Architecture interne du microcontrôleur PIC 18F4520 de MICROCHIP :

F. COLAMARTINO 11 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
On y trouve :
- l'UAL = Unité Arithmétique et Logique (ALU=Arithmetic and Logic Unit) ainsi que le
multiplicateur 8*8bits travaillant avec le registre/accumulateur de travail W (ou WREG).
C'est le cœur du micro qui décode les instructions du programme à exécuter. Ces instructions
sont décodées de façon séquentielle (un programme s'exécute toujours séquentiellement).
Le PIC18F4520 possède un multiplicateur 8*8bits intégré.
Le tableau ci-dessous donne les différences de temps de calcul pour des micros n'ayant pas de
multiplicateur intégré (routine de multiplication logicielle).

- les circuits spécifiques :


- oscillateur
- watchdog
-…

- la mémoire de programme (32koctets) et la pile (31 niveaux).

La pile sert à stocker l'adresse de retour lors d'appel à sous-programme et à la récupérer lors de
retour de sous-programmes.
On peut donc théoriquement appeler jusqu'à 31 sous-programmes (hors interruptions).

F. COLAMARTINO 12 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
- la mémoire de données de1536 octets (octets libres + les registres internes du micro).
1536 = 6 "banks" de 256 (FFh) octets

GPRs = General Purprose Registers = registres ou cases mémoire "vides". C'est là où seront
stockées les données.

SFRs = Special Function Registers = registres internes au microcontrôleur permettant de


configurer les périphériques/ ressources. Les noms de ces différents registres (ainsi que les noms
de chaque bit de chaque registre) sont définis dans le fichier include p18f4520.h.
Voir tableau ci-dessous :

F. COLAMARTINO 13 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources

- les ports d'E/S (PORTA, PORTB, PORTC, PORTD, PORTE) reliés aux broches.
- Les autres périphériques (TIMERS, ADC, MODULES CCP, USART, MSSP,…)
Il y a aussi une mémoire de donnée EEPROM permettant de sauvegarder certaines données
(données d'étalonnage, code secret, …) non volatiles.

F. COLAMARTINO 14 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
III- OUTILS DE DEVELOPPEMENT
Pour développer une application à base de microcontrôleur, il faut:
 un logiciel de programmation
 un système programmateur/debugger (matériel)
III-1- LOGICIEL DE PROGRAMMATION
Le logiciel de programmation est en général une "plate-forme" informatique ou IDE (integrated
development environment = Environnement de Développement Intégré) où l'on peut définir:
- Le matériel programmateur/debugger que l'on utilise.
- La configuration de l'environnement (C utilisé, bits de configuration, mode de
programmation…)
- Le fichier programme (.c ou .asm)
- Les fichiers liés au fichier programme (linker)
Rq: Les logiciels utilisés en TP sont MPLAB X associé au compilateur XC8 de MICROCHIP.
Autre possibilité: MPLAB IDE associé au compilateur C18 de MICROCHIP.

La programmation des C peut se faire généralement:


- En langage assembleur
- En langage C (compilateur C18 pour nous)
Langage assembleur:
C'est un langage de bas niveau, le plus proche du langage machine (code exécutable).
Ce langage étant différent pour chaque C, il faut que le programmateur le maîtrise.
Il ne doit être utilisé que pour des "petites" applications où le code doit être optimisé car les
ressources en mémoire sont faibles (grandes séries).

Langage C:
C'est un langage de haut niveau.
Il faut disposer d'un cross – assembleur C.
On développe le programme en C. Le logiciel permet alors de générer directement un code
exécutable. Certains logiciels permettent de générer le programme assembleur correspondant (en
général il désassemble le programme exécutable).
On peut éventuellement insérer des lignes de programme assembleur dans un programme C.
L'inconvénient est que le code n'est pas nécessairement optimisé.
De plus le fonctionnement pas à pas est délicat (une ligne C correspond souvent à plusieurs lignes
assembleur).
L'avantage est la souplesse et l'universalité du langage.

Rq: MICROCHIP met à disposition un cross-compilateur XC8 pour les PIC 8 bits tel que la série
18F, un cross-compilateur XC16 pour les PIC 24F et les DSPIC 30F et 33F et un cross-compilateur
C32 pour les DSPIC 32M. Tous fonctionnant sur MPLAB X.
Ces logiciels sont téléchargeables sur le site de www.microchip.com en version non optimisée
(l'optimisation du code fonctionne pendant 60 jours).

F. COLAMARTINO 15 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
III-2- MATERIEL de DEVELOPPEMENT
Le matériel de développement se compose d'un ordinateur, d'une interface (pour nous ICD3 de
MICROCHIP) et de la carte cible comportant le C.

CARTE CIBLE Interface


(ICD3)

Chaque constructeur (ou d'autres partenaires ou indépendants) développe des kits d'évaluation pour
certain de leur C. Ces kits disposent d'éléments pour communiquer avec le PC mais il faudra de
toute façon passer à l'application en développant votre propre carte.

Il existe ainsi 3 types d'interface:


- communication par liaison série:
Le C de la carte cible possède une liaison série et communique avec le PC.
Par exemple chez MOTOROLA un mode "bootstrap" est prévu pour le 68HC11. Ce
mode télécharge par la liaison série un programme "debugger" ou "moniteur" qui
permettra de dialoguer avec la carte, de faire du "pas à pas", etc…
Le problème est que ce mode utilise une ressource (la liaison série) qui n'est plus
utilisable. On doit placer le programme "moniteur" ainsi que le programme à exécuter
dans de la mémoire programmable électriquement (EEPROM ou RAM). La PROM
n'est pas utilisable dans ce mode.
De plus le programme "moniteur" a déjà fait certaines initialisations (pointeur de pile,
vecteur de reset, etc…). Ces initialisations seront à ajouter au programme final.
- Utilisation d'un émulateur:
Ce système permet de remplacer le C par un système avec une "sonde" qui vient
prendre la place du C. Le programme est strictement identique au programme final.
Aucune ressource du composant n'est utilisé.
Ces émulateurs sont souvent onéreux.
- Programmation "In Situ":
Certain C peuvent être programmé ou être en mode "déboggage" directement sur la
carte. On communique avec le C par 2 broches qui forme une liaison série synchrone.
On place généralement un connecteur (JTAG, RJ12, …) sur la carte cible. Lorsque le
C est programmé, on peut enlever du connecteur le câble de l'interface et la carte
devient totalement indépendante et s'initialise à la mise sous tension.
Les inconvénients sont la mise en place du connecteur sur la carte cible (coût,
encombrement) et l'utilisation des 2 broches en mode "deboggage" (une fois programmé
on peut réutiliser ces 2 broches).
L'avantage est la souplesse de programmation/deboggage et l'inutilité d'un
programmateur (voir ci-dessous).
Rq : on utilisera en TP l'interface ICD3 ("In-Circuit Debugging") de MICROCHIP pour
les C qui ont la liaison ICSP ("In-Circuit Serial Programming") (broches RB6-RB7).

Sauf dans le dernier cas, une fois le programme développé, il faudra programmer le composant avec
un programmateur puis le placer sur la carte cible qui deviendra indépendante.

F. COLAMARTINO 16 / 17
INSA Centre Val de Loire – Département GSI - 3ème année – microcontrôleurs 1 (MIC1)
cours – microcontrôleur – généralités/ressources
En résumé :

La difficulté principale dans le développement des microcontrôleurs est qu'il faut faire le lien entre
les différentes parties (hardware, software, ressources internes du microcontrôleur/Datasheet) et
savoir utiliser les documentations techniques et les outils de développement (debugger).

Doc/cours
Langage C

Schéma
de la carte

Doc outils
Datasheet de
du µC dévelop-
pement
MPLABX
/XC8

Programme
µC Interface
CARTE CIBLE ICD3

F. COLAMARTINO 17 / 17

Vous aimerez peut-être aussi