MICROCONTRÔLEUR
-PIC-
2015-2016
PLAN
Introduction au microcontrôleur (PIC)
Programmation des PICs
PIC 16F84A
PIC 16F877
Microcontrôleur PIC 16F887
Les caractéristique essentielles du Pic 16F887 :
- Consommation : moins de 2mA sous 5V à 4 MHz...
Microcontrôleur PIC 16F887
-4 sources d'interruption :
- Externe par la broche partagée avec le Port B : PB0
- Par change...
1-Description des pins (Pic 16F887) :
Configuration de l’oscillateur :
• L'horloge interne est constituée d'un oscillateur à
quartz (XT,LP,HP) ou d'un oscillate...
2-les registres spéciaux SFR :
( Overview )
2-1- STATUS Register :
Contient les différents bits flags
liés aux opérations arithmétiques,
les indicateurs de RESET et l...
2-2- OPTION Register :
Ce registre en lecture écriture
permet de configurer les
prédiviseurs du TMR0 et du
WATCHDOG, la so...
2-3- Gestion des interruptions:
2-3-1 INTCON register:
Ce registre en lecture écriture
permet de configurer les différente...
2-3-2 PIE1 Register:
Ce registre contient les bits
individuels d'autorisation pour
les Interruptions des
périphériques. Le...
2-2-4 PIR1 Register:
Ce registre contient les FLAG
associés aux interruptions des
périphériques. Ces Flag passent
à "1" qu...
2-3-3 PIE2 Register:
2-2-5 PIR2 Register:
Associé à PIE2
3 Les ports E/S:
3-1 PORT A:
• Ce port est un port bidirectionnel de 8 bits (RA0 à RA7) désigné par PORTA ; les broches so...
Etudié en détail par la suite
(convertisseur Analogique
numérique )
3-2 PORT B:
• Il comporte 8 bits désigné par PORTB . Le registre de direction correspondant est TRISB
• Chaque broche du P...
3-3 PORT C:
• Le port C désigné par PORTC est un port bidirectionnel de 8 bits (RC0 à RC7).
• La configuration de directio...
3-4 PORT D:
• Le port D désigné par PORTD est un port bidirectionnel de 8 bits (RD0 à RD7).
• Chaque broche et configurabl...
3-5 PORT E:
• PORTE contient seulement 3 bits RE0, RE1 et RE2. Les 3 sont configurables en entrée ou en sortie à l’aide
de...
TRISE REGISTER
4-1 TIMER0:
• Ce TIMER fonctionne de façon identique à celui du PIC16F84A (voir chapitre précédent )
4-2 TIMER1:
• TIMER1 est un Timer/Compteur 16 bits (capable de compter de 0 à 65535) accessible en lecture/écriture par
l'...
Mode TIMER :
Dans ce mode, TMR1 est incrémenté en fonction de l’horloge système Fosc/4 éventuellement prédivisée. Le bit d...
Mode COMPTEUR synchrone :
• TMR1 compte alors les flancs montants du signal appliqué sur la pin RC0/T1OSO/T1CKI
• Pour tra...
Mode COMPTEUR asynchrone :
• TMR1 compte alors les flancs montants du signal appliqué sur la pin RC0/T1OSO/T1CKI
• Pour tr...
Le timer 1 et TOSCEN (Fonctionnement en mode double quartz):
• Il est utile d'utiliser une base de temps différente de cel...
4-2 TIMER2 :
• Le TIMER2 est un compteur sur 8 bits
• La valeur du diviseur total, vue par l’utilisateur,
est bien entendu...
Le timer 2 et les registres PR2 et T2CON
• Le principe du timer 2 est différent, dans le sens que l’événement détecté n’es...
• Forts de tout ceci, vous avez maintenant compris que la spécificité du timer 2, et donc son principal avantage, est
qu’i...
5-Le module de conversion A/N :
• Notre PIC 16F877 travaille avec un convertisseur analogique / numérique qui permet un éc...
Les valeurs représentées
Ne restent plus que les formules qui nous donnent les relations entre valeurs analogiques et repr...
pins et canaux utilisés
• Reste à savoir comment connecter le signal (signaux) analogique(s) sur notre
PIC.
La première ch...
6- Les modules CCP (Capture/Compare/PWM) :
Le PIC 16F877 possède deux modules CCP qui fonctionnent de la même façon. Chaqu...
6-1 Les registres utilisés : CCP1CON et CCP2CON
ces registres ont la même fonction, simplement CCP1CON concerne le module ...
6-2 Le mode capture :
• La première chose à remarquer est que ce mode fait intervenir une pin comme événement déclencheur....
le schéma-bloc correspondant.
• Vous constatez, à propos des contraintes, que
vous avez bien un flag CCPxIF par module,
un...
6-3 Le mode compare :
Ce mode de fonctionnement est basé sur la correspondance de la valeur du TIMER1 (TMR1H/TMR1L)
avec l...
mode 1000 :
Au moment de l'égalité, le drapeau CCPxIF et la broche CCPx passent à 1. C'est à l'utilisateur de les remettre...
6-4 Le mode PWM:
• PWM signifie « Pulse Width Modulation », ce qu’on pourrait traduire par modulation de largeur d’impulsi...
Utilisation du module PWM en Mikroc
7- le Module MSSP (Master Synchronous Serial Port ) :
Le MSSP est une des deux modules de communication série du PIC. Il p...
Voici un exemple tout à fait général de réception d’un mot de 8 bits en mode série synchrone. C’est un exemple, les
synchr...
Voici un second exemple, qui donne une lecture concrète de l’octet B’10011010’ :
7- 2 le module MSSP en mode SPI :
Ce mode (Serial Peripheral Interface) permet de transmettre et recevoir simultanément de...
7- 2-1 les registres utilisés (SPI) (informative):
nous allons utiliser 2 registres de configuration et de status, à savoi...
7-2-2 Mécanisme de fonctionnement (informative):
 Le mécanisme général n’est pas très compliqué à comprendre. Voyons tout...
