Informatique Industrielle : Corrige td microcontroleur pic 16f84
Télécharger PDFQuestions sur les microcontrôleurs et les PIC
1. Définition d’un microcontrôleur
Un microcontrôleur est une unité de traitement de l’information de type microprocesseur à laquelle on a ajouté des périphériques internes permettant de faciliter l’interfaçage avec le monde extérieur sans nécessiter l’ajout de composants externes.
2. Définition d’un PIC
Un PIC est un microcontrôleur fabriqué par le constructeur Microchip. PIC signifie Programmable Interface Controller.
3. Acronyme RISC
RISC signifie Reduced Instruction Set Computer : composant à jeu d’instructions réduit.
4. Familles des PIC
Les PIC sont subdivisés en trois familles principales :
- La famille Base-Line, utilisant des mots d’instructions de 12 bits
- La famille Mid-Range, utilisant des mots de 14 bits
- La famille High-End, utilisant des mots de 16 bits
5. Désignation des PIC
- 16F84-04- : PIC de la famille Mid-Range avec mémoire programme de type Flash, référence 84 et fréquence maximale de 4 MHz.
- 12C508 : PIC de la famille Base-Line avec mémoire programme de type EPROM.
- 16C72A : PIC de la famille Mid-Range avec mémoire programme de type EPROM.
- 16F628 : PIC de la famille Mid-Range avec mémoire programme de type Flash.
- 18F442 : PIC de la famille High-End avec mémoire programme de type Flash et tolérance à des tensions plus larges.
6. Taille des instructions et familles des PIC cités
- 16F84-04- : 14 bits, famille Mid-Range.
- 12C508 : 12 bits, famille Base-Line.
- 16C72A : 14 bits, famille Mid-Range.
- 16F628 : 14 bits, famille Mid-Range.
- 18F442 : 16 bits, famille High-End.
7. Schéma interne d’un PIC (à compléter)
- 1 – Mémoire programme
- 2 – Registre compteur de programme
- 3 – Port A et Port B d’entrées-sorties
- 4 – Unité arithmétique et logique
- 5 – RAM
- 6 – E2PROM
- 7 – Horloge système
- 8 – Registre de décodage des instructions
- 9 – Registre d’état
- 10 – Registre de travail (W)
- 11 – Registre d’instruction
- 12 – Timer
- 13 – Pointeur de pile
- 14 – Bus internes
- 15 – Reset, Watchdog, Alimentation
8. Mémoires du PIC 16F84
Le PIC 16F84 est constitué des mémoires suivantes :
- Mémoire programme
- Mémoire de données
9. Structure interne détaillée
A. Mémoire programme
- Elle sert à stocker le programme.
- Sa taille est de 1024 × 14 bits.
- Le type de mémoire est Flash.
- Une instruction peut être codée sur 14 bits.
- Vecteur d’adresse 3FA : adresse composée de 11 bits (3F) et 3 bits (A).
- Adresse du premier vecteur de la mémoire programme : 0000H.
- Le vecteur d’adresse 000H correspond au vecteur Reset.
- Le vecteur d’adresse 004H correspond au vecteur d’interruption.
- Nombre maximal d’instructions dans la mémoire programme à partir de l’adresse 005H : 1019 instructions.
B. Mémoire des données
1. Mémoire de données EEPROM
- Elle contient :
- Mémoire de données RAM
- Mémoire de données E2PROM
- Sa taille est de 64 octets.
- Elle sert à stocker des données temporaires comme les temporisations, les comptages, etc.
- Une adresse mémoire de données EEPROM est codée sur 8 bits.
- Pour lire une donnée de la mémoire EEPROM :
- Placer l’adresse relative dans le registre EEADR.
- Mettre le bit RD de EECON1 à 1.
- Lire le contenu du registre EEDATA.
- Pour écrire une donnée dans la mémoire EEPROM :
- Autoriser l’écriture : bit WREN = 1.
- Placer l’adresse relative dans le registre EEADR.
- Placer la donnée à écrire dans le registre EEDATA.
- Placer 0x55 dans EECON2.
- Placer 0xAA dans EECON2.
- Lancer l’écriture en positionnant le bit WR.
- Attendre la fin de l’écriture (10 ms, jusqu’à ce que EEIF = 1 ou WR = 0).
- Recommencer à l’étape 2 si d’autres données doivent être écrites.
2. Mémoire de données RAM
- Taille totale : 92 octets, dont 68 octets exploitables par l’utilisateur.
- Subdivisée en 2 banques.
- Accès aux banques via le bit RP0 du registre STATUS :
- Si RP0 = 0, la banque 0 est sélectionnée.
- Si RP0 = 1, la banque 1 est sélectionnée.
- Chaque registre de la mémoire RAM est codé sur 8 bits.
- Deux portions dans chaque banque :
- Les registres SFR (Special Function Register)
- Les registres GPR (General Purpose Register)
3. Registres SFR
- Le registre FSR et INDF :
- INDF est un accumulateur pointé par FSR pour l’adressage indirect.
- Registre OPTION (bit RBPU/) :
- Rôle : Pull-up Enable pour le Port B.
- Si RBPU = 0, les résistances de pull-up internes sont activées.
- Si RBPU = 1, les résistances de pull-up internes sont désactivées.
- Bit INTEDG :
- Si INTEDG = 0, l’interruption sur RB0/INT est active sur un front descendant.
- Si INTEDG = 1, l’interruption sur RB0/INT est active sur un front montant.
- Bit T0CS (RTS) :
- Si T0CS = 0, l’horloge du module TMR0 est l’horloge interne (1/4 de la fréquence OSC1/CLKIN).
- Si T0CS = 1, l’horloge du module TMR0 utilise le signal de la broche RA4/T0CKI.
- Bit T0SE (RTE) :
- Si T0CS = 1 et T0SE = 0, le signal d’horloge est actif sur un front montant.
- Si T0CS = 1 et T0SE = 1, le signal d’horloge est actif sur un front descendant.
- Bit PSA :
- Si PSA = 0, le prédiviseur est attribué au module TMR0.
- Si PSA = 1, le prédiviseur est attribué au Watchdog.
- Bits PS2, PS1, PS0 :
- Déterminent la valeur de prédivision du prédiviseur.
- Registre TMR0 :
- Utilisé pour le comptage et la temporisation.
- Registres PCL (banque 0) et PCLATH (banque 1) :
- PCL contient l’adresse de poids faible (8 bits) du compteur de programme.
- PCLATH contient l’adresse de poids fort (5 bits) du compteur de programme.
- Registres PORTA et PORTB :
- Servent comme interfaces d’entrées-sorties pour les ports A et B.
- Registres TRISA et TRISB :
- Pour configurer les ports en entrées : TRISA = 1 et TRISB = 1.
- Pour configurer les ports en sorties : TRISA = 0 et TRISB = 0.
- Registre EEADR :
- Contient l’adresse de l’emplacement mémoire EEPROM à manipuler.
- Registre EEDATA :
- Contient la valeur (8 bits) de l’emplacement mémoire EEPROM à manipuler.
- Registre EECON1 :
- Permet de définir le mode de fonctionnement de la mémoire EEPROM.
- Bits :
- EEIF : drapeau d’interruption en fin d’écriture.
- WRERR : drapeau d’erreur en cas de problème lors de l’écriture.
- WREN : autorise ou interdit l’écriture.
- WR : lance une opération d’écriture.
- RD : lance une opération de lecture.
4. Registre INTCON
- Permet de gérer les interruptions.
- Bits :
- GIE : autorise ou désactive toutes les interruptions.
- EEIE : autorise l’interruption de fin d’écriture EEPROM.
- T0IE : autorise les interruptions par débordement du Timer0.
- INTE : autorise les interruptions externes sur RB0/INT.
- RBIE : autorise les interruptions par changement d’état sur les lignes du Port B.
- T0IF : drapeau de débordement du Timer0.
- INTF : drapeau d’interruption externe sur RB0/INT.
- RBIF : drapeau de changement d’état sur les lignes du Port B.
5. Registre STATUS
- Indique l’état des opérations.
- Bits :
- RP0 : sélectionne la banque de la RAM.
- TO/PD : Timeout (déborde du Watchdog) ou Power Down.
- Z : résultat nul après une opération.
- DC : retenue finale après une opération.
- C : retenue après une opération.
FAQ
1. Qu’est-ce qu’un microcontrôleur PIC ?
Un PIC est un microcontrôleur fabriqué par Microchip, optimisé pour des applications embarquées grâce à ses périphériques intégrés.
2. Pourquoi utiliser une mémoire EEPROM dans un PIC ?
La mémoire EEPROM permet de stocker des données de manière permanente, même après coupure d’alimentation, et de les modifier sans reprogrammer le microcontrôleur.
3. Comment configurer un port en entrée/sortie sur un PIC 16F84 ?
Pour configurer un port en entrée, il faut définir les bits correspondants du registre TRIx à 1. Pour une sortie, il faut les définir à 0.