1 1/41 Plan du cours COMPOSITION ET FONCTIONNEMENT DES PICS ORGANISATION DE LA MEMOIRE PIC Les modes d’adressage LES SOURCES D’INTERRUPTIONS LE RESET LES PORTS D’ENTREE/SORTIE LE CONVERTISSEUR ANALOGIQUE/NUMERIQUE LE MODE SLEEP LE BUS I2C LE MODULE USART EN MODE SERIE (A)SYNCHRONE LE ISO7816
2 2/41 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é)
3 3/41 Caractéristiques de µContrôleurs Architectures –Von-Neuman / Harvard Jeux d'instructions –CISC / RISC
4 4/41 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,..
5 5/41 Architecture interne du PIC
6 6/41 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) )
7 7/41 Types des instructions Instructions orientées octet –Instruction (6b) + Destination (1b) + Oper. (7b) Instructions orientées bits –Instruction (4b) + Numéro bit (3b) + Oper. (7b) Instructions générales –Instruction (6b) + Valeur immédiate (8b) Les sauts et appels de sous-routine –Instruction (3b) + Destination (11b)
8 8/41 ALU (Arithmetic and Logic Unit) –ALU: opérations logiques + bits d’état –Registre de travail (W – Accumulateur)
9 9/41 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) …
10 10/41 Mémoire programme 8K x 14b organisés en 4 pages x 2K PC = ½ PCLATH + PCL La pile est circulaire !
11 11/41 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
12 12/41 Mémoire RAM
13 13/41 Les modes d’adressage Immédiat (littéral) –movlw 0x55; charger la valeur 0x55 en W Direct –movf 0x55,W; charger le contenu du 0x55 dans W –Utilise le registre STATUS (RP0, RP1) pour choisir banc Indirect –Utilise les registres FSR (adresse) et STATUS (IRP poids fort du banc)
14 14/41 Les modes d’adressage
15 15/41 LES INTERRUPTIONS C’est quoi une interruption? Mécanisme général d’une interruption (sur les PICs)? Sources Types d’interruptions
16 16/41 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.
17 17/41 Les interruptions sur le PICs
18 18/41 Scrutation / Interruptions Annulation manuelle
19 19/41 Exemple des interruptions INT RB0 : une télécommande TV pour piloter un robot PIC RB0
20 20/41 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
21 21/41 Validation des interruptions Registre INTCON –Flag GIE : met toutes les interruptions choisies en service –Flag PEIE : active les interruptions périphériques
22 22/41 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
23 23/41 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
24 24/41 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
25 25/41 LE RESET (redémarrage 0x00) LES DIFFERENTS TYPES DE RESET –Apparition de la tension d’alimentation après une coupure –Application d’un niveau bas sur la pin MCLR durant le déroulement du programme –Application d’un niveau bas sur la pin MCLR durant le mode sleep –Débordement du watchdog durant le déroulement du programme –Débordement du watchdog durant le mode sleep –Remontée de la tension d’alimentation après une chute partielle Registres (PCON et STATUS) –PCON b0 : BOR : Brown Out Reset : Reset sur chute de tension b1 : POR : Power On Reset : Reset par mise sous tension –STATUS b3 : PD : Power Down bit : passage en mode sleep b4 : TO : Time Out bit : reset par débordement du watchdog
26 26/41 Détermination de l’événement
27 27/41 Scrutation ou interruption Scrutation (polling) –Maîtrise des temps –Conservation du caractère séquentiel Interruption –Permet de prendre en compte un événement au plus vite –Évite scrutations inutiles –Risque d'engorgement ?
28 28/41 LES PORTS D’ENTREE/SORTIE Types (entrée ou sortie) –PORTA/B/C/D/E Image des pins RA0-RA5 (RB0-RB7) Fonctionnement –Lecture / Modification / Ecriture Configuration –Registre TRISA/B/C/D/E (1=entrée; 0=sortie)
29 29/41 LE CONVERTISSEUR ANALOGIQUE/NUMERIQUE Principes / Fonctionnement - par approximations succesives - acquisition / conversion / lecture résultat Tension de référence MUX (8 canaux) CAN et INT
30 30/41 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
31 31/41 Le port D en mode PSP Parallel Slave Port –Interfaçage E/S avec d’autres circuits –« L’extérieur » prend le contrôle … –Utilisation du TRISE (bit PSPMODE) –Utilisation des pins RE0/2 pour RD/CS/WR
32 32/41 LE MODULE USART EN MODE SERIE (A)SYNCHRONE Généralités –Mode asynchrone / synchrone Fonctionnement –Maître / esclave –token-ring Configuration –Le registre TXSTA
33 33/41 Autres modes de communication Module MSSP (Master Synchronous Serial Port) –Mode SPI (toujours full-duplex, ordre des bits) –Mode I2C (hardware) Module USART –Mode asynchrone ou synchrone
34 34/41 Protocole série I 2 C I 2 C (Inter-Integrated Circuit) –Protocole série avec 2 lignes bidirectionnelles dévéloppé par Philips Semiconductors il y a 20 ans –Permet d'établir une liaison série synchrone entre 2 ou plusieurs composants –Transfert de données jusqu'à 100 kbits/s et 7 bits d'adresses (127 péripheriques) en configuration classique –3.4 Mbits/s et 10-bit d'adresses en configuration fast-mode –Example de péripheriques avec I 2 C bus: EPROMS, Flash, RAM, real-time clocks, watchdog timers, et... microcontrôleurs Trés utilisé dans l'industrie automobile
35 35/41 LE BUS I2C CARACTERISTIQUES FONDAMENTALES –Seuls les esclaves disposent d’adresses –Ce sont toujours les maîtres qui pilotent le transfert –Un maître ne peut parler qu’à un esclave (ou à tous les esclaves), jamais à un autre maître. LES DIFFERENTS TYPES DE SIGNAUX – La ligne SCL (Serial Clock Line), qui, comme son nom l’indique, véhicule l’horloge de synchronisation –La ligne SDA (Serial DAta line), qui véhicule les bits transmis. –Le bit de start, le bit 0/1, le bit de stop, le bit ACK, le bit R/W ARBITRAGE DU BUS –Technologie collecteur-ouvert
36 36/41 I2C bus structure SCL SDA Micro- controller (master) EEPROM (servant) Temp. Sensor (servant) LCD- controller (servant) < 400 pF Addr=0x01 Addr=0x02 Addr=0x03 D C STST ARTART A6A6 A5A5 A0A0 R/wR/w ACKACK D8D8 D7D7 D0D0 ACKACK STST OPOP From Servant From receiver Typical read/write cycle SDA SCL SDA SCL SDA SCL SDA SCL Start conditionSending 0Sending 1Stop condition
37 37/41 Applications avec PIC Programmer en C –Tester sur simulateur Le robot Hemisson –Un Pic, –2 moteurs PWM, différents capteurs Exemple d’application
38 38/41 Testing and Debugging Implementation Phase Verification Phase Verification Phase Emulator Debugger / ISS Programmer Development processor (a) (b) External tools ISS –Gives us control over time – set breakpoints, look at register values, set values, step-by-step execution,... –But, doesn’t interact with real environment Download to board –Use device programmer –Runs in real environment, but not controllable Compromise: emulator –Runs in real environment, at speed or near –Supports some controllability from the PC
39 39/41 Bibliographie Cours de Bigonoff – Microchip –Datasheet du PIC –Simulateur MPLAB –