Donc, on résume la séquence de la façon suivante : (informative)
- On transfère la donnée à émettre dans SSPBUF
- Le PIC c...
Utilisation du module SPI en Mikroc :
7-2-3 Utilisation en mode master :
Il y a 4 méthodes possibles pour le début de l’émission en fonction de l’état de repos ...
Donc, voyons le chronogramme d’émission :
• Vous constatez que l’émission des bits sur SDO est synchronisée avec l’horloge SCK, qui peut prendre 4
évolutions différ...
• Voyons maintenant la réception (mode maitre ) d’un octet placé par l’esclave sur la ligne SDI. Nous avons 2 modes
possib...
Examinons maintenant le cas où l’esclave « choisit » de placer son bit au milieu du cycle (donc au
moment où il procède à ...
• Remarquez que bien que vous travailliez en mode « maître », ce mot ne concerne que la génération
de l’horloge. Pour la p...
Vitesse de transmission (mode master ) :
La vitesse maximale permise pour la liaison série synchrone est donc de Fosc/4, s...
7-3-3 Utilisation en mode Slave:
•Comme vous l’aurez déjà compris depuis longtemps, ce mode (slave ou esclave) présente la...
Seul esclave Plusieurs esclaves
Remarque :
Les esclaves ne peuvent pas communiquer entre eux
Vitesses de transmission :
• Si vous décidez d’interfacer 2 PICs identiques ensemble, vous pouvez estimer que la vitesse
m...
7-3 MSSP en mode (bus) I²C (Inter Integrate Circuit) :
7-3-1 Introduction
Avant de parler du module MSSP en mode I2C du PI...
Comme les lignes SDA et SCK sont utilisées dans les deux sens par les deux circuits qui
communiquent, on peut avoir un cir...
Un bus I2C peut être relié à plusieurs circuits, mais pendant une communication, un des
circuits est le maître, c'est lui ...
7-3-1 Principe de fonctionnement du I2C :
1° Start condition
Au début d'une séquence d'échange, le master
génère un start ...
3° Stop condition
A la fin d'une séquence d'échange, le master génère
un stop condition (P) après lequel le bus
est de nou...
MIKROC permet de gérer La communication I2C en utilisant :
8-Le module USART :
USART signifie « Universal Synchronous Asynchronous Receiver Transmitter ». C’est
donc un module qui p...
Microcontrôleur PIC Microchip part2/2
Microcontrôleur PIC Microchip part2/2
Microcontrôleur PIC Microchip part2/2
Microcontrôleur PIC Microchip part2/2
Prochain SlideShare
Chargement dans…5
×

Microcontrôleur PIC Microchip part2/2

98 vues

Publié le

Microcontrôleur PIC 16F Microchip part2/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
98
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Microcontrôleur PIC Microchip part2/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. Microcontrôleur PIC 16F887 Les caractéristique essentielles du Pic 16F887 : - Consommation : moins de 2mA sous 5V à 4 MHz  RISC architecture (Reduce Instructions Construction Set ) ( 35 instructions) 33 Ports Entrée-Sortie bidirectionnels pouvant produire 25 mA par sortie Operating frequency/ speed 0-20 MHz Tension d’alimentation :2.0-5.5V 33 Ports Entrée-Sortie bidirectionnels pouvant produire 25 mA par sortie convertisseur analogique 10 bits à 8 entrées 368 bytes of Data RAM (Data memory ; volatile)  256 bytes of Data EEPROM (Data memory ; non-volatile) : 10.000.000 typical erase/write cycles 8K of program memory flash: 10.000.000 typical erase/write cycles 2 modules pour PWM avec une résolution de 10 bits
  4. 4. Microcontrôleur PIC 16F887 -4 sources d'interruption : - Externe par la broche partagée avec le Port B : PB0 - Par changement d'état des bits du Port B: PB4 PB5 PB6 ou PB7 - Par un périphérique intégré dans le chip: écriture de Data en EEPROM - TIMER 2 Compteurs 8 bits et 1 compteur 16 bits avec pré diviseur programmable (TMR0 , TMR1 et TMR2) Watch-dog timer (chien de garde)  USART pour transmission série synchrone ou asynchrone
  5. 5. 1-Description des pins (Pic 16F887) :
  6. 6. Configuration de l’oscillateur : • L'horloge interne est constituée d'un oscillateur à quartz (XT,LP,HP) ou d'un oscillateur RC (voir chapitre précédent )
  7. 7. 2-les registres spéciaux SFR : ( Overview )
  8. 8. 2-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.
  9. 9. 2-2- OPTION Register : Ce registre en lecture écriture permet de configurer les prédiviseurs du TMR0 et du WATCHDOG, la source du TIMER, le front des interruptions et le choix du Pull up sur le PORTB.
  10. 10. 2-3- Gestion des interruptions: 2-3-1 INTCON register: Ce registre en lecture écriture permet de configurer les différentes sources d'interruption;
  11. 11. 2-3-2 PIE1 Register: Ce registre contient les bits individuels d'autorisation pour les Interruptions des périphériques. Le bit 6 de INTCON (PEIE) doit être mis à "1" pour autoriser une quelconque IT de périphérique
  12. 12. 2-2-4 PIR1 Register: Ce registre contient les FLAG associés aux interruptions des périphériques. Ces Flag passent à "1" quand une IT correspondante survient et que le bit d'autorisation est bien positionné. Ces Flag doivent être remis à "0" par Soft (Associé à PIE1 )
  13. 13. 2-3-3 PIE2 Register:
  14. 14. 2-2-5 PIR2 Register: Associé à PIE2
  15. 15. 3 Les ports E/S: 3-1 PORT A: • Ce port est un port bidirectionnel de 8 bits (RA0 à RA7) désigné par PORTA ; les broches sont configurable par les registres ANSEL et TRISA • 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, pour l'utiliser comme sortie logique, il faut ajouter une résistance de pull-up externe. • Les autres broches (RA0, RA1, RA2, RA3 et RA5) peuvent être utilisées soit comme E/S numériques soit comme entrées analogiques : Pour les utiliser en SORTIES NUMERIQUES, il suffit de les configurer en sortie à l'aide du registre de direction TRISA. Pour les utiliser en ENTRÉES NUMERIQUES, il faut les configurer en entrée à l'aide de TRISA, en plus il faut les configurer en numérique en plaçant la valeur '00000110' dans le registre ADCON1, Pour les utiliser en ENTRÉE ANALOGIQUE ( détaillé par la suite :convertisseur Analogique numérique ). • Quelque soit le mode (Analogique ou Numérique), il faut utiliser le registre TRISA pour configurer la direction des E/S
  16. 16. Etudié en détail par la suite (convertisseur Analogique numérique )
  17. 17. 3-2 PORT B: • Il comporte 8 bits désigné par PORTB . Le registre de direction correspondant est TRISB • Chaque broche du PORT B est munie d'une résistance pull-up (pour chaque pin ) que l'on peut mettre ou non en service en mode entrée uniquement. On active cette fonction par la mise à "0" du bit 7 dans le registre OPTION • La résistance pull-up est inactive quand le port est configuré en sortie • Les 4 broches PB7:PB4 provoquent une interruption sur un changement d'état si elles sont configurées en entrée On doit remettre à zéro le Flag de cette interruption (bit 0 du registre INTCON ) dans le programme d'interruption. • 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.
  18. 18. 3-3 PORT C: • Le port C désigné par PORTC est un port bidirectionnel de 8 bits (RC0 à RC7). • La configuration de direction se fait à l'aide du registre TRISC (in/out) • Toutes les broches du port C peuvent être utilisées soit comme E/S normales soit comme broches d'accès à différents modules comme le TIMER 1, les modules de comparaison et de capture CCP1/2, le TIMER 2, le port I2C ou le port série, ceci sera précisé au moment de l'étude de chacun de ces périphériques. • Pour l’utilisation d’une broche du port C comme E/S normale, il faut s’assurer qu’elle n’a pas été affectée à un de ces modules. Par exemple, si TIMER1 est validé, il peut utiliser les broches RC0 et RC1 selon sa configuration.
  19. 19. 3-4 PORT D: • Le port D désigné par PORTD est un port bidirectionnel de 8 bits (RD0 à RD7). • Chaque broche et configurable en entrée ou en sortie à l’aide du registre TRISD. Pour configurer une broche en entrée, on positionne le bit correspondant dans TRISD à 1 et inversement. • PORTD n’est pas implémenté sur 16F876, il est disponible sur le 16F877. • PORTD peut être utilisé dans un mode particulier appelé parallèle slave port, pour cela il faut placer le bit PSPMODE (bit 4) de TRISE à 1. Dans ce cas les 3 bits de PORTE deviennent les entrées de control de ce port (RE, WE et CS) • Pour utiliser PORTD en mode normal, il faut placer le bit PSPMODE de TRISE à 0
  20. 20. 3-5 PORT E: • PORTE contient seulement 3 bits RE0, RE1 et RE2. Les 3 sont configurables en entrée ou en sortie à l’aide des bits 0, 1 ou 2 du registre TRISE. • Les 3 bits de PORTE peuvent être utilisés soit comme E/S numérique soit comme entrées analogiques du CAN. La configuration se fait à l’aide du registre ADCON1. • Si le bit PSPMODE de TRISE est placé à 1, Les trois bits de PORTE deviennent les entrées de control du PORTD qui (dans ce cas) fonctionne en mode parallèle Slave mode • Pour utiliser les broches de PORTE en E/S numériques normales : - Placer 06h dans ADCON1 - Placer le bit PSPMODE de TRISE à 0
  21. 21. TRISE REGISTER
  22. 22. 4-1 TIMER0: • Ce TIMER fonctionne de façon identique à celui du PIC16F84A (voir chapitre précédent )
  23. 23. 4-2 TIMER1: • TIMER1 est un Timer/Compteur 16 bits (capable de compter de 0 à 65535) accessible en lecture/écriture par l'intermédiaire de deux registres 8 bits TMR1H et TMR1L qui constituent sa partie haute et sa partie basse. • Le contrôle du TMR1 se fait par le registre T1CON • TMR1 peut fonctionner dans 2 modes différents : -Timer Synchrone (horloge interne) - Compteur Synchrone ou Asynchrone (horloge externe)
  24. 24. Mode TIMER : Dans ce mode, TMR1 est incrémenté en fonction de l’horloge système Fosc/4 éventuellement prédivisée. Le bit de synchronisation (T1SYNC) n'a pas d'effet car l'horloge Fosc/4 est toujours synchronisée sur l'horloge système. (T1CON = B’00ab0001’ ) ab= prédiviseur
  25. 25. Mode COMPTEUR synchrone : • TMR1 compte alors les flancs montants du signal appliqué sur la pin RC0/T1OSO/T1CKI • Pour travailler dans le mode « compteur synchrone », nous devons configurer T1CON de la façon suivante : T1CON : B’00ab0011’ • Evidemment, pour pouvoir compter des événements sur la pin T1CKI, il faut que cette pin soit configurée en entrée via le registre TRISC. • le timer 1 utilisé en mode « compteur synchrone » ne permet pas de réveiller le PIC sur une interruption du timer 1. C’est logique, car, puisqu’il n’y a pas de comptage  il n’y a pas de débordement • De plus, le flanc montant de T1CKI n’est pris en compte que s’il a été précédé d’au moins un flanc descendant
  26. 26. Mode COMPTEUR asynchrone : • TMR1 compte alors les flancs montants du signal appliqué sur la pin RC0/T1OSO/T1CKI • Pour travailler dans le mode nous devons configurer T1CON de la façon suivante :T1CON : B’00ab0111’ • Dans cette configuration et durant le mode SLEEP (mode sommeil), le timer continu l’incrémentation et peut générer une interruption sur un débordement qui réveille le µC de son sommeil.
  27. 27. Le timer 1 et TOSCEN (Fonctionnement en mode double quartz): • Il est utile d'utiliser une base de temps différente de celle du quartz du pic. En effet, ceci permet d'utiliser une base de temps multiple de la seconde (quartz horloge à 32768Khz) tout en conservant une vitesse maximale pour le fonctionnement du pic soit 20 MHz. • Ceci permet donc de choisir un quartz multiple exact de la fréquence à mesurer, tout en conservant une vitesse de traitement maximale du PIC. En fait, l’oscillateur a été conçu pour fonctionner efficacement à une valeur centrée sur 32KHz Mais vous pouvez augmenter cette fréquence jusque 200 KHz (vérifier le datasheet pour la valeur des condensateurs entourant le quartz) • La valeur à placer dans T1CON est : T1CON = B’00ab1x11’ Remarquez la présence d’un « x » qui vous permet de choisir si vous désirez travailler en mode synchrone ou asynchrone. Les remarques que j’ai faite à ce sujet pour l’utilisation en mode compteur restent d’application • Remarque : Dans ce mode particulier, les pins RC0 (T1OSO) et RC1 (T1OSI) sont automatiquement configurées en entrée, indépendamment des bits correspondants de TRISC. Il est donc inutile de configurer les bits 0 et 1 de ce registre.
  28. 28. 4-2 TIMER2 : • Le TIMER2 est un compteur sur 8 bits • La valeur du diviseur total, vue par l’utilisateur, est bien entendu obtenue en multipliant la valeur du prédiviseur par celle du postdiviseur • ll faut également tenir compte que ce timer ne dispose d’aucune entrée extérieure via une pin du PIC. Il ne peut donc fonctionner qu’en mode « timer » pur. • Le flag d’interruption se nomme TMR2IF, en toute logique, tandis que le bit d’autorisation s’appelle TMR2IE.
  29. 29. Le timer 2 et les registres PR2 et T2CON • Le principe du timer 2 est différent, dans le sens que l’événement détecté n’est pas le débordement « ordinaire » du timer (c’est-à-dire le passage de 255 à 0), mais le débordement par rapport à une valeur prédéfinie dans le registre PR2 • On peut donc dire que le fonctionnement du timer est le suivant : - On incrémente le contenu du prédiviseur à chaque cycle d’instruction éventuellement prédivisé - Chaque fois que le contenu de TMR2 dépasse le contenu de PR2, on remet TMR2 à 0, et on incrémente le contenu du postdiviseur. -Chaque fois que le contenu du postdiviseur correspond à un multiple de la valeur du postdiviseur, on positionne le flag TMR2IF. Pour clarifier la compréhension, je vous donne le schéma-bloc du timer 2
  30. 30. • Forts de tout ceci, vous avez maintenant compris que la spécificité du timer 2, et donc son principal avantage, est qu’il permet de configurer le « débordement » sur n’importe quelle valeur de TMR2, associé à un large éventail de valeurs de diviseur. Inutile donc d’attendre le passage de 255 à 0 , quoique cela reste possible, simplement en plaçant 255 dans PR2. • Cet avantage, combiné à la grande flexibilité de l’ensemble prédiviseur/postdiviseur, permet d’obtenir très facilement des durées d’interruption précises sans complications logicielles • Une écriture dans le registre TMR2 efface le contenu du prédiviseur et du postdiviseur. Pour rappel, ne pas confondre contenu (nombre d’événements comptés) et valeur (déterminée par les bits de configuration). • la formule de la durée séparant 2 positionnements consécutifs du flag TMR2IF. Durée totale = Tcyc* prédiviseur * postdiviseur * (PR2 +1-TMR2)
  31. 31. 5-Le module de conversion A/N : • Notre PIC 16F877 travaille avec un convertisseur analogique / numérique qui permet un échantillonnage sur 10 bits. Le signal numérique peut donc prendre 1024 valeurs possibles • Les pics considèrent par défaut que la valeur minimale correspond à leur Vss d’alimentation, tandis que la valeur maximale correspond à la tension positive d’alimentation Vdd. Nous verrons cependant qu’il est possible d’utiliser d’autres valeurs Remarque : -Il est recommandé que la résistance de votre source reste inférieure à 10KOhms  MIKROC permet la lecture d’une valeur analogique en utilisant la librairie ADC
  32. 32. Les valeurs représentées Ne restent plus que les formules qui nous donnent les relations entre valeurs analogiques et représentations numériques. Nous pouvons dire que pour une numérisation sur 10 bits, on obtiendra la valeur numérique : Val = [(VIN - VREF-) / (VREF+ - VREF-)] * 1023 VIN = ((Val/1023) * (VREF+ - VREF-)) + VREF avec : VREF- : tension minimale analogique (référence négative) VREF+ : tension maximale analogique (référence positive) VIN : tension d’entrée à numériser Val : valeur numérique obtenue sur 10 bits
  33. 33. pins et canaux utilisés • Reste à savoir comment connecter le signal (signaux) analogique(s) sur notre PIC. La première chose à comprendre, c’est que le PIC ne contient qu’un seul convertisseur, mais plusieurs pins sur lesquelles connecter les signaux analogiques. Ces différentes entrées seront donc des canaux différents d’un seul et même convertisseur. • Le 16F877 dispose de 8 canaux d’entrée analogique. Vous pourrez donc échantillonner jusque 8 signaux différents sur les pins AN0 à AN7(AN0:AN4 sont les pins RA0:RA3 et RA5 ,tandis que les pins AN5:AN7 sont RE0:RE2 ) • Notez également que les pins ANx sont des pins d’entrée. Il n’est donc pas question d’espérer leur faire sortir une tension analogique.
  34. 34. 6- Les modules CCP (Capture/Compare/PWM) : Le PIC 16F877 possède deux modules CCP qui fonctionnent de la même façon. Chaque module contient un registre sur 16-bits qui peut fonctionner en un des modes suivants : o capture. o comparaison o PWM. Au niveau ressources utilisées, nous pouvons simplement dire que les modules CCPx utilisés en mode compare et en mode capture font appel au timer 1, alors que le mode PWM nécessite l’utilisation du timer 2.
  35. 35. 6-1 Les registres utilisés : CCP1CON et CCP2CON ces registres ont la même fonction, simplement CCP1CON concerne le module CCP1, tandis que CCP2CON concerne le module CCP2.
  36. 36. 6-2 Le mode capture : • La première chose à remarquer est que ce mode fait intervenir une pin comme événement déclencheur. Il s’agit donc d’une entrée. Il est donc impératif de configurer la pin CCPx en entrée via le registre TRISC avant de pouvoir utiliser le module CCPx en mode « capture ». (x= 1 ou 2 ) • Le principe est le suivant : - Au moment de l’apparition de l’événement déclencheur sur la pin concernée, la valeur (16 bits) du timer 1 contenue dans les registres TMR1H et TMR1L est copiée dans les registres CCPR1H et CCPR1L. -Simultanément, le bit CCP1IF du registre PIR1 est validé, et une interruption intervient si elle est configurée. • L’événement déclencheur est une variation du signal sur la pin CCP1/RC2 pour le module CCP1, et sur la pin CCP2/RC1 pour le module CCP2. L’événement qui provoque la capture dépend des bits CCPxM3 à CCPxM0 :
  37. 37. le schéma-bloc correspondant. • Vous constatez, à propos des contraintes, que vous avez bien un flag CCPxIF par module, une pin CCPx, un registre de configuration CCPxCON, et un registre 16 bits de sauvegarde de la valeur capturée. Par contre, vous n’avez qu’un seul timer, à savoir TMR1, utilisé pour les 2 modules. • Remarquez que le prédiviseur ne s’applique que pour la détection des signaux à flancs montants. Remarque pour l’utilisation : -Le timer 1 doit impérativement être configuré en mode « timer » ou en mode « compteur synchrone ». -Tout changement de configuration du mode « capture » peut provoquer un positionnement indésirable du bit CCPxIF. Avant tout changement, vous devez donc interdire les interruptions CCPx (en mettent le bit CCP1IE (PIE1<2>) à 0 / CCP2IE (PIE2<0>) à 0 ), et forcer CCPxIF à 0 avant de réautoriser les interruptions. -La modification du prédiviseur en cours de fonctionnement peut positionner le bit CCPxIF de façon non souhaitée. Il est donc conseillé d’effacer d’abord CCPxCON avant de choisir le nouveau prédiviseur.
  38. 38. 6-3 Le mode compare : Ce mode de fonctionnement est basé sur la correspondance de la valeur du TIMER1 (TMR1H/TMR1L) avec la valeur contenue dans CCPRxH/CCPRxL. L’égalité de ces valeurs entraîne une ou plusieurs actions en fonction du mode choisi.
  39. 39. mode 1000 : Au moment de l'égalité, le drapeau CCPxIF et la broche CCPx passent à 1. C'est à l'utilisateur de les remettre à 0 pour une prochaine utilisation. RC2 doit être configuré en sortie. mode 1001 : Au moment de l'égalité, le drapeau CCPxIF passe à 1 la broche CCPx passent à 0. C'est à l'utilisateur de les remettre à leur état d’origine pour une prochaine utilisation. RC2 doit être configuré en sortie. mode 1010 : A l'égalité le drapeau CCPxIF passe à 1. la broche CCPx reste inchangée. mode 1011 : A l'égalité, le drapeau CCP1xF passe à 1, La broche CCPx reste inchangée , le timer TMR1 est remis à 0 (et si CCP2 une conversion A/D est faite si ce module est activé). Remarque pour l’utilisation : -Le module CCPx en mode « compare » ne peut fonctionner que si le timer 1 fonctionne en mode « timer » ou en mode « compteur synchrone ». Le fonctionnement en mode « compteur asynchrone » ne permet pas le fonctionnement de ce module -L’utilisation de la pin CCPx dans ce mode n’est possible qu’après avoir configuré la pin concernée en sortie .
  40. 40. 6-4 Le mode PWM: • PWM signifie « Pulse Width Modulation », ce qu’on pourrait traduire par modulation de largeur d’impulsion .En somme, il s’agit d’un signal binaire de fréquence fixe dont le rapport cyclique peut être modulé par logiciel. • Notez donc qu’il y a 2 paramètres qui définissent un signal « PWM » : - la durée d’un cycle complet (ou, par déduction, sa fréquence de répétition) - le rapport cyclique
  41. 41. Utilisation du module PWM en Mikroc
  42. 42. 7- le Module MSSP (Master Synchronous Serial Port ) : Le MSSP est une des deux modules de communication série du PIC. Il permet d'échanger des données en mode synchrone avec d'autres circuits qui peuvent être des microcontrôleurs, des mémoires EEPROM série, des convertisseurs A/N, des modules d'affichage . . . Il peut fonctionner selon deux modes : le mode SPI (Serial Peripheral Interface) et le mode I2C (Inter-Integrated Circuit). 7-1 Les liaisons série de type synchrone (informative/rappel ) : Une liaison série est une liaison qui transfère les données bit après bit (en série), au contraire d’une liaison parallèle, qui transmet un mot à la fois. il y a 2 façons d’envoyer les bits à la suite les uns des autres : - Soit vous commencez par le bit 7, et vous poursuivez jusqu’au bit 0. C’est la méthode utilisée par le module MSSP. - Soit vous procédez de façon inverse, d’abord le bit 0 jusqu’au bit de poids le plus fort. C’est de cette façon que fonctionnera notre module USART, que nous étudierons plus tard.
  43. 43. Voici un exemple tout à fait général de réception d’un mot de 8 bits en mode série synchrone. C’est un exemple, les synchronisations et les niveaux varient d’un circuit à l’autre. Dans cet exemple, la lecture s’effectue sur le front descendant du signal d’horloge : Vous constatez que : -La lecture s’effectue à un endroit stable du bit concerné (vers le milieu de sa durée) - Il y a 2 lignes rouges, car le bit peut prendre 2 valeurs (0 ou 1). - Le passage d’un niveau à l’autre n’est pas instantané, ce qui explique les lignes rouges obliques, et la zone de transition est le temps durant laquelle une lecture ne donnerait pas une valeur fiable
  44. 44. Voici un second exemple, qui donne une lecture concrète de l’octet B’10011010’ :
  45. 45. 7- 2 le module MSSP en mode SPI : Ce mode (Serial Peripheral Interface) permet de transmettre et recevoir simultanément des mots de 8bits. Il utilise les broches : -RC4/SDI : Serial Data Input (doit être configurée en entrée) -RC5/SDO : Serial Data Output (doit être configurée en sortie) -RC3/SCK : Serial Clock (doit être configurée en sortie) -RA4/SS : Slave Select : Utilisée optionnellement en mode slave soit comme entrée de synchronisation soit comme Chip Select en mode esclave multiples. Elle doit être configurée en E/S numérique à l’aide du registre ADCON1 et comme entrée à l’aide du registre TRISA Deux modes de fonctionnement sont possibles : Mode master : C'est le PIC qui génère et gère l'horloge de synchronisation SCK. C'est donc lui qui décide le moment de démarrage d'une transmission réception. Mode slave : L'horloge est générée par le circuit (master) avec lequel on communique. Notre Pic démarre une émission/réception au moment ou il commence à recevoir l'horloge venant du maître.
  46. 46. 7- 2-1 les registres utilisés (SPI) (informative): nous allons utiliser 2 registres de configuration et de status, à savoir « SSPSTAT », « SSPCON » A ces registres s’ajoutent le SSPSR (Synchronous Serial Port Shift Register), qui contient la donnée en cours de transfert, et le registre SSPBUF (Synchronous Serial Port BUFfer) qui contient l’octet à envoyer, ou l’octet reçu, suivant l’instant de la communication
  47. 47. 7-2-2 Mécanisme de fonctionnement (informative):  Le mécanisme général n’est pas très compliqué à comprendre. Voyons tout d’abord du côté de l’émetteur. Le registre SSPSR , est tout simplement un registre qui effectue des décalages (Comme le premier bit à envoyer est le bit 7, le registre devra décaler vers la gauche ). Le mécanisme se poursuit jusqu’à ce que les 8 bits soient envoyés. Côté récepteur, c’est évidemment le même genre de mécanisme. Le bit reçu sur la ligne SDI est entré par le côté droit du même registre SSPSR, donc par le bit 0. Ce registre subit alors un décalage vers la gauche qui fait passer ce bit en position b1. Le bit suivant sera alors reçu en position b0, et ainsi de suite. Le dernier bit reçu entraîne automatiquement la copie de la donnée contenue dans SSPSR vers le registre SSPBUF
  48. 48. Donc, on résume la séquence de la façon suivante : (informative) - On transfère la donnée à émettre dans SSPBUF - Le PIC copie cette donnée dans SSPSR - On opère 8 décalages vers la gauche, chaque bit sortant est envoyé vers SDO, chaque bit entrant provient de SDI - Le PIC copie la donnée vers SSPBUF, donc remplace la donnée à émettre par la donnée reçue. - A ce moment, le bit BF est positionné, indiquant que SSPBUF contient une donnée à lire, et le flag SSPIF est positionné également pour indiquer la fin du cycle. Donc, toute émission s’accompagne automatiquement d’une réception, et réciproquement, toute réception nécessite une émission.
  49. 49. Utilisation du module SPI en Mikroc :
  50. 50. 7-2-3 Utilisation en mode master : Il y a 4 méthodes possibles pour le début de l’émission en fonction de l’état de repos et l’instant de transmission (tableau ci-dessous ). Il y a par contre 2 façons de déterminer le moment de la lecture pour la réception : Soit au milieu du cycle, soit à la fin du cycle. Ceci nous donne 8 modes de fonctionnement possibles au total. Etat de repos quel sens de transition de l’horloge accompagne le placement du bit sur la ligne SDO Horloge (SCK) 0 0 SCK à 0 au repos, le placement de la donnée induit un flanc montant de SCK 0 1 SCK à 0 au repos, le placement de la donnée induit un flanc descendant de SCK 1 0 SCK à 1 au repos, le placement de la donnée induit un flanc descendant de SCK 1 1 SCK à 1 au repos, le placement de la donnée induit un flanc montant de SCK
  51. 51. Donc, voyons le chronogramme d’émission :
  52. 52. • Vous constatez que l’émission des bits sur SDO est synchronisée avec l’horloge SCK, qui peut prendre 4 évolutions différentes. Vous choisirez le mode suivant le fonctionnement de l’esclave connecté. Sur le datasheet de ce dernier, le constructeur vous indiquera quelle forme le signal d’horloge doit prendre au moment de la lecture du bit que votre PIC aura envoyé. • Un cycle est la distance séparant 2 flèches rouges. Vous remarquerez que, quelle que soit la configuration, l’esclave devra toujours lire la donnée du maître au milieu du cycle. • La lecture du bit que vous envoyez, sera impérativement synchronisée par votre horloge (comme toutes les actions en mode synchrone), et doit se faire dans la zone stable du bit.
  53. 53. • Voyons maintenant la réception (mode maitre ) d’un octet placé par l’esclave sur la ligne SDI. Nous avons 2 modes possibles (lecture au milieu/fin de cycle). De nouveau, ce choix découle directement de la chronologie de votre composant esclave. Le moment où son fonctionnement provoque le placement de la donnée induit le moment où vous devrez procéder à sa lecture. Je vais de nouveau scinder les 2 cas. Imaginons tout d’abord que l’électronique de l’esclave soit conçue pour que le bit destiné au maître soit placé en début de cycle (donc en même temps que le maître place son propre bit sur SDO). Nous aurons : Vous voyez dans ce cas que le choix de l’instant de lecture n’est pas possible. Vous devez lire le bit au milieu du cycle. Ceci vous impose de placer DATA_SAMPLE_MIDDLE
  54. 54. Examinons maintenant le cas où l’esclave « choisit » de placer son bit au milieu du cycle (donc au moment où il procède à la lecture du bit reçu du maître) Vous constatez cette fois que, puisque l’esclave place son bit au milieu du cycle, il vous faudra attendre la fin de celui-ci pour procéder à la capture du bit concerné . Ceci vous impose de placer DATA_SAMPLE_END
  55. 55. • Remarquez que bien que vous travailliez en mode « maître », ce mot ne concerne que la génération de l’horloge. Pour la programmation, vous n’êtes en fait « maître » de rien du tout. Comme c’est vous qui disposez du composant programmable, c’est à vous de vous plier aux exigences du composant « esclave »connecté. C’est donc ce dernier qui va décider de votre façon de travailler, et non l’inverse. • Quand vous travaillerez en mode esclave, vous serez de nouveaux soumis aux exigences du maître connecté. C’est donc toujours vous qui devrez vous soumettre aux exigences matérielles (excepté si vous développez à la fois le logiciel du maître et de l’esclave) Conclusion : - Le maître place toujours sa donnée en début de cycle - On en déduit que l’esclave lira toujours la donnée en milieu de cycle - L’esclave peut placer sa donnée, soit en début, soit en milieu de cycle - Ceci implique que le maître lira la donnée reçue, soit en milieu, soit en fin de cycle
  56. 56. Vitesse de transmission (mode master ) : La vitesse maximale permise pour la liaison série synchrone est donc de Fosc/4, soit, pour un PIC cadencé à 20MHz, de 5MHz, 5.000.000 de bits par seconde, ou encore 5.000.000 bauds (5MBauds). Vous constatez qu’il s’agit d’une vitesse assez importante, qui nécessite des précautions de mise en œuvre (qualité et longueur des liaisons par exemple). La vitesse minimale est celle utilisant le timer 2 avec prédiviseur à 16. Nous aurons, pour un quartz de 20MHz, une vitesse minimale de Fcy / (2 * prédiviseur * (PR2+1)), soit 5Mhz / (2 * 16 * 256) = 610,3 bauds.
  57. 57. 7-3-3 Utilisation en mode Slave: •Comme vous l’aurez déjà compris depuis longtemps, ce mode (slave ou esclave) présente la particularité de subir l’horloge de synchronisation au lieu de l’imposer. Ceci va induire des contraintes différentes, contraintes paramétrées de nouveau par les mêmes registres que pour le mode « master ». •Il y a 2 configurations possibles de votre PIC connectée en mode SPI esclave. Le premier cas est donné si le PIC est le seul esclave du système. Nul besoin, alors, à priori, de le sélectionner en particulier. on trouve aussi le cas pour lequel votre PIC n’est pas le seul esclave du système. Dans ce cas, il faut bien que votre PIC sache quand c’est à lui que le maître s’adresse . Ce cas vous impose d’utiliser la pin SS (Slave select ) Cette pin, lorsqu’elle est placée au niveau bas, indique au PIC que la communication en cours lui est destinée. Il prend alors en compte les fluctuations de l’horloge. Si le PIC a été configuré pour tenir compte de la pin SS, et que celle-ci se trouve à l’état haut, le PIC ignorera tout signal en cours sur la ligne d’horloge, et donc ne réceptionnera ni n’enverra aucun bit.
  58. 58. Seul esclave Plusieurs esclaves Remarque : Les esclaves ne peuvent pas communiquer entre eux
  59. 59. Vitesses de transmission : • Si vous décidez d’interfacer 2 PICs identiques ensemble, vous pouvez estimer que la vitesse maximale en mode master est égale à la fréquence maximale en mode slave. • Si vous utilisez un autre composant externe comme maître, il faudra vous assurer que ses signaux présentent certaines caractéristiques compatibles avec le datasheet du PIC (par exemple, le temps de maintien de la ligne SDI après le moment de la lecture). Ceci vous permettra de calculer avec précision la vitesse maximale commune entre les 2 composants.
  60. 60. 7-3 MSSP en mode (bus) I²C (Inter Integrate Circuit) : 7-3-1 Introduction Avant de parler du module MSSP en mode I2C du PIC, introduisons très brièvement Le standard I2C. Le bus I²C permet d’établir une liaison série synchrone entre 2 ou plusieurs composants. Il a été créé dans le but d’établir des échanges d’informations entre circuits intégrés se trouvant sur une même carte. Son nom, d’ailleurs, traduit son origine : Inter Integrate Circuit L’ I²C permettait, à ses débuts, de travailler à des fréquences maximales de 100 Kbits/seconde, vitesses assez rapidement portées à 400 Kbits/seconde. Il existe maintenant des familles de circuits pouvant atteindre des vitesses de 3.4 Mbits/seconde.  Le bus I²C est constitué de 2 uniques lignes bidirectionnelles : - La ligne SCL (Serial Clock Line), qui, comme son nom l’indique, véhicule l’horloge de synchronisation (gérée par le maître) - La ligne SDA (Serial Data line), qui véhicule les bits transmis ; pilotée par celui qui envoie une information (maître ou esclave)
  61. 61. Comme les lignes SDA et SCK sont utilisées dans les deux sens par les deux circuits qui communiquent, on peut avoir un circuit qui place la ligne à 1 (Vcc) et l'autre qui la place à 0 (masse) ce qui correspond à un court circuit qui peut détruire les deux composants. Pour éviter ce problème, les E/S SDA et SCK fonctionnent en mode collecteur ouvert (ou drain ouvert) de sorte qu'un circuit ne peut imposer que le niveau bas ou ouvrir la ligne, le niveau haut est obtenu par une résistance de tirage externe (pull-up). Ainsi une ligne est à 0 quand un des deux circuits impose le 0. Elle passe à 1 quand les deux circuits imposent le 1 (circuit ouvert).
  62. 62. Un bus I2C peut être relié à plusieurs circuits, mais pendant une communication, un des circuits est le maître, c'est lui génère l'horloge et initie les séquences de transmission, l'autre est l'esclave, il subit l'horloge du maître sur la ligne SCK mais il peut tout de même recevoir et émettre des données sur la ligne SDA. Chaque esclave a une adresse, au début d'une séquence de communication, le maître qui initie la séquence envoie l'adresse du slave avec lequel il désire communiquer, celui-ci reconnaît son adresse et répond, les autres slaves (s'il y en a) restent muets
  63. 63. 7-3-1 Principe de fonctionnement du I2C : 1° Start condition Au début d'une séquence d'échange, le master génère un start condition (S) avant de commencer l'échange de données. Au repos, les lignes SCL et SDA sont à l'état haut (relâchées). Pour générer un start, le master place d'abord la ligne SDA à 0, ensuite il place SCK à 0. 2° Transmission d'un bit On place le bit à transmettre sur la ligne SDA ensuite on envoie une impulsion d'horloge sur la ligne SCK. C'est cette impulsion qui informe le slave qu'il doit lire la donnée sur SDA
  64. 64. 3° Stop condition A la fin d'une séquence d'échange, le master génère un stop condition (P) après lequel le bus est de nouveau libre. Pour cela, à partir de la situation SDA=0, SCK=0, le master commence par placer SCK à 1 et place ensuite SDA à 1. Remarque sur le Start et le Stop condition Une séquence de transmission peut contenir plusieurs Starts conditions avant de rencontrer un Stop Condition. On parle de repeated Start condition. Un Stop condition est toujours synonyme de FIN de transmission. L' acknowledge (accusé de réception): L' acknowledge est l'accusé de réception. Il est placé par le circuit qui reçoit sur la ligne SDA juste après la réception du 8ème bit. C'est l'émetteur qui le lit de la même façon qu'on lit un bit ordinaire. SDA=0  acknowledge positif (ACK) ; SDA=1  acknowledge négatif (NOACK)
  65. 65. MIKROC permet de gérer La communication I2C en utilisant :
  66. 66. 8-Le module USART : USART signifie « Universal Synchronous Asynchronous Receiver Transmitter ». C’est donc un module qui permet d’envoyer et de recevoir des données en mode série, soit de façon synchrone, soit asynchrone. Dans certaines littératures, vous retrouverez également le terme générique de SCI pour « Serial Communications Interface » En cours de construction . . .

×