Structure interne du PIC 16F887

Download Report

Transcript Structure interne du PIC 16F887

Systèmes à microprocesseurs
Structure interne du PIC 16F887
1
Présentation du PIC 16F887
●
Documentation constructeur page 7 :
2
Présentation 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 mémoire EEPROM
3
Présentation
du PIC
16F887
●
Schéma de
la structure
interne
4
Organisation du plan mémoire
●
Architecture du type Harvard

3 plans mémoires séparés

Une mémoire de programme de 8k mots de 14 bits


Une mémoire de données de 462 octets



Mémoire Flash
368 + 94 octets
Une pile de 8 niveaux
Il existe un 4ème plan mémoire, mais que nous
n'aborderons pas, il s'agit d'une mémoire de
type EEPROM ...
5
Organisation du plan mémoire
●
Architecture du type Harvard

3 plans mémoires séparés :
6
Mémoire de programme
●
●
Capacité : 8k mots de 14 bits
Chaque instruction est donc
codée sur 14 bits

1 instruction = 14 bits

Capacité :
8192 instructions
maximum
7
Mémoire de données
●
Capacité totale : 512 octets



●
368 octets d'usage général
94 octets associés aux
périphériques
50 octets inutilisés
Plan mémoire découpé en 4 zones
(bank) de 128 octets

Sélection de la zone par les
bits RP0 et RP1 du registre
STATUS
8
9
Mémoire de données
●
Registres spéciaux (SFR)


SFR = Special Function Registers
Ont pour rôle de configurer et d'utiliser les
périphériques du PIC (Timers, USART, CAN,
etc)

Ils se trouvent au début de chaque ”bank”

94 octets au total
10
Pile système
●
●
Le PIC 16F887 possède une pile LIFO (Last In
First Out) de 13 bits comportant 8 niveaux.
Rôle de cette mémoire : 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 dépilée lors d'un retour d'un
sous-programme (ou après l'exécution d'une
interruption)
11
Pile système
12
Registres internes
●
Accumulateur W


Registre de travail : ”Work” en anglais
Sert à stocker temporairement la donnée sur
laquelle va travailler l'instruction en cours
d'exécution (en source ou en destination).

Exemple : ADDLW 7

C'est un registre
très utilisé.
13
Registres internes
●
Registre STATUS



C'est un registre d'état qui indique les
caractéristiques du dernier résultat
d'opérations arithmétiques ou logiques
réalisé par l'ALU.
Il permet également le choix des ”bank” (bits
RP0 et RP1)
Il se situe à l'adresse 0x03 de la RAM
14
Registres internes
●
Registre STATUS
15
Séquencement 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.
16
Séquencement d'une instruction
●
Chronogramme de fonctionnement
Structure permettant de récupérer une instruction tout en
exécutant l'instruction précédente
17
Séquencement 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 exécutée
toutes les 1 µs.
Si Fquartz = 20 MHz, alors le MCU peut réaliser 5 MIPS
(Millions d'Instructions Per Second) (une instruction
toutes les 200ns)
18
Choix de la fréquence du signal
d'horloge
●
●
Le choix du type d'horloge ainsi que de la
fréquence du signal d'horloge n'est pas anodin
vis-à-vis des points suivants :
–
Consommation
–
Précision
Le type du circuit d'horloge influe sur la
précision :
–
Un circuit à base de quartz est beaucoup plus
précis et stable qu'un oscillateur RC.
19
Choix de la fréquence du signal
d'horloge
●
Influence sur la précision :
–
Imaginons que l'on veuille passer du temps
avec l'instruction nop() qui dure 1 cycle
machine.
–
À 4 MHz, 1 nop() = 1µs
–
À 20MHz, 1 nop() = 200ns
–
Si on veut avoir une précision à 200ns près, il
ne sera donc pas possible d'utiliser un signal
d'horloge à 4 MHz.
20
Choix de la fréquence du signal
d'horloge
●
Influence sur la précision :
–
Par exemple, si on veut faire une fonction qui
génère un signal carré à 36kHz durant par
exemple 4 périodes.
–
T=1/f=27,8µs
–
À 4MHz, on ne pourra faire que T=28µs soit f=
35,7kHz
–
À 20MHz, on pourra obtenir T= 27,8µs
21
Choix de la fréquence du signal
d'horloge
●
Plus la fréquence du signal d'horloge est
élevée, plus la consommation augmente.
22
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 à zéro (fonction
clrwdt() en C) doit être exécutée très régulièrement
avant qu'il n'arrive à débordement.
Si cette instruction n'est pas exécutée, cela signifie
que le programme est ”planté”, donc le watchdog
timer arrive à débordement, ce qui a pour effet de
réinitialiser complètement le programme.
23
Le chien de garde
●
●
●
C'est en fait un élément de sécurité qui surveille (qui
”monte la garde” !) en permanence le programme
pour éviter qu'il ne reste planté indéfiniment.
Le Time-out (c'est à dire le temps que le compteur
met pour arriver en débordement) est reglable de
1ms à 268 secondes.
Le prescaler permettant de configurer la durée 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.
24