Vous êtes sur la page 1sur 25

Plan du cours

• COMPOSITION ET FONCTIONNEMENT DES PICS

• ORGANISATION DE LA MEMOIRE PIC

• LES SOURCES D’INTERRUPTIONS

• LES PORTS D’ENTREE/SORTIE

• LE MODE SLEEP

• FONCTION EN C POUR LES INTERRUPTIONS


Introduction
• PIC = famille de µContrôleurs / MicroChip
• µContrôleurs
– La logique câblée 
– Le microprocesseur
– Le microcontrôleur
• Une unité centrale qui est le cœur du système
• Une mémoire contenant le programme à exécuter
• Une mémoire vive également appelée RAM
• Un port d' entrées - sorties pour « dialoguer » avec l'extérieur
• Applications (! bon rapport prix/complexité)
Caractéristiques de µContrôleurs

• Architectures
– Von-Neuman / Harvard
• Jeux d'instructions
– CISC / RISC
Le PIC 877
• Unité centrale = 8 bit
• Mémoire programme = 8 Kmots de 14 bits
• Mémoire données = 8 bits / 368 octets
– Registres en mémoire
• Ports d’entrée/sortie (bcps!)
– Ex: Série, Parallèle, Numériques,
Analogiques, ..
Architecture
interne du PIC
Unité centrale
(Central Processing Unit)
• CPU = exécution des instructions (14 bits)
– Contrôle les bus (données/instructions)
– Programm Counter (PC = 13 bits) + la pile (stack = 8x13 bits)
– Architecture pipe-line (lecture (registre IR) / exécution (ALU) )
ALU
(Arithmetic and Logic Unit)
– ALU: opérations logiques + bits d’état
– Registre de travail (W – Accumulateur)
Registre d’état (STATUS)
• Les opération arithmétiques (+, -,
décalages...) affectent 3 bits (Carry (C),
Zero (Z) et Digit Carry (DC)
– C (report/retenue) = le 9ème bit d’une opération
– DC = report du bit 3 vers le bit 4
– Z (si résultat = 0, alors Z=1) = le bit test
• STATUS = C(b0) DC(b1) Z(b2) …
Mémoire programme
• 8K x 14b organisés en 4 pages x 2K
• PC = ½ PCLATH + PCL

• La pile est circulaire !


Mémoire RAM
• Special Function Registers (SFR)
– Contrôle du µcontrôleur
• General Purpose Registers (GPR)
– Variables locales …
• Organisation
– 4 pages x 128 registres x 8b
– Plusieurs types d’adressage
Mémoire RAM
LES INTERRUPTIONS

• C’est quoi une interruption?


• Mécanisme général d’une interruption (sur les PICs)?
• Sources
• Types d’interruptions
Les interruptions
Mécanisme général d’une interruption
1. Le programme se déroule normalement
2. L’événement survient
3. Le programme achève l’instruction en cours de
traitement
4. Le programme saute à l’adresse de traitement de
l’interruption
5. Le programme traite l’interruption
6. Le programme saute à l’instruction qui suit la dernière
exécutée dans le programme principal.
Les interruptions sur le PICs
Exemple des interruptions
• INT RB0 : un clavier pour piloter la
CDTEC à travers un driver MM74C922

A 0 1 2 3 U5
MM74C922

1
B 4 5 6 7 Y1

6
2
Y2
3

C 8 9 A B
8 4
Y3
Y4
OE
13
RB0
12
DA
11 17
X1 A

PIC
10 16
D C D E F 8
X2
X3 OSC
B
C
15

KBM
7 14
X4 D
1

5
5

6
Validation des interruptions
• Registre INTCON
– Flag GIE : met toutes les interruptions choisies
en service
– Flag PEIE : active les interruptions
périphériques
Types d’interruptions
• Primaires (registre INTCON)
• Timer 0 : débordement du timer 0
– Valider: TOIE; Flag : TOIF
• Pin RB0 : signale une transition sur patte RB0 dans le sens
déterminé par INTEDG
– Valider : INTE; Flag : INTF
• Ch RB4/7 : changement de niveau sur une des entrées RB4 à
RB7
– Valider: RBIE; Flag RBIF
– Utilisation:
• Valider le bit concernant l’interruption
• Valider le bit GIE
Types d’interruptions
• Périphériques
– Valider : registres PIE1 et PIE2
– Flags: registres PIR1 et PIR2
– Utilisation
• Valider le bit concernant l’interruption (PIE1/PIE2)
• Valider le bit PEIE (INTCON)
• Valider le bit GIE
Le Watchdog
• Timer interne spécifique (>7 ms)
– Réglable,
– Désactivable au démarrage
– Remis à 0 sur appel de clrwdt
– Redémarre le PIC si arrive en bout de course
• Signalé par bit T0 de statut
– Utilisation
• Détection boucle infinie dans programme (possible
sur faute électrique ou du programmeur)
• Réveil sur sleep
Les interruptions …
• Sources
– Declencheur Flag Registre Adr PEIE Enable Registre Adr
– Timer 0 T0IF INTCON 0x0B NON T0IE INTCON 0x0B
– Pin RB0 / INT INTF INTCON 0x0B NON INTE INTCON 0x0B
– Ch. RB4/RB7 RBIF INTCON 0x0B NON RBIE INTCON 0x0B
– Convert. A/D ADIF PIR1 0x0C OUI ADIE PIE1 0x8C
– Rx USART RCIF PIR1 0x0C OUI RCIE PIE1 0x8C
– Tx USART TXIF PIR1 0x0C OUI TXIE PIE1 0x8C
– Port série SSP SSPIF PIR1 0x0C OUI SSPIE PIE1 0x8C
– Module CCP CCP1IF PIR1 0x0C OUI CCP1IE PIE1 0x8C
– Timer 1 TMR1IF PIR1 0x0C OUI TMR1IE PIE1 0x8C
– Timer 2 TMR2IF PIR1 0x0C OUI TMR2IE PIE1 0x8C
– EEPROM EEIF PIR2 0x0D OUI EEIE PIE2 0x8D
– SSP mode I2C BCLIF PIR2 0x0D OUI BCLIE PIE2 0x8D
– Port parallèle PSPIF PIR1 0x0C OUI PSPIE PIE1 0x8C
Scrutation ou interruption

• Scrutation (polling)
– Maîtrise des temps
– Conservation du caractère séquentiel
– Perte de temps
• Interruption
– Permet de prendre en compte un événement au plus
vite
– Évite scrutations inutiles
– Risque d'engorgement ?
Mode SLEEP
• Placement en sommeil
– Remise à zéro du watchdog
– Arrêt de l'oscillateur (donc des instructions)
• Réveil
– Reset
– Échéance du watchdog
– Interruption RB0/INT RB EEPROM
Fonction d’interruption
• Prototype :
• void interrupt(void)

• Les actions à réaliser lors de l’interruption


sont mises obligatoirement dans cette
fonction.

• Pour prendre en compte une interruption on


teste son drapeau.
Fonction d’interruption
• A la fin de l’interruption, on remet le
drapeau à 0. Cela permet de prendre en
compte la prochaine interruption.
• Exemple :
void interrupt()
{ if (INTCON. INTF)
{
counter++;
INTCON. INTF = 0;
}
}
Bibliographie

• Cours de Bigonoff
– www.abcelectronique.com/bigonoff
• Microchip
– Datasheet du PIC
– Simulateur MPLAB
– www.microchip.com

Vous aimerez peut-être aussi