1 Systèmes à microprocesseurs Structure interne du PIC 16F887
1
Systmes microprocesseurs
Structure interne du PIC 16F887
2
Prsentation du PIC 16F887
Documentation constructeur page 7 :
3
Prsentation du PIC 16F887
Le PIC 16F887 comprend donc : 3 Timers (compteurs) 1 CAN 10 bits 2 modules PWM 1 module de com synchrone (MSSP) 1 module EUSART 2 comparateurs 1 mmoire EEPROM
4
Prsentation du PIC 16F887
Schma de la structure interne
5
Organisation du plan mmoire
Architecture du type Harvard 3 plans mmoires spars
Une mmoire de programme de 8k mots de 14 bits Mmoire Flash
Une mmoire de donnes de 462 octets 368 + 94 octets
Une pile de 8 niveaux Il existe un 4me plan mmoire, mais que nous
n'aborderons pas, il s'agit d'une mmoire de type EEPROM ...
6
Organisation du plan mmoire
Architecture du type Harvard 3 plans mmoires spars :
7
Mmoire de programme
Capacit : 8k mots de 14 bits Chaque instruction est donc
code sur 14 bits 1 instruction = 14 bits Capacit :
8192 instructions maximum
8
Mmoire de donnes
Capacit totale : 512 octets 368 octets d'usage gnral 94 octets associs aux
priphriques 50 octets inutiliss
Plan mmoire dcoup en 4 zones (bank) de 128 octets
Slection de la zone par les bits RP0 et RP1 du registre STATUS
9
10
Mmoire de donnes
Registres spciaux (SFR) SFR = Special Function Registers Ont pour rle de configurer et d'utiliser les
priphriques du PIC (Timers, USART, CAN, etc)
Ils se trouvent au dbut de chaque bank 94 octets au total
11
Pile systme
Le PIC 16F887 possde une pile LIFO (Last In First Out) de 13 bits comportant 8 niveaux.
Rle de cette mmoire : conserver l'adresse de retour lors d'un appel un sous-programme.
Le contenu de PC est sauvegard (empil) dans la pile lors d'un appel un sous-programme (ou lors d'une interruption).
La pile est dpile lors d'un retour d'un sous-programme (ou aprs l'excution d'une interruption)
12
Pile systme
13
Registres internes
Accumulateur W Registre de travail : Work en anglais Sert stocker temporairement la donne sur
laquelle va travailler l'instruction en cours d'excution (en source ou en destination).
Exemple : ADDLW 7 C'est un registre
trs utilis.
14
Registres internes
Registre STATUS
C'est un registre d'tat qui indique les caractristiques du dernier rsultat d'oprations arithmtiques ou logiques ralis par l'ALU.
Il permet galement le choix des bank (bits RP0 et RP1)
Il se situe l'adresse 0x03 de la RAM
15
Registres internes
Registre STATUS
16
Squencement d'une instruction
L'horloge Le MCU PIC16F887 peut utiliser plusieurs
types d'horloges. La selection du type se fait dans le registre
CONFIG1 des registres de configuration.
17
Squencement d'une instruction
Chronogramme de fonctionnement
Structure permettant de rcuprer une instruction tout en excutant l'instruction prcdente
18
Squencement d'une instruction
Chronogramme de fonctionnement 1 instruction = 1 cycle machine = 4 cycles d'horloge
Nombre d'instructions par seconde = Fosc/4 Si Fquartz = 4 MHz, alors une instruction sera excute
toutes les 1 s. Si Fquartz = 20 MHz, alors le MCU peut raliser 5 MIPS
(Millions d'Instructions Per Second) (une instruction toutes les 200ns)
19
Choix de la frquence du signal d'horloge
Le choix du type d'horloge ainsi que de la frquence du signal d'horloge n'est pas anodin vis--vis des points suivants :
Consommation Prcision
Le type du circuit d'horloge influe sur la prcision :
Un circuit base de quartz est beaucoup plus prcis et stable qu'un oscillateur RC.
20
Choix de la frquence du signal d'horloge
Influence sur la prcision : Imaginons que l'on veuille passer du temps
avec l'instruction nop() qui dure 1 cycle machine.
4 MHz, 1 nop() = 1s 20MHz, 1 nop() = 200ns Si on veut avoir une prcision 200ns prs, il
ne sera donc pas possible d'utiliser un signal d'horloge 4 MHz.
21
Choix de la frquence du signal d'horloge
Influence sur la prcision : Par exemple, si on veut faire une fonction qui
gnre un signal carr 36kHz durant par exemple 4 priodes.
T=1/f=27,8s 4MHz, on ne pourra faire que T=28s soit f=
35,7kHz 20MHz, on pourra obtenir T= 27,8s
22
Choix de la frquence du signal d'horloge
Plus la frquence du signal d'horloge est leve, plus la consommation augmente.
23
Le chien de garde
WatchDog Timer en anglais Pourquoi Timer ? Parce que c'est un compteur !
Le watchdog timer compte en permanence. Quand le programme fonctionne normalement, une
instruction permettant de le remettre zro (fonction clrwdt() en C) doit tre excute trs rgulirement avant qu'il n'arrive dbordement.
Si cette instruction n'est pas excute, cela signifie que le programme est plant, donc le watchdog timer arrive dbordement, ce qui a pour effet de rinitialiser compltement le programme.
24
Le chien de garde
C'est en fait un lment de scurit qui surveille (qui monte la garde !) en permanence le programme pour viter qu'il ne reste plant indfiniment.
Le Time-out (c'est dire le temps que le compteur met pour arriver en dbordement) est reglable de 1ms 268 secondes.
Le prescaler permettant de configurer la dure de comptage est mutualis avec le Timer0 : si celui-ci est utilis avec le watchdog, il ne pourra pas l'tre pour le Timer0 et inversement.
Diapo 1Diapo 2Diapo 3Diapo 4Diapo 5Diapo 6Diapo 7Diapo 8Diapo 9Diapo 10Diapo 11Diapo 12Diapo 13Diapo 14Diapo 15Diapo 16Diapo 17Diapo 18Diapo 19Diapo 20Diapo 21Diapo 22Diapo 23Diapo 24