SlideShare une entreprise Scribd logo
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
 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
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
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 oscillateur RC (voir
chapitre précédent )
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 le bit
de sélection de la BANK mémoire.
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.
2-3- Gestion des interruptions:
2-3-1 INTCON register:
Ce registre en lecture écriture
permet de configurer les différentes
sources d'interruption;
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
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 )
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 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
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 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.
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.
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
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
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'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)
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
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
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.
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.
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.
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
• 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)
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
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
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.
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.
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.
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 :
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.
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.
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 .
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
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 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.
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
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 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.
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
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
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.
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 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
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é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.
• 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
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
• 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
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.
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.
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
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.
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)
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).
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
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
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)
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 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 . . .

Contenu connexe

Tendances

Projet boat loader avec le pic16F887_rapport
Projet boat loader avec le pic16F887_rapportProjet boat loader avec le pic16F887_rapport
Projet boat loader avec le pic16F887_rapport
Mouhcine Nid Belkacem
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
Nic St Lawrence
 
Cours asm (1)
Cours asm (1)Cours asm (1)
Cours asm (1)
sunprass
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic
nawzat
 
Pic 16 f84
Pic 16 f84Pic 16 f84
Pic 16 f84
babaoui mohamed
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
Hajer Dahech
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
Hafid Moujane
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseur
Peronnin Eric
 
Utilisation et programmation en c
Utilisation et programmation en cUtilisation et programmation en c
Utilisation et programmation en c
Cecilia Bevilaqua
 
Afficheur 7 segments
Afficheur 7 segmentsAfficheur 7 segments
Afficheur 7 segments
Maha Achouri
 
Programmation des pic_en_c_part1
Programmation des pic_en_c_part1Programmation des pic_en_c_part1
Programmation des pic_en_c_part1oussamada
 
Programmation En Langage Pl7 2
Programmation En Langage Pl7 2Programmation En Langage Pl7 2
Programmation En Langage Pl7 2youri59490
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
morin moli
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
Peronnin Eric
 
PréSentation Tsx37
PréSentation Tsx37PréSentation Tsx37
PréSentation Tsx37youri59490
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
Peronnin Eric
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 

Tendances (20)

Projet boat loader avec le pic16F887_rapport
Projet boat loader avec le pic16F887_rapportProjet boat loader avec le pic16F887_rapport
Projet boat loader avec le pic16F887_rapport
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 
Cours asm (1)
Cours asm (1)Cours asm (1)
Cours asm (1)
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic
 
Pic 16 f84
Pic 16 f84Pic 16 f84
Pic 16 f84
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseur
 
T ps dsp
T ps dspT ps dsp
T ps dsp
 
Utilisation et programmation en c
Utilisation et programmation en cUtilisation et programmation en c
Utilisation et programmation en c
 
Processeur
ProcesseurProcesseur
Processeur
 
Afficheur 7 segments
Afficheur 7 segmentsAfficheur 7 segments
Afficheur 7 segments
 
Final
FinalFinal
Final
 
Programmation des pic_en_c_part1
Programmation des pic_en_c_part1Programmation des pic_en_c_part1
Programmation des pic_en_c_part1
 
Programmation En Langage Pl7 2
Programmation En Langage Pl7 2Programmation En Langage Pl7 2
Programmation En Langage Pl7 2
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
PréSentation Tsx37
PréSentation Tsx37PréSentation Tsx37
PréSentation Tsx37
 
Composants reconfigurables
Composants reconfigurablesComposants reconfigurables
Composants reconfigurables
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 

En vedette

Réalisation d'un Thermomètre électronique - Présentation enfants
Réalisation d'un Thermomètre électronique -  Présentation enfantsRéalisation d'un Thermomètre électronique -  Présentation enfants
Réalisation d'un Thermomètre électronique - Présentation enfants
Peronnin Eric
 
Api cours
Api coursApi cours
Api coursBel Ami
 
Ds.2 a.sc.avec corrigé (tm)
Ds.2 a.sc.avec corrigé (tm)Ds.2 a.sc.avec corrigé (tm)
Ds.2 a.sc.avec corrigé (tm)
Mohamed Trabelsi
 
Le transformateur de puissance
Le transformateur de puissanceLe transformateur de puissance
Le transformateur de puissanceslimanelaouin
 
Le grafcet cours & exercices corrigés
Le grafcet cours & exercices corrigésLe grafcet cours & exercices corrigés
Le grafcet cours & exercices corrigéstoumed
 
Project list pic microcontroller 877- projects
Project list   pic microcontroller  877- projectsProject list   pic microcontroller  877- projects
Project list pic microcontroller 877- projects
Ashraf11111
 
Logiques sequentielle
Logiques sequentielleLogiques sequentielle
Logiques sequentielle
AbdelAm20
 
Conception d'un objet électronique - Présentation adulte
Conception d'un objet électronique - Présentation adulteConception d'un objet électronique - Présentation adulte
Conception d'un objet électronique - Présentation adulte
Peronnin Eric
 
Programmation des pic_en_c_part2
Programmation des pic_en_c_part2Programmation des pic_en_c_part2
Programmation des pic_en_c_part2oussamada
 
Cours technologie electrique pneumatique
Cours technologie electrique   pneumatiqueCours technologie electrique   pneumatique
Cours technologie electrique pneumatique
Salah Hammami
 
Pic16f84
Pic16f84Pic16f84
Tp transcodage logique combinatoire
Tp transcodage logique combinatoireTp transcodage logique combinatoire
Tp transcodage logique combinatoirebilal001
 
Circuits Base Hydraulique
Circuits Base HydrauliqueCircuits Base Hydraulique
Circuits Base Hydrauliqueyouri59490
 

En vedette (20)

Réalisation d'un Thermomètre électronique - Présentation enfants
Réalisation d'un Thermomètre électronique -  Présentation enfantsRéalisation d'un Thermomètre électronique -  Présentation enfants
Réalisation d'un Thermomètre électronique - Présentation enfants
 
La prise de terre
La prise de terreLa prise de terre
La prise de terre
 
Api cours
Api coursApi cours
Api cours
 
Ds.2 a.sc.avec corrigé (tm)
Ds.2 a.sc.avec corrigé (tm)Ds.2 a.sc.avec corrigé (tm)
Ds.2 a.sc.avec corrigé (tm)
 
Le grafcet
Le grafcet Le grafcet
Le grafcet
 
Bibliothèque hydraulique
Bibliothèque hydrauliqueBibliothèque hydraulique
Bibliothèque hydraulique
 
Présentation grafcet
Présentation grafcetPrésentation grafcet
Présentation grafcet
 
Le transformateur de puissance
Le transformateur de puissanceLe transformateur de puissance
Le transformateur de puissance
 
Réseaux électriques
Réseaux électriquesRéseaux électriques
Réseaux électriques
 
Le grafcet cours & exercices corrigés
Le grafcet cours & exercices corrigésLe grafcet cours & exercices corrigés
Le grafcet cours & exercices corrigés
 
Project list pic microcontroller 877- projects
Project list   pic microcontroller  877- projectsProject list   pic microcontroller  877- projects
Project list pic microcontroller 877- projects
 
mourad 2eme
mourad 2ememourad 2eme
mourad 2eme
 
Logiques sequentielle
Logiques sequentielleLogiques sequentielle
Logiques sequentielle
 
Conception d'un objet électronique - Présentation adulte
Conception d'un objet électronique - Présentation adulteConception d'un objet électronique - Présentation adulte
Conception d'un objet électronique - Présentation adulte
 
Programmation des pic_en_c_part2
Programmation des pic_en_c_part2Programmation des pic_en_c_part2
Programmation des pic_en_c_part2
 
Compteur synchrone
Compteur synchroneCompteur synchrone
Compteur synchrone
 
Cours technologie electrique pneumatique
Cours technologie electrique   pneumatiqueCours technologie electrique   pneumatique
Cours technologie electrique pneumatique
 
Pic16f84
Pic16f84Pic16f84
Pic16f84
 
Tp transcodage logique combinatoire
Tp transcodage logique combinatoireTp transcodage logique combinatoire
Tp transcodage logique combinatoire
 
Circuits Base Hydraulique
Circuits Base HydrauliqueCircuits Base Hydraulique
Circuits Base Hydraulique
 

Similaire à Microcontrôleur PIC Microchip part2/2

pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdf
Abdo Brahmi
 
Microcontroller/microcontroleur/pic.pptx
Microcontroller/microcontroleur/pic.pptxMicrocontroller/microcontroleur/pic.pptx
Microcontroller/microcontroleur/pic.pptx
SABIR Hamza
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
MbarkiIsraa
 
presentation pic 16f84.ppt
presentation pic 16f84.pptpresentation pic 16f84.ppt
presentation pic 16f84.ppt
saidmahfoud2
 
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdfNotes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
IMADABOUDRAR1
 
cour PIC16F877.pptx
cour PIC16F877.pptxcour PIC16F877.pptx
cour PIC16F877.pptx
KamalZeghdar
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
Abdo Brahmi
 
Tp bus i2_c
Tp bus i2_cTp bus i2_c
Tp bus i2_c
MOHAMED ZARBOUBI
 
8. introduction a larchitecture arm
8. introduction a larchitecture arm8. introduction a larchitecture arm
8. introduction a larchitecture arm
Abdelwahab Wahib
 
Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_
med benchaib
 
SEND SMS WITHOUT USING AT COMMANDS
SEND SMS WITHOUT USING AT COMMANDSSEND SMS WITHOUT USING AT COMMANDS
SEND SMS WITHOUT USING AT COMMANDSKhalil Chortani
 
Tp bus i2_c_partie_2
Tp bus i2_c_partie_2Tp bus i2_c_partie_2
Tp bus i2_c_partie_2
MOHAMED ZARBOUBI
 
ETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdfETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdf
ssuser457a8b
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
AliRami3
 
pres_chapter5 (5).pptx
pres_chapter5 (5).pptxpres_chapter5 (5).pptx
pres_chapter5 (5).pptx
Abdo Brahmi
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
mohamedsaidi212001
 
Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...
Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...
Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...
LAUMAS
 
presentation serrure codee
presentation serrure codeepresentation serrure codee
presentation serrure codee
MohammedFassih
 

Similaire à Microcontrôleur PIC Microchip part2/2 (20)

pic16f84-200306072553.pdf
pic16f84-200306072553.pdfpic16f84-200306072553.pdf
pic16f84-200306072553.pdf
 
Microcontroller/microcontroleur/pic.pptx
Microcontroller/microcontroleur/pic.pptxMicrocontroller/microcontroleur/pic.pptx
Microcontroller/microcontroleur/pic.pptx
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
presentation pic 16f84.ppt
presentation pic 16f84.pptpresentation pic 16f84.ppt
presentation pic 16f84.ppt
 
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdfNotes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
 
cour PIC16F877.pptx
cour PIC16F877.pptxcour PIC16F877.pptx
cour PIC16F877.pptx
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
 
Tp bus i2_c
Tp bus i2_cTp bus i2_c
Tp bus i2_c
 
8. introduction a larchitecture arm
8. introduction a larchitecture arm8. introduction a larchitecture arm
8. introduction a larchitecture arm
 
Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_
 
SEND SMS WITHOUT USING AT COMMANDS
SEND SMS WITHOUT USING AT COMMANDSSEND SMS WITHOUT USING AT COMMANDS
SEND SMS WITHOUT USING AT COMMANDS
 
Tp bus i2_c_partie_2
Tp bus i2_c_partie_2Tp bus i2_c_partie_2
Tp bus i2_c_partie_2
 
ETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdfETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdf
 
Cours de PIC Généralités.pdf
Cours de PIC Généralités.pdfCours de PIC Généralités.pdf
Cours de PIC Généralités.pdf
 
pres_chapter5 (5).pptx
pres_chapter5 (5).pptxpres_chapter5 (5).pptx
pres_chapter5 (5).pptx
 
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 
Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...
Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...
Catalogues produits 03: électroniques de pesage - transmetteurs de poids & in...
 
presentation serrure codee
presentation serrure codeepresentation serrure codee
presentation serrure codee
 
Yapsc Manuel
Yapsc ManuelYapsc Manuel
Yapsc Manuel
 
dsp.ppt
dsp.pptdsp.ppt
dsp.ppt
 

Dernier

Présentation PFE (MOUAD LAZRAK) (2).pptx
Présentation PFE (MOUAD LAZRAK) (2).pptxPrésentation PFE (MOUAD LAZRAK) (2).pptx
Présentation PFE (MOUAD LAZRAK) (2).pptx
khalilbatariagro
 
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Institut de l'Elevage - Idele
 
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
Alternative - Complément  au Tramway et 3ème lien de la ville de Québec  Alternative - Complément  au Tramway et 3ème lien de la ville de Québec
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
Daniel Bedard
 
Presentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptxPresentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptx
imed53
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
Institut de l'Elevage - Idele
 
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdfCOURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
sieousse95
 
Comment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptationComment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptation
Institut de l'Elevage - Idele
 

Dernier (7)

Présentation PFE (MOUAD LAZRAK) (2).pptx
Présentation PFE (MOUAD LAZRAK) (2).pptxPrésentation PFE (MOUAD LAZRAK) (2).pptx
Présentation PFE (MOUAD LAZRAK) (2).pptx
 
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
 
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
Alternative - Complément  au Tramway et 3ème lien de la ville de Québec  Alternative - Complément  au Tramway et 3ème lien de la ville de Québec
Alternative - Complément au Tramway et 3ème lien de la ville de Québec
 
Presentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptxPresentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptx
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
 
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdfCOURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
 
Comment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptationComment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptation
 

Microcontrôleur PIC Microchip part2/2

  • 1.
  • 3. PLAN Introduction au microcontrôleur (PIC) Programmation des PICs PIC 16F84A PIC 16F877
  • 4. 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
  • 5. 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
  • 6. 1-Description des pins (Pic 16F887) :
  • 7.
  • 8. 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 )
  • 9. 2-les registres spéciaux SFR : ( Overview )
  • 10. 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.
  • 11. 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.
  • 12. 2-3- Gestion des interruptions: 2-3-1 INTCON register: Ce registre en lecture écriture permet de configurer les différentes sources d'interruption;
  • 13. 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
  • 14. 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 )
  • 17.
  • 18. 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
  • 19. Etudié en détail par la suite (convertisseur Analogique numérique )
  • 20. 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.
  • 21. 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.
  • 22. 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
  • 23. 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
  • 25. 4-1 TIMER0: • Ce TIMER fonctionne de façon identique à celui du PIC16F84A (voir chapitre précédent )
  • 26. 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)
  • 27. 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
  • 28. 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
  • 29. 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.
  • 30. 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.
  • 31. 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.
  • 32. 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
  • 33. • 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)
  • 34. 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
  • 35. 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
  • 36. 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.
  • 37.
  • 38. 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.
  • 39. 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.
  • 40. 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 :
  • 41. 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.
  • 42. 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.
  • 43. 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 .
  • 44. 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
  • 45. Utilisation du module PWM en Mikroc
  • 46. 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.
  • 47. 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
  • 48. Voici un second exemple, qui donne une lecture concrète de l’octet B’10011010’ :
  • 49. 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.
  • 50. 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
  • 51. 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
  • 52. 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.
  • 53. Utilisation du module SPI en Mikroc :
  • 54. 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
  • 55. Donc, voyons le chronogramme d’émission :
  • 56. • 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.
  • 57. • 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
  • 58. 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
  • 59. • 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
  • 60. 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.
  • 61. 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.
  • 62. Seul esclave Plusieurs esclaves Remarque : Les esclaves ne peuvent pas communiquer entre eux
  • 63. 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.
  • 64. 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)
  • 65. 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).
  • 66. 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
  • 67. 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
  • 68. 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)
  • 69. MIKROC permet de gérer La communication I2C en utilisant :
  • 70. 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 . . .