[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
100% ont trouvé ce document utile (1 vote)
506 vues11 pages

Chapitre 2: Le Microcontrôleur Pic 18F45K22.: 1 Présentation

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1/ 11

Chapitre 2 : Le microcontrôleur Pic 18F45K22.

1 Présentation.

Les microcontrôleurs PIC (ou PIC micro dans la terminologie du fabricant)


forment une famille de microcontrôleurs de la société Microchip. Le nom PIC
n'est pas officiellement un acronyme, bien que la traduction en «Peripheral
Interface Controller »(contrôleur d'interface périphérique) soit généralement
admise.

La famille des PICs est subdivisée à l’heure actuelle en 3 grandes familles : La


famille Base-Line , qui utilise des mots d’instructions de 12 bits, la famille Mid-
Range , qui utilise des mots de 14 bits (et dont font partie les 16F877A et
18F45K22), et la famille High-End , qui utilise des mots de 16 bits.

2 Caractéristiques du PIC18.
3 Architecture interne des microcontrôleurs PIC18.

Architecture interne

Bloc diagramme du PIC 18F45K22

 TIMERS : Microchip appelle TIMER des compteurs


 WDT : Watch Dog Timer (Chien de garde)
 (E)CCP : (Enhance) Capture/Compare/PWM
 Capture : permet la mesure de temps
 Compare : permet la production de signaux rectangulaires
 MSSP : Master Synchronous Serial Port (Port Série Synchrone Maître)
 SPI : communications séries synchrones sans protocole logiciel
 I2C : standard Philips, communications séries synchrones avec protocole
logiciel -A/E/USART : (Addressable/Enhanced) Universal Synchronous
Asynchronous Receiver Transmitter (RS232 –RS485)
 CAN : convertisseur analogique numérique sur 10 bits à28 entrées
multiplexées
Architecture externe :

4 Horloge du microcontrôleur PIC18.

Il existe différents types d’horloge (on compte jusqu’à12 types sur certains PIC). Elle peut
être soit interne, soit externe.

Avec une horloge externe et un oscillateur à quartz, on peut avoir des fréquences allant
jusqu'à64 MHz. Le filtre passe bas (Rs, C1, C2) limite les harmoniques dus à l’écrêtage et
réduit l’amplitude de l’oscillation, il n'est pas obligatoire.

Quelque soit l'oscillateur utilisé, l'horloge système dite aussi horloge instruction est obtenue
en divisant la fréquence par 4. Dans la suite de ce document on utilisera le terme Fosc/4 pour
désigner l'horloge système. Avec un quartz de 4 MHz, on obtient une horloge instruction de 1
MHz, soit le temps pour exécuter une instruction de 1µs. La configuration de l’horloge
s’effectue via plusieurs registres de configuration : CONFIG1H, OSCON, OSCTUNE etc.

Horloge externe secondaire


Horloge externe primaire

(quartz jusqu’à16 MHz)

Horloge interne primaire 16 MHz

(jusqu’à64 MHz si ×par 4 via PLL)

PLL . Phase
LockLoop, permet de
multiplier en interne la
fréquence par 4
Horloge interne secondaire 31.25 kHz (fréquence d’entrée
entre 4 et 16 MHz)
5 Organisation de la mémoire.

Les PIC18 sont à architecture HAVARD. Les espaces mémoires


programmes et données (appelés registres, les registres des
périphériques sont appelés registres spéciaux) sont distincts. Ceci implique la
création d’instructions et de processus différents pour l’accès données en ROM
et en RAM.

2^21 = 2097152 ⇒2Mo adressable 2^12 = 4096 ⇒4ko adressable au


au maximum maximum
6 Mémoire de programme.

Cette mémoire de 16 x 1024 mots de 16 bits sert à stocker le programme, mais


elle est accessible par programme et peut donc être utilisée comme une
extension de la mémoire EEPROM de données. Elle est non volatile (flash) et
reprogrammable à souhait (enfin , presque…). La mémoire programme s’étend
linéairement de l’adresse 0000h à l’adresse la plus élevées permise compte tenu
de la taille mémoire du circuit choisi. Dans le cas du Pic 18F45K22, il s’agit de
l’adresse 7FFFh. Au total, ce sont donc 32768 vecteurs de 8 bits que l’on peut
adresser (32 ko). Mais comme chaque instruction est au minimum codée sur 2
octets, le compteur ordinal ou PC, évolue de 2 en 2.

La mémoire Programme ou mémoire flash (32 ko)

Chaque position de 16 bits contient une instruction. L'emplacement du


programme peut se situer à n'importe quel endroit de la mémoire. Cependant il
faut savoir que suite àun RESET ou lors de la mise sous tension, le PIC
commence l'exécution àl'adresse 0000h. De plus, lorsqu'il y a une interruption,
le PIC va à l'adresse 0008h(haute priorité) ou 0016h(basse priorité) . Lorsque
l’on programme en bas niveau (assembleur), il est donc nécessaire de bien
organiser le programme si celui-ci utilise des interruptions.
7 Mémoire de données RAM ( EEPROM de données 256 Octets).

Le PIC 18F45K22 dispose de 256 octets (00hàFFh) de mémoire EEPROM de


donnée (mémoire non volatile). Cette mémoire permet la lecture et l’écriture de
données par l’intermédiaire de 4 ou 5 registres particuliers :

 EECON1 : registre de control 1


 EECON2 : registre de control 2
 EEDATA : registre de donnée
 EEADR : registre d’adresse (adressage sur 8 bits ⇒256 octets)
 EEADRH : registre d’adresse (extensions à1024 octets par ajout de
2 bits supplémentaires)

La procédure de lecture/écriture dans l’EEPROM est détaillée dans la datasheet


du PIC, nous n’en parlerons pas ici. Si nous devions programmer en assembleur,
il nous faudrait cependant connaître le déroulement des opérations.

256 octets est une très petite mémoire pour stocker des données. Dans certaines
cas, cela peut être suffisant mais très souvent on rajoute une mémoire de
stockage externe (composant EEPROM ou carte Flash). Par exemple :
datalogger.

8 Les instructions du microcontrôleur PIC18.


9 LES PORTS D’ENTREES/SORTIES.
Le PIC 18F45K22 dispose de 5 ports parallèles (de A à E) pour un total de 36
lignes d’Entrée/Sortie (E/S). Chaque port à ses particularités. Quasiment toutes
les lignes d’E/S sont multiplexées avec d’autres ressources internes, les
périphériques (UART etc.). En général, quand un périphérique est activé, les
connections concernées ne peuvent plus utilisées comme E/S générale.

Chaque port parallèle est commandé par cinq registres (x=A, B, C, D ou E) :

 un registre appelé PORTx, ou registre de données, fonctionnant en


entrée/sortie logique
 un registre appelé LATxou registre tampon (Latchen anglais), ne
fonctionnant qu’en sortie
 un registre appelé TRISx, ou registre de sens de fonctionnement du port
(entrée ou sortie)
 un registre appelé ANSELx pour le contrôle des entrées analogiques
 un registre appelé SLRCON permettant le contrôle du SlewRate (vitesse
de balayage, permet de limiter les problème d’IEM, Interférence
ElectroMagnétique)

La figure suivante précise la structure de chaque ligne de port au moyen d’un


schéma de principe général. Elle permet de comprendre l’essentiel des
fonctionnalités des ces lignes, à savoir que les données de sortie sont
«latchées»(mémorisées), alors que les données en entrées ne le sont pas et sont
donc lues en «temps réel».

Pour lire une valeur logique en entrée, on utilisera le registre PORTx (PORTA
par exemple). Pour écrire une valeur logique en sortie, on utilisera le registre
LATx (LATA par exemple).

Remarque : les résistances de tirage (pull-up / pull-down)


Lorsqu’une sortie est à drain ouvert, pour l'utiliser comme sortie logique, il faut
ajouter une résistance de pull-up externe. Le schéma de droite illustre le principe
d'une sortie drain ouvert (ou collecteur ouvert) : si le port est positionnée à0,
l'interrupteur est fermé, la sortie est reliée à la masse, c'est un niveau bas. Si le
port est placée à1, l'interrupteur est ouvert, la sortie serait déconnectée s'il n'y
avait pas la résistance externe qui place la sortie au niveau haut.

Contrairement à une sortie classique, le port en collecteur ouvert permet


d’alimenter une charge avec une tension différente de celle du µcontrôleur
(Vdd= 12V par exemple).

Si on veut utiliser ce type de port pour allumer une LED, on peut utiliser le
schéma ci-dessous. Il faut juste remarquer que la logique est inversée, si on
envoie 0 sur le port, l'interrupteur se ferme et la LED s'allume. Si on envoie 1,
l'interrupteur s'ouvre et la LED s'éteint.

On utilise une résistance de pull-up lorsque l’interrupteur est connecté à la


masse. S’il est connecté à l’alimentation, on utilisera une résistance de pull-
down.

Dans certains cas, les résistances de pull-up ou pull-down sont directement


intégrées dans le composant (par exemple, pull-up sur le PortB du PIC
18F45K22
 Le port d' E/S PORTA

Le port A désigné par PORTA est un port bidirectionnel de 8 bits (RA0


àRA7). La configuration de direction se fait à l'aide du registre TRISA,
positionner un bit de TRISA à1 configure la broche correspondante de PORTA
en entrée et inversement. Au départ toutes les broches sont configurées en
entrée.

Les broches RA6 et RA7 peuvent être utilisées en E/S ou comme lignes
d’entrée de l’oscillateur principal.

La ligne RA4 est quant à elle multiplexée avec l’entrée d’horloge externe du
Timer0 (T0CKL) et l’une des sorties du comparateur 1 (C1OUT). Elle est
parfois nommée RA4/T0CKL/C1OUT.

Les autres lignes RA0 àRA3 et RA5 sont partagées avec les entrées du
convertisseur analogiques/numérique (CAN), les entrées Vref+ et Vref-, la
tension de référence de sortie du comparateur etc.

Les lignes RA0 àRA5 peuvent aussi être utilisées comme entrées ou sorties
du comparateur.

 Le port d' E/S PORTB

 Le port B désigné par PORTB est un port bidirectionnel de 8 bits (RB0


àRB7).
 Présence, sur toutes les lignes de ce port, de résistances de pull-up (résistance
de tirage de niveau haut) de forte valeur. Elle peuvent être invalidées
simultanément par la mise au niveau 1 du bit du registre INTCON2. Par
contre, lorsqu’elles sont validées par la mise à0 de ce même bit, cette
validation n’est effective que pour les lignes du port B qui sont placées en
entrée.
 La configuration de direction se fait à l'aide du registre TRISB, positionner
un bit de TRISB à1 configure la broche correspondante de PORTB en entrée
et inversement. Au départ toutes les broches sont configurées en entrée.

En entrée, une quelconque des lignes RB4 àRB7 peut déclencher, sur
changement d’état, une interruption (scrutation d’un clavier par exemple ; le
µcontrôleur reste en veille tant qu’aucune touche n’est activée). Cette fonction
peut être validée au moyen du bit RBIF du registre INTCON.
 Comme tous les autres ports, le port B peut être partagée avec une ou
plusieurs autres ressources internes.

 Les ports d' E/S C et D


 Les ports C et D sont des ports bidirectionnel de 8 bits (RC0 àRC7).
 La configuration de direction se fait à l'aide des registres TRISC et TRISD,
positionner un bit de TRISC (TRISD) à1 configure la broche correspondante
de PORTC (PORTD) en entrée et inversement. Au départ toutes les broches
sont configurées en entrée.
 Toutes les broches du port C (port D) peuvent être utilisées soit comme E/S
normales soit comme broches d'accès à différents modules comme les timers,
les modules de comparaison et de capture CCP1/2, le port I2C ou encore le
port série (EUSART).
 Pour l’utilisation d’une broche du port C ou D comme E/S normale, il faut
s’assurer qu’elle n’a pas été affectée à un de ces modules.
 Le port d' E/S PORTE

PORTE contient seulement 3 bits RE0, RE1 et RE2. Les 3 sont


configurables en entrée ou en sortie à l’aide des bits 0, 1 ou 2 du registre TRISE.

10 CONVERTISSEUR ANALOGIQUE NUMERIQUE.


a. Présentation .
b. Conversion A/N.
11 Les timers.

Un timer est un compteur prépositionnable qui compte ou décompte au rythme


d’une horloge interne ou externe. Les PICs18F45K22 disposent de 7 timers, 3 de
8 bits et 4 de 16 bits.

-Le timer0 (8 ou 16 bits): il peut être incrémenté par des impulsions extérieures
via la broche (TOCKI/ RA4) ou par l’horloge système (Fosc/4).

-Les timers1/3/5 (16 bits): ils peuvent être incrémentés soit par l’horloge
interne(Fosc), par l’horloge système (Fosc/4), par des impulsions sur les broches
TxCKI (RC0/RB5/RC2) ou encore par un oscillateur (RC ou quartz) connecté
sur les broches SOSC0/RCO et SOSC1/RC1.
-Le timers2/4/6 (8 bits) : ils sont incrémentés par l’horloge système (Fosc/4),
celle-ci peut être prédivisée par 4 ou 16.

Tous ces timers peuvent déclencher une interruption interne.

Le TIMER0:

C’est le plus ancien des timer simplantés dans les PICs, son ancienne appellation
était RTC, pour Real Time Clock (horloge temps réelle). C’est aussi le plus
simple car il est autonome, c’est-à-dire qu’il n’est pas associé à d’autres
ressources internes.

On peut s’en servir pour générer des événements périodiques, comme le


clignotement de LED sou l’incrémentation de variables (secondes, minutes …).

Il peut fonctionner en mode 8 bits (comptage de 00 à FF) ou en mode 16 bits


(comptage de 0000 à FFFF).

Il est incrémenté soit par l’horloge système (Fosc/4), soit par un front montant
ou descendant appliqué sur la broche TOCKI/RA4.

Il est configuré par les registres T0CON, TMR0L, TMR0H et les registres
INTCON, INTCON2 (interruptions) et TRISA (broche RA4).

Le TIMER0 en mode 8 bits :

o Un premier commutateur, commandé par le bit T0CS, permet de


sélectionner l’origine de la source (horloge système ou front sur la broche
T0CKL).
o Le ou exclusif, via le bit T0SE, permet de sélectionner le front montant ou
descendant sur la broche T0CKL (lorsque cette source est activée).
o Le module «Programmable Prescaler» permet de fixer le taux de division
de l’horloge. Il est commandé par 3 bits, T0PS<2:0>.
o Le second commutateur, commandé par le bit PSA, permet de
sélectionner ou non le prédiviseur.
o Le registre TMR0L (sur 8 bits) est accessible en lecture/écriture. Il
contient la valeur courante du comptage et doit au préalable être chargé
par une valeur initiale.

Vous aimerez peut-être aussi