Microcontrôleur PIC Microchip part1/2

2 172 vues

Publié le

Microcontrôleur PIC 16F Microchip part1/2
vous trouvez ci-joint quelques exemples "basique" avec le code (Mikroc) et le schematic/simulation (Isis Proteus)
https://drive.google.com/file/d/0B6cDeCQ2t8S6ZHB3UGdxUGE1bm8/view?usp=sharing

by : Lamghari Mohammed

Publié dans : Ingénierie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 172
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Microcontrôleur PIC Microchip part1/2

  1. 1. MICROCONTRÔLEUR -PIC- 2015-2016
  2. 2. PLAN Introduction au microcontrôleur (PIC) Programmation des PICs PIC 16F84A PIC 16F877
  3. 3. PLAN Introduction au microcontrôleur (PIC) Programmation des PICs PIC 16F84A PIC 16F877
  4. 4. MICROCONTRÔLEUR ?? Définition : (rappel) Circuit programmable capable d’exécuter un programme et qui possède des circuits intégrés d’interface avec le monde extérieur. Les avantages des microcontrôleurs : (rappel) - Diminution de l’encombrement du matériel et du circuit imprimé - Simplification du tracé du circuit imprimé (plus besoin de tracer de bus !) - Augmentation de la fiabilité du système nombre de composants P - Diminution de la consommation - Le microcontrôleur contribue à réduire les coûts à plusieurs niveaux: moins cher que les composants qu’il remplace -Diminution des coûts de main d’œuvre (conception et montage) - Environnement de programmation et de simulation évolués
  5. 5. MICROCONTRÔLEUR ??
  6. 6. MICROCONTRÔLEUR ?? Les types (rappel) : De nos jours , il existe plusieurs types de microcontrôleur :
  7. 7. MICROCONTRÔLEUR ??
  8. 8. Microcontrôleur PIC Actuellement les modèles Microchip, sont classés en 3 grandes familles : Base-Line ; Mid-Range ; High-End Nous nous limiterons à la famille Mid-Range, sachant que si vous avez tout compris, vous passerez très facilement à une autre famille, et même à un autre microcontrôleur
  9. 9. Microcontrôleur PIC Malgré qu’il y a plusieurs modèles de famille de PIC , tous ces µC ont quelques caractéristiques en communs telles que : • Digital I/O ports • On-chip timer avec 8-bit prescaler • Power-on reset • Watchdog timer • Power-saving SLEEP mode • courant débité • External clock interface • RAM data memory • EPROM or Flash program memory
  10. 10. Microcontrôleur PIC quelques PICs présentent plus de caractéristiques : • Entrée analogique (Analog input channels) • Comparateur analogique (Analog comparators) • TIMER additionnel (Additional timer circuits) • EEPROM data memory • interrupteur (External and internal interrupts) • oscillateur intérieur (Internal oscillator) • modulation-largeur-impultion (Pulse-width modulated (PWM) output) • USART serial interface (Universal Synchronous Asynchronous Receiver Transmitter ) Et autres qui present plus encore ! : • CAN bus interface • Direct LCD interface • USB interface • Motor control
  11. 11. ‘‘L’intérieur ’’ d’un microcontrôleur PIC  Program Memory (Flash) : -Contient le programme à exécuter -Son contenu demeure conservé après mise hors tension  Data Memory (RAM) : - Utilisée pour stocker les variables du programme : Pour pouvoir travailler normalement le μC doit stocker des données temporaire quelque part et c’est la qu’intervient la RAM. -Volatile : données perdues en cas de coupure de l’alimentation  La mémoire EEPROM (Electrical Erasable Programmable Read Only Memory) -vous pouvez lire et écrire depuis votre programme. Ces octets sont conservés après une coupure de courant (non- Volatile ) et sont très utiles pour conserver des paramètres semi-permanents.
  12. 12. Les registres spéciaux : SFR (Special Function Registers) - Ils sont utilisés par le µC pour contrôler ses opérations internes - Le nombre des SFR varie selon la complexité du µC Parmi les SFR les plus importants/utilisés : • OPTION register • I/O registers • Timer registers • INTCON register • A/D converter registers
  13. 13. PLAN Introduction au microcontrôleur (PIC) Programmation des PICs PIC 16F84A PIC 16F877
  14. 14. PROGRAMMATION Comment procéder ?? Edition du programme Compilation du programmeExécution du programme
  15. 15. PROGRAMMATION Edition code source Compilation (Simulation) Chargement Test sur le matériel Processus de développement d’un programme pour une ‘‘simple’’ application
  16. 16. PROGRAMMATION Pourquoi utiliser le langage C l’assembleur proche du langage machine est trop peu lisible est mal adaptés à une architecture complexe de programme. Il existe de nombreux langage de haut niveau : Certain développer pour des microcontrôleurs, d’autres largement répandus dans les ordinateurs ont étés adaptés aux besoins des microcontrôleurs. C’est le cas du C.
  17. 17. PROGRAMMATION Pré-requises: basiques de langage C ( types de base , Les opérateurs , Les instructions de contrôle , les fonctions … ) Mikroc Pro for PIC ( édition du programme , compilation , librairies …) .
  18. 18. PLAN Introduction au microcontrôleur (PIC) Programmation des PICs PIC 16F84A PIC 16F877
  19. 19. Microcontrôleur PIC 16F84A Les caractéristique essentielles du Pic 16F84A : Operating frequency/ speed 0-20 MHz Power supply voltage 2.0-5.5V 13 I/O pins with individual direction control -High current sink/source for direct LED drive (25 mA sink/source max. per pin) 68 bytes of Data RAM (Data memory ; volatile)  64 bytes of Data EEPROM (Data memory ; non-volatile) - 10.000.000 typical erase/write cycles
  20. 20. 1024 words (1K) of program memory flash: - 10.000.000 typical erase/write cycles Four interrupt sources: - External RB0/INT pin - TMR0 timer overflow - PORTB<7:4> interrupt-on-change - Data EEPROM write complete TMR0: 8-bit timer/counter Watch-dog timer (chien de garde)
  21. 21. 1-La mise sous tension : • Lorsque le µC est mis sous-tension , il doit exécuter son programme dés le début ( le compteur du programme 'PC' forcé à 0 ). • Le CPU (Central Processing Unit) démarre l’exécution de son programme lorsque la condition RESET n’est plus maintenue (lorsque la pin MCLR est mise au niveau haut )
  22. 22. 2-Les ports parallèles : 2-1 Caractéristiques électriques :
  23. 23. 2-2 les entrées logique : • Le PIC ne fonctionne qu’avec deux niveaux logiques 0 et 1 ; bas et haut ( les broches comportent des trigger de Schmitt ou TLL). • Pour déterminer si un signal sera bien reçu (interprété) par le circuit/la broche logique ,il est nécessaire de comprendre le fonctionnement des entrées (les broches)
  24. 24. 2-3 Resistance Pull-up/down : Ayant une grande valeur d’ordre 10K , elle permet de maintenir les broches (input) dans un niveau logique donné (niveau par défaut ). L’entrée du µC fig.(a) (resp. fig.(b) ) est maintenue au niveau logique 1 (resp. 0 ) ; lorsqu’on ferme l’interrupteur l’entrée est forcée à la masse (resp. +V) qui correspond à 0 (resp. 1) Resistance Pull-up Resistance Pull-down
  25. 25. 2-4 Port B ( Pic 16F84A) : • Ce port peut être utilisé généralement dans les deux directions (in/out) (8 bits) , et doté de résistance Pull-up ‘Weak pull-up’ pour chaque broche. • Le registre TRISB permet la configuration de la direction des broches ; Chaque bit positionné à 1 configure la pin correspondante en entrée. Chaque bit à 0 configure la pin en sortie • La configuration des broches en mode out se fait à l'aide du registre PORTB (faire sortir 5v ou 0v) (0=0V ; 1=5V) • Le registre OPTION (bit 7) permet une configuration globale (tout ou rien) des résistances ‘Weak pull-up’ ; • La résistance interne (Weak pull-up) est automatiquement désactivée pour les broches en mode output/sortie . • Le bit 0 du PORT B peut également être utilisé comme entrée d'interruption externe. Le choix du front de déclenchement se fait en configurant le bit 6 du registre OPTION. • Les 4 broches RB7:RB4 (PB7 PB6 PB5 et PB4) provoquent une interruption sur un changement d'état si elles sont configurées en ENTREE via le registre INTCON (configurable ON/OFF)
  26. 26. 2-5 Port A ( Pic 16F84A) : • Comme pour le PORTB , ce port peut être utilisé généralement dans les deux directions (in/out) (5 bits) • La configuration de direction se fait à l'aide du registre TRISA : Chaque bit positionné à 1 configure la pin correspondante en entrée. Chaque bit à 0 configure la pin en sortie ( 0 = out ; 1 =in ) • La configuration des broches en mode sortie se fait à l'aide du registre PORTA (0=0V ; 1=5V)
  27. 27. RA4 ( Pic 16F84A) : • En entrée, la broche RA4 peut être utilisée soit comme E/S numérique normale, soit comme entrée horloge pour le TIMER TMR0 • En sortie, RA4 est une E/S à drain ouvert (open drain), pour l'utiliser comme sortie logique (0/1), il faut ajouter une résistance de pull-up externe (470 ohms–4.7 K ohms) , dans ce cas le courant provient de la résistance pull- up. •Output ‘open drain’ : ce type de broche a un mode ‘Out’ flexible , il peut être utilisé : comme sortie logique normal (fig. a) , ou comme un driver direct pour une charge légère (fig. b) (pour le Pic 16F84A Vod max =8.5 V ) Resistance Pull-up sur RA4
  28. 28. 2-6 l’horloge ( Pic 16F84A) : • La fréquence de l'horloge interne du PIC est obtenue en divisant par 4 la fréquence de l'horloge externe. • Le PIC 16F84A peut opérer dans 4 mode : -LP : Low Power Crystal (32,768 kHz jusqu'à 200 kHz) -XT : Crystal/Resonator 1–4 MHz -HS : High Speed > 4MHz : grande consommation de courant -RC : Resistor/Capacitor difficile de prévoir la fréquence d'oscillation avec certitude. Mode LP , XT et HS Mode RC
  29. 29. Sélection des capacités adéquates pour un Quartz Quartz
  30. 30. 3 : les registres spéciaux ( Pic 16F84A) : vue générale des registres :
  31. 31. 3-1 STATUS REGISTER : • Contient les différents bits flags liés aux opérations arithmétiques, les indicateurs de RESET et le bit de sélection de la BANK mémoire.
  32. 32. 3-2 OPTION REGISTER : • Ce registre en lecture écriture permet de configurer les pré-diviseurs(Prescaler) du TIMER et du WATCHDOG, la source du TIMER, le front des interruptions et le choix du Pull up sur le Port B.
  33. 33. 3-3 Gestion des interruptions : • Une interruption provoque l’arrêt du programme principal pour aller exécuter une procédure d'interruption (void interrupt() ). A la fin de cette procédure, le microcontrôleur reprend le programme à l’endroit où il s’était arrêté. • A chaque interruption sont associés deux bits: un bit de validation (E:enabale) et un drapeau (F:flag). Le premier permet d'autoriser ou non l'interruption, le second permet au programmeur de savoir de quelle interruption il s'agit. • Toutes les sources d’interruption arrivant à la même adresse, si le programmeur utilise plusieurs sources d’interruptions, il lui faudra déterminer lui-même laquelle il est en train de traiter. • Une interruption ne peut pas être interrompue par une autre interruption. Les interruptions sont donc invalidées automatiquement lors du saut à void interrupt() par l’effacement du bit GIE (que nous allons voir). • Les interruptions sont remises en service automatiquement lors du retour de l’interruption.
  34. 34. INTCON REGISTER: • Ce registre en lecture écriture permet de configurer les différentes sources d'interruption • Le PIC16F84A possède 4 sources d'interruption
  35. 35. 4 - TIMER/COUNTER TMR0 : • Rôle : Réaliser une temporisation • Élément essentiel : Compteur qui s'incrémente à chaque front montant (ou descendant ) du signal qui lui est appliqué : • Un TIMER doit pouvoir compter un temps défini par le programme (par exemple 1ms, 10ms,50ms, etc).  Pour cela, 2 paramètres peuvent être modifiés :  La fréquence du signal appliqué au compteur (prescaler)  Le nombre d'impulsions à compter
  36. 36. • Le contenu du TMR0 est accessible par le registre qui porte le même nom. Il peut être lu ou écrit à n'importe quel moment. Après une écriture, l'incrémentation est inhibée pendant deux cycles instruction • Au débordement de TMR0 , le drapeau T0IF est placé à 1. Ceci peut déclencher l'interruption T0I si celle-ci est validée • Ce registre contient une valeur indéterminée à la mise sous tension, si vous désirez compter à partir d’une valeur précise (0 ou autre), placer explicitement cette valeur dans votre programme . • Ce module peut fonctionner en mode TIMER, quand il s'incrémente en fonction (PRESCALER ) du cycle instruction (Fosc/4) ou en mode compteur, quand il s'incrémente à chaque front montant/descendant de l'horloge externe appliquée sur le Port A0.
  37. 37. • Quelque soit l'horloge choisie, on peut la passer dans un diviseur de fréquence programmable (prescaler) dont le rapport est fixés par les bits PS0, PS1 et PS2 du registre OPTION • Il importe de comprendre que le prédiviseur fonctionne de la façon suivante : - Le prédiviseur compte jusque sa valeur programmée par PS0/PS2. - Une fois cette valeur atteinte, TMR0 est incrémenté - Le prédiviseur recommence son comptage à l’impulsion suivante
  38. 38. MODE TIMER (temporisateur) : • Dans ce mode , le TMR0 compte les cycles d’horloge du PIC lui-même éventuellement prédivisé . • Pour travailler dans le mode nous devons configurer OPTION de la façon suivante : OPTION= xx0abc bc : valeur du prescaler a : assignement du prescaler MODE compteur : • Dans ce mode , le TMR0 compte les impulsions (front mentant ou descendant) reçues sur la pin RA4/TOKI • Pour travailler dans le mode nous devons configurer OPTION de la façon suivante : OPTION= xx1fabc bc : valeur du prescaler a : assignement du prescaler
  39. 39. • La formule suivante peut être utilisée pour calculer la duré nécessaire pour que TIMER génére un débordement/overflow : Overflow time = 4 * TOSC * Prescaler * (256 – TMR0) avec : Overflow time en µs ; TOSC est la période d’oscillation = 1/Fosc Prescaler est le pré-diviseur choisi par le registre OPTION TMR0 est la valeur chargée dans le registre TMR0 (valeur initiale) Exemple Calcul d'un temps de 10 ms : T= 10.10^-3 = X * Y * 4 /4.10^6 avec : X= valeur du pré-deviseur (Prescaler) Y= valeur à compter= 256 - valeur initiale Soit X * Y= 10000
  40. 40. Remarque: • L’écriture dans le registre TMR0 efface le contenu du prédiviseur. Les événements survenus au niveau du prédiviseur sont donc perdus. ne pas confondre contenu (nombre d’événements comptés) et valeur (déterminée par les bits de configuration) • En mode compteur : pour ne pas rater un impulsion il faut Tsignal > Tcyc = 4*Tosc
  41. 41. 4 - Le WatchdogTimer WDT (Chien de garde) Le WATCHDOG, ou chien de garde est un mécanisme de protection de votre programme. Il sert à surveiller si celui- ci s’exécute toujours dans l’espace et dans le temps que vous lui avez attribués. • C’est un compteur 8 bits incrémenté en permanence (même si le µC est en mode sleep) par une horloge RC )intégrée indépendante de l'horloge système. Lorsqu’il déborde, (WDT TimeOut), deux situations sont possibles :  Si le µC est en fonctionnement normal, le WDT time-out provoque un RESET. Ceci permet d’éviter de rester planté en cas de blocage du microcontrôleur par un processus indésirable non contrôlé  Si le µC est en mode SLEEP, le WDT time-out provoque un WAKE-UP, l'exécution du programme continue normalement là où elle s'est arrêtée avant de rentrer en mode SLEEP. Cette situation est souvent exploitée pour réaliser des temporisations • L'utilisation du WDT doit se faire avec précaution pour éviter la réinitialisation (inattendue) répétée du programme. Pour éviter un WDT timeOut lors de l'exécution d'un programme, on a deux possibilités :  Inhiber le WDT d'une façon permanente en mettant à 0 le bit WDTE .  Remettre le WDT à 0 périodiquement dans le programme à l'aide de l'instruction CLRWDT pour éviter qu'il ne déborde
  42. 42. illustration du TMR0 et WDT
  43. 43. 5- Redémarrage (RESET) : • Retenez ceci : pour faire fonctionner le PIC normalement, reliez la pin MCLR au +5V. La mise à la masse de cette broche provoque un reset du PIC. SI vous voulez par exemple un bouton reset sur votre montage, reliez la pin MCLR au +5 via une résistance de 10Kohms. Placez votre bouton reset entre la pin MCLR et la masse, comme dans ce schéma : Le tableau suivant vous montre tous les événements liés au reset, et leurs effets sur le PC (où le programme se branchera) et le registre STATUS. « x » renseignent un état inconnu, « u » signifie inchangé
  44. 44. 4 - Le mode SLEEP : • Le PIC peut être placé en mode faible consommation à l'aide de l'instruction SLEEP (en asm). Dans ce mode, l'horloge système est arrêtée ce qui arrête l'exécution du programme. Pour sortir du mode SLEEP, il faut provoquer un WAKE-UP, pour cela il y a 3 possibilités :  RESET externe dû à l'initialisation du PIC en mettant l'entrée MCLR à 0. Le PIC reprend l'exécution du programme à partir du début.  Timeout du chien de garde WDT si celui-ci est validé. Le PIC reprend le programme à partir de l'instruction qui suit l'instruction SLEEP  Interruption INT (sur RB0) ou RBI (sur RB4-RB7) ou EEI (fin d'écriture en EEPROM de données). Le bit de validation de l'interruption en question doit être validé, par contre, le WAKE-UP a lieu quelque soit la position de bit de validation globale GIE. On a alors deux situations :  GIE = 0, Le PIC reprend l'exécution du programme à partir de l'instruction qui suit l'instruction SLEEP, l'interruption n'est pas prise en compte  GIE = 1, Le PIC exécute l'instruction qui se trouve juste après l'instruction SLEEP puis se branche à la fonction void interrupt() pour exécuter la procédure d'interruption.
  45. 45. Applications ( PIC 16F84A)

×