Micro Controleur
Micro Controleur
Micro Controleur
Le
dveloppement
des
applications
base
des
et
ses diffrentes
ressources
internes,
Introduction :
Un microcontrleur se prsente sous la forme dun circuit
lectronique intgr runissant un certain nombre dlments
construit autour dun microprocesseur.
Il effectue entre
autres :
-oprations arithmtiques (addition, multiplication)
logiques (ET, OU, ),
et
AT9OS85l5
MICROSHIP :
l6C7l
MOTOROLA : 68HC5, 68HC11, 68HCl6, 6834O ; SEAGATETHOMSOM : ST6, ST9 ; INTEL : 8O3l, 8O5l
Utilisation:
Les
systmes
intelligents
automatiques,
intgrant
une
carte
FAX/MODEM,
minitel,
automates
programmables,
beaucoup
plus
facile
mettre
en
uvre
qu'un
Inconvnients
- Systme
de
dveloppement onreux,
- Programmation
- Faible consommation,
ncessitant un matriel
- Cot rduit.
adapt
Lhistoire du microcontroleur :
De l'ordinateur au microcontrleur :
Le diagramme ci-dessous
Figure 1
L'avnement des transistors (1958), des circuits intgrs (1968)
et des circuits intgrs haute densit (1978) a permis de
construire des ordinateurs de plus en plus petits et de plus en
plus puissants.Chacune des intgrations laisse leurs traces dans
les
diffrents
noms
miniordinateur,
que
l'on
rencontre
microprocesseur,
aujourd'hui
micro-ordinateur,
en
1968.
Voici
les
grandes
tapes
d'volution
carte.
et
microcontrleurs
d'aujourd'hui.
ordinateur
conu
autour
d'un
microprocesseur.
en
1980.
ragir
des
vnements
plus
rapides.
rassemble
les
lments
essentiels
et
vive
interfaces
pour
les
donnes),
d'entres-sorties.
units
Les
de microprocesseurs et
microcontrleurs
autres
permettent
composants
de
spars,
diminuer
la
les
taille,
la
frquemment
comme
les
utiliss
contrleurs
dans
des
les systmes
moteurs
embarqus,
automobiles,
les
schma
fonctionnel
dun
microcontrleur
peut
tre
ROM
RAM
EEPROM
COP
Timer
CAN
Interface parallle
Interface srie
Microcontrleur
Contenu :
La
structure
interne
d'un
microcontrleur
typiquement :
-Une unit de calcul et de commande
-Mmoire ROM
-Mmoire RAM
-Un contrleur dinterruption
-Un compteur/temporisateur (timer)
-Des entres/sorties parallles (ports)
-Un UART (port srie)
Il peut aussi possder :
-Un Watchdog : (surveillance du programme)
-Une sortie PWM (modulation dimpulsion)
-Un CAN/CNA (Convertisseur analogique numrique)
-Un interface IC, CAN
Exemple Microcontroleur PIC 16F887 :
comporte
Les Mmoires :
la RAM (Random Access Memory) :
Presque tous les microcontrleurs en possdent en interne.
Elle a
le mme rle que sur PC, c'est une mmoire temporaire et
volatile
(les
donnes
disparaissent
lorsqu'il
n'y
plus
possible
d'ajouter
une
mmoire
RAM
externe
au
microcontrleur :
c'est un composant d'une vingtaine de broches qui peut faire
32Ko
Donc, ds que vous crerez une nouvelle variable dans votre
programme, elle sera loge dans la RAM. La RAM est accessible
en lecture et en criture.
La mmoire ROM : (acronyme de Read Only Memory) :
Cette mmoire n'est accessible qu'en lecture. Elle contient
gnralement
le
programme
de
l'utilisateur.
Une
fois
d'une
ROM
interne ;
c'est donc une programmation dfinitive.
L'EPROM
(Ereasable
Programmable
Read
Only
Memory) :
Cette mmoire possde les mmes proprits que la ROM sauf
que l'on peut l'effacer l'aide d'un Effaceur d'EPROM. Cet
appareil se charge d'insoler la mmoire avec des rayons UV
pour l'effacer ; ds lors, il est possible de la reprogrammer. Ce
type de composant est reconnaissable par une fentre
sur le botier d'o l'on peut voir le cur de la mmoire.
L'EPROM est accessible en lecture uniquement, et contient
gnralement le programme excuter.
l'EEPROM ( Electrically Ereasable Programmable Read
Only Memory) :
Cette mmoire est trs intressante car il est possible de
l'effacer et de la programmer lectriquement ; inutile donc
d'investir dans un
programmateur coteux. Cette mmoire peut contenir le
programme ou encore une variable qu'il est ncessaire de
Dclaration de i en
RAM
Affectation dune
valeur un
registre SFR
Les entres sorties :
Le microcontrleur possde beaucoup de broches directement
utilisables. Outre les habituelles broches d'alimentations et de
configuration, il y a ce qu'on appelle des Ports. A l'instar des PC,
il existe des ports srie et parallle.
Les ports sries servent le plus souvent comme port de
communication avec l'extrieur (un PC par exemple, pour
tlcharger un programme) ou pour dialoguer avec d'autres
l'extrieur.
Port en sortie :
il met des informations du microcontrleur vers l'extrieur.
Il existe deux types de sorties :
Sortie trois tats :
Fonctionnement
T1
Bloqu
T2
Bloqu
Sortie
Etat
haute
impdance
Bloqu
Satur
"0"
Satur
Bloqu
"1"
Satur
Satur
non utilis
Fonctionnement
Sortie
T2
collecteur
Satur
"0"
ouvert (2)
Bloqu
Dpend
du
montage
de la
capable
de
fonctionner.
Certains
microcontrleurs
Cadencement du microcontroleur :
Quartz
l Trs bonne Stabilit (10 ppm)
Rsonateur cramique
l Stabilit ( 0.5%)
l Moins couteux que le quartz
Les timers :
Frquence
+/-
*Calcul du temps mis par le Timer pour faire lever son drapeau :
T=T quartzValeur du pr-compteur fixe Valeur du
T=T quartzValeur du pr-compteur fixe Valeur du prpr-compteur
rglable
Nombre
d'impulsions
compter
compteur rglable
Nombre
d'impulsions
compter
Les Timers sont internes au microcontroleur.
Le 16F887 en compte 3 :
Timer0 et Timer2 sur 8 bits Timer1 sur 16 bits
Composition du Timer0 :
Exemple de programme :
Le Timer2 du 16F887 :
Il est legerement different du Timer 0 puisque le debut de
comptage est en principe 0x00 et que la fin de comptage est la
valeur a entrer.
Il possede comme le Timer 0 un pre-compteur fixe et un precompteur variable (3 valeurs possibles : 1, 4 et 16). C'est aussi
un compteur 8 bits.
T MAX=
14.106416256=4,096ms
Originalite de ce Timer :
- Le flag ne se leve pas systematiquement a chaque fin de
comptage.
Existance d'un post-compteur.
- Ce post-compteur peut prendre chaque valeur entiere entre 1
et 16.
Exemple pour un post-compteur de 4 :
Exemple de
voidprogramme
tempo_timer2 (:void ); //
tempo avec le timer2
void init ( void ); // initialisation
des priphriques
void main ( void )
{
init(); // initialisation des
priphriques
while ( 1 ) // boucle infinie
{
PORTB.1 = !PORTB.1; // on change
l'tat de RB1
tempo_timer2(); // tempo de 50
ms
}
}
void tempo_timer2 ( void ) //
tempo avec le timer2
{
TMR2IF = 0; // initialisation du
drapeau li au timer2
while ( TMR2IF == 0 ); // attente
de la leve du drapeau
}
void init ( void ) // initialisation des
priphriques
{
TRISB.1 = 0; // RB1 configur en
sortie
PR2 = 239; // Valeur dfinie de fin
de comptage
T2CON = 0x66; // configuration du
Le Timer1 du 16F887
Particularites de ce Timer 1 :
Principe de fonctionnement similaire au Timer0
Le pre-compteur ne peut prendre que quatre valeurs : 1, 2, 4 ou
8.
Le compteur est un compteur 16 bits :
Registre de comptage compose de deux registres de 8 bits :
TMR1H et TMR1L
chien
de
garde,
lectronique ou
en
anglais watchdog,
un logiciel utilis
est
un circuit
en lectronique
C'est
une
protection
destine
gnralement
il
est
ralis
est
par
logiciel,
rgulirement
il
s'agit
remis
en
zro.
gnral
Si
le
ordonn.
Le
chien
de
garde
permet
aussi
n'est
effectue (dans
la
mmoire
vive
en
Le watchdog interne :
Un watchdog interne (c. d. intgr dans un microcontrleur)
gnre galement un reset en cas d'erreurs.
Un tel reset ne se distingue en gnral pas de celui, qui est
gnr de faon externe.
disfonctionnement
dans
cette
procdure
de
Dmarrage du watchdog :
Le dmarrage du watchdog seffectue de deux manires :
De faon hardware aprs le reset. Cela prsente l'avantage
que le processus de contrle du microcontrleur dbute son
dmarrage.
CAN
(Controller
Area
Network)
est
un
bus
de
principe
de
diffusion
gnrale.
En
effet,
lors
de
la
en
servant
dintermdiaires.
Par
dfinition,
ils
quelles
que
soient
les
conditions
mtorologiques
concernent;
elles
ignorent
simplement
les
autres.
correspondent la valeur 8.
Data field sont les donnes transmises par la Data frame. Il
peut contenir de 0 8 octets, o chaque octet est transmis
avec le bit de poids fort en premier. CRC field est compos de la
squence de CRC sur 15 bits suivie du CRC delimiter (1 bit
rcessif). La squence de CRC (Cyclic Redundancy Code)
permet de vrifier l'intgrit des donnes transmises. Les bits
utiliss dans le calcul du CRC sont ceux du SOF, de l'Arbitration
field, du Control field et du Data field.
ACK field est compos de 2 bits, lACK Slot et lACK Delimiter
(1 bit rcessif). Le noeud en train de transmettre envoie un bit
rcessif pour lACK Slot. Un noeud ayant reu correctement le
message en informe le transmetteur en envoyant un bit
dominant pendant le ACK Slot : il acquitte le message.
End of frame marque la fin des Data frame et Remote par une
squence de 7 bits rcessifs.
Bit-stuffing : pour les Data Frames et les Remote Frames, les
bits depuis le Start of frame jusqu' la squence de CRC sont
cods selon la mthode du bit stuffing. Quand un transmetteur
dtecte 5 bits conscutifs de mme valeur dans les bits
transmettre, il ajoute automatiquement un bit de valeur
oppose.
Outre les trames de donnes et de requte, on a donc
galement des trames derreurs (mises par nimporte quel
noeud ds la dtection dune erreur), et des trames de
surcharge (ces trames correspondent une demande dun laps
de temps entre les trames de donnes et de requtes
prcdentes et successives.
envoyer
ou
recevoir
un
message
partir
dun
Le CPU (microprocesseur ) :
Le processeur (microprocesseur) est le composant hardware
le plus connu d'un systme micro-programm. C'est l'unit
intelligente de traitement des informations.
Son
travailconsiste
lire
des
programmes
(des
suites
80.
L'interfaage
du
processeur
avec
lextrieur
RISC.
Cependant
certains
processeurs
sont
possibles
ses
pour
programmes.
permettre
Nanmoins,
l'utilisateur
ces
de
multiples
Architecture interne 2 :
de
commande
labore
tous
les
signaux
de
lAssembleur, le C ou C++.
Dans ce chapitre on va prsent de manire gnrales la
procdure de programmation en C des microcontroleurs PIC et
donner quelques exemple dapplication.
1. PRSENTATION.
Le langage C a fait son apparition en 1972 pour le
dveloppement du systme dexploitation Unix. Il est devenu
un standard de la norme ANSI en 1983. Lui, ainsi que son petit
frre le C++, sont trs utiliss pour le dveloppement
dapplications sous station Unix et PC. Depuis quelques annes
il a fait son entre dans le monde des microcontrleurs. Il
permet
de
bnficier
dunlangage
universel
et
portable
#include <sdtio.h>
// Directive de compilation indiquant
dinclure la bibliothque E/S standard
#include <reg_uc.h>
// Directive de compilation indiquant dinclure
la bibliothque spcifique au C
#define clear=0x00
// Directive de compilation indiquant des
quivalences
...
char val1=0xA5;
// Dclaration dune variable caractre avec
valeur initiale
int val2 ;
// Dclaration dune variable nombre entier
...
void tempo(char temps)
{
...
}
// Fonctions et procdures appeles
plusieurs fois dans le programme principal
int bintobcd(char bin)
{
...
return ...;
}
void main(void)
// Programme principal
{
DDRBA=0xFF
// initialisation et configuration
....
while (1)
// Boucle principale
{
...
tempo(100);
...
val2=bintobcd(val1);
...
}
}
void nmi(void)interrupt 0
// Sous programme
dinterruption
{
...
Le dbut
Remarques :
Dans la dclaration de certaines fonctions, on emploie le type
void qui signifie que la fonction ne renvoie ou nexige aucune
valeur
3.2 TYPES STRUCTURS.
oprateurs
arithmtiques
permettent
traditionnellee
deffectuer
:
Addition,
les
oprations
soustraction,
cette
structure
on
peut
raliser
deux
squences
structure
affecte
la
valeur
if (a<b) c=b-a;
else c=a-b;
prcdente
b-a c si a
*reg=*reg | m; //
opration bit bit
OU entre reg et m
}
void resetbit(char
*reg,const char n)
5. EXEMPLE.
char m=1<<n;
// variable m = 1
dcal de n fois
gauche
*reg=*reg & ~m;
Conclusion :
A
lapplication
while (1)
// boucle principale
en C.
{
if (testbit(DRA,0))
setbit(&DRB,5);
// mise 1 du bit 5
de DRB si DRA0=1
if (testbit(DRA,1))
resetbit(&DRB,5);
// mise 0 du bit 5
Conclusion Gnrale :
Llaboration de ce modeste travail nous a permis de
comprendre un peu le fonctionnement du microcontroleur
travers une tude thorique de ces diffrents ressources
internes ensuite de sinitier leur programmation en langage C.