Chapitre 6 - Structure Interne Du PIC 16F887

24
1 Systèmes à microprocesseurs Structure interne du PIC 16F887

Transcript of Chapitre 6 - 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