Vous êtes sur la page 1sur 98

Informatique industrielle

Microcontrôleurs
Pr. Mohamed Hamlich
Sige.ensam@gmail.com

https://www.youtube.com/watch?v=j8eHI_G4TSY&t=73s
https://www.youtube.com/watch?v=mSscUjkxueQ&t=43s
https://www.youtube.com/watch?v=Ne8PP6d5rf8&t=80s
https://www.youtube.com/watch?v=LTF2tCrji4c&t=30s
https://www.youtube.com/watch?v=JJv_vQcMgxA&t=67s
https://www.youtube.com/watch?v=OfBQayj330g&t=520s
https://www.youtube.com/watch?v=U8X9AHBpDao&t=754s
https://www.youtube.com/watch?v=FVrE9RDM-kU&t=142s
Pr. Mohamed Hamlich 1
Plan
1. Structure interne des microcontrôleurs
1.1 Microprocesseur
1.2 Mémoires
1.3 Ports d’entrées sorties
a) Configuration
b) Programmation

2. Timers et interruptions
2.3 Interruptions
2.4 Timers
3. Ports analogiques
3.1 Description
3.2 Configuration et programmation
3.3 Applications
4. Ports séries
4.1 Description
4.2 Configuration et programmation
4.3 Applications

Pr. Mohamed Hamlich 2


Structure interne des microcontrôleurs

Structure interne du microcontrôleur PIC 16F887


Pr. Mohamed Hamlich 3
Structure interne des microcontrôleurs

1. Microprocesseur

 Circuit intégré qui charge, décode et exécute les instructions.

 Contient une UAL, une UC , des registres, etc…

 Critères de choix :

Type

Fréquence d’horloge

Mémoire cache

Pr. Mohamed Hamlich 4


Structure interne des microcontrôleurs
2. Mémoires
 Circuit intégré qui sert à stocker les données et les instructions.
 L’élément binaire est le bit; 1octet=8bits, 1Ko=1024octets
2.1 Mémoire RAM (Random access Memory)
 A accès aléatoire, dynamique, volatile et à lecture et écriture
 Critères de choix :
Type
Temps d’accès
Taille; capacité= 2˄k *n (bits) ; cs : sélection de boitier

Pr. Mohamed Hamlich 5


Structure interne des microcontrôleurs

2.2 Mémoire cache

 Mémoire statique plus rapide que la RAM

Capacité

Rapidité

Pr. Mohamed Hamlich 6


Structure interne des microcontrôleurs

2.3 Mémoire morte (ROM)

 Mémoire à lecture seule permanente

 Variantes:
 EPROM

 EEPROM

Pr. Mohamed Hamlich 7


Ports
PORTS d’entrées sorties
DU PIC 16F887

 Le nombre d’entrées sorties est parmi les critères de choix d’un


microcontrôleurs . Le PIC 16F887 possède 35 broches d’E/S ce qui est
suffisant pour la plus part des applications.

 Il possède des ports sur 8 bits nommés A,B,C,D et E.

 Chaque port est accompagné par le registre correspondant TRISX: -


TRISA, TRISB, TRISC- qui détermine la configuration, mais pas le
contenu des bits de port.
0 = Sortie, 1= entrée.

Pr. Mohamed Hamlich 8


Ports d’entrées sorties

Pr. Mohamed Hamlich 9


Ports d’entrées sorties

PORTA et le registre TRISA


 Le portA est un port bidirectionnel sur 8 bits. Les bits du registre
TRISA contrôlent les broches du portA, i.e. qui vont être comme des
entrées ou sorties:

Pr. Mohamed Hamlich 10


Ports d’entrées sorties
REGISTRE ANSEL
 Les bits du registre ANSEL déterminent si les broches du PORTA
doivent être configurés comme entrées analogiques ou entrées /
sorties numériques.

RA0 = AN0 (déterminé par le bit ANS0 du registre ANSEL)


RA1 = AN1 ( déterminé par le bit ANS1 du registre ANSEL)
RA2 = AN2 (déterminé par le bit ANS2 du registre ANSEL)
RA3 = AN3 (déterminé par le bit ANS3du registre ANSEL)
RA5 = AN4 (déterminé par le bit ANS4 du registre ANSEL)
Pr. Mohamed Hamlich 11
Ports d’entrées sorties
PORTB et le registre TRISB
 Le portB est un port bidirectionnel sur 8 bits. Les bits du registre
TRISB contrôlent les broches du portB, i.e. qui vont être comme des
entrées ou sorties:

Pr. Mohamed Hamlich 12


Ports d’entrées sorties
PORT ANSELH
 Les bits du registre ANSELH déterminent si les 6 broches du PORTB
doivent être configurés comme entrées analogiques ou entrées /
sorties numériques.

RB0 = AN12 (déterminé par le bit ANS12 du registre ANSELH)


RB1 = AN10 ( déterminé par le bit ANS10 du registre ANSELH)
RB2 = AN8 (déterminé par le bit ANS8 du registre ANSELH)
RB3 = AN9 (déterminé par le bit ANS9du registre ANSELH)
RB4 = AN11 (déterminé par le bit ANS11 du registre ANSELH)
RB5 = AN13 (déterminé par le bit ANS13 du registre ANSELH)
Pr. Mohamed Hamlich 13
Ports d’entrées sorties

 Tous les broches du port B ont des résistances de rappel


internes qui rendent ces broches idéales pour être connectés
à des interrupteurs.
 Pour connecter une résistance de rappel à une broche Rbi il
suffit de mettre le bit i du registre WPUB à 1.

 Un autre bit (RBPU) du registre OPTION_REG permet


d’activer tous les résistances de rappel du PORT B

Pr. Mohamed Hamlich 14


Ports d’entrées sorties

Pr. Mohamed Hamlich 15


Application
 Main()
 {
 TRISC=0;
 PORTC=0;
 While(1)
 {
 PORTC=~PORTC;
 delay_ms(200);
 }
 }

Pr. Mohamed Hamlich 16


LES INTERRUPTIONS DU PIC 16F887
 Une interruption provoque l’arrêt du programme principal pour aller
exécuter une procédure d'interruption.

 A la fin de cette procédure, le microcontrôleur reprend le programme


principal à l’endroit où il l’a laissé.

 A chaque interruption sont associés deux bits:


 un bit de validation : permet d'autoriser ou non l'interruption,
 un drapeau : permet au programmeur de savoir de quelle interruption il s'agit.

 Les interruptions sont classées en deux catégories, les interruptions


primaires et les interruptions périphériques. Elles sont gérées par les
registres :
Pr. Mohamed Hamlich 17
LES INTERRUPTIONS DU PIC 16F887

 Toutes les interruptions peuvent être validées/interdites par le bit


INTCON.GIE
 Toutes les interruptions périphériques peuvent être
validées/interdites par le bit INTCON.PEIE
 Chaque interruption peut être validée/interdite par son bit de
validation individuel
 En résumé, pour valider une interruption périphérique (par
exemple), il faut positionner 3 bits, GIE, PEIE et le bit individuel de
l’interruption.
Pr. Mohamed Hamlich 18
Déroulement d’une interruption

 Lorsque l'événement déclencheur d'une interruption intervient, alors


son drapeau est positionné à 1 (levé). Si l'interruption a été validée
(bits de validations = 1), elle est alors déclenchée : le programme
arrête ce qu'il est en train de faire et va exécuter la procédure
d'interruption (fonction interrupt()) qui se trouve à l'adresse 4 en
exécutant les étapes suivantes :

 l'adresse contenue dans le PC (Program Counter) est sauvegardée


dans la pile, puis remplacée par la valeur 0004 (adresse de la
routine d'interruption).

 Le bit GIE est placé "0" pour inhiber toutes nouvelles


interruptions.

Pr. Mohamed Hamlich 19


Déroulement d’une interruption

A la fin de la procédure d'interruption (instruction RETFIE) :


 le bit GIE est remis à 1 (autorisant ainsi un autre événement)
 le contenu du PC est rechargé à partir de la pile ce qui permet au
programme de reprendre là où il s'est arrêté

Deux remarques importantes sont à faire :


 Le drapeau reste à l’état haut même après le traitement de l’interruption.
Par conséquent, il faut toujours le remettre à "0" à la fin de la routine
d'interruption sinon l'interruption sera déclenchée de nouveau juste après
l'instruction RETFIE
 Seul le PC est empilé automatiquement. Si cela est nécessaire, les registres
W et STATUS doivent être sauvegardés en RAM puis restaurés à la fin de la
routine pour que le microcontrôleur puisse reprendre le programme
principal dans les mêmes conditions où il l'a laissé.

Pr. Mohamed Hamlich 20


Les sources d’interruptions

Pr. Mohamed Hamlich 21


L'interruption RBI (RB0 A RB7 du portB)
Cette interruption est provoquée par un changement d'état sur l'une
des entrées RB0 à RB7 du port B, Le front n'a pas d'importance. Les
bits associés sont RBIE (validation) et RBIF (drapeau).
 Le changement d’état sur la broche en question provoque une
interruption.
 Pour autoriser l’interruption sur la broche Rbi le bit i du registre
IOCB doit être mis à 1

Pr. Mohamed Hamlich 22


L'interruption INT (Entrée RB0 du port B)
C’est une entrée qui déclenche une interruption si un front
descendant ou montant arrive sur RB0.
 La nature du front est programmé par le bit INTEDG du registre
OPTION_REG; 1=montant, 0=descendant
 Cette interruption est provoquée par un changement d'état sur
l'entrée RB0 du port B quand elle est programmée en entrée.
 Elle est gérée par son bit de validation INTE et son drapeau INTF,

Pr. Mohamed Hamlich 23


Application
• Le programme principal doit faire clignoter la Led avec temporisation=30ms.
• Si l’interruption INT arrive (appuie sur BP) alors comptage de 0 à 9 sur l'afficheur BCD 7
segments puis retour au programme principale.
• Donner le programme complet (SPI et PP)

Pr. Mohamed Hamlich 24


Application
 Void interrupt()  Void main()
 { int i;  { TRISD.B7=0;
 for(i=0;i<10;i++)  INTCON.GIE=1;
 {  INTCON.INTE=1;
 PORTC=i;  OPTION_REG.INTEDG=0;
 delay_ms(100);  while(1)
 }  {
 INTCON.INTF=0;  PORTD.B7=!PORTD.B7;
 }  delay_ms(100);
 }
 }

Pr. Mohamed Hamlich 25


Le Timer TMR0
C’est un compteur 8 bits ayant les caractéristiques suivantes :
 Il est incrémenté en permanence soit par l’horloge interne Fosc/4
(mode timer) soit par une horloge externe appliquée à la broche RA4
du port A (mode compteur).
– T0CS = 0 alors horloge interne
– T0CS = 1 alors horloge externe appliquée à RA4
– T0SE = 0 alors incrémentation sur fronts montants
– T0SE = 1 alors incrémentation sur fronts descendants

Pr. Mohamed Hamlich 26


Le Timer TMR0
 Quelque soit l'horloge choisie, on peut la passer dans un diviseur de
fréquence programmable (prescaler) dont le rapport est fixés par les
bits PS0, PS1 et PS2 du registre OPTION_REG (tableau).
– PSA = 0; on utilise le prédiviseur
– PSA = 1; pas de prédiviseur (affecté au chien de garde)

Pr. Mohamed Hamlich 27


Le Timer TMR0
 Le contenu du timer TMR0 est accessible par le registre qui porte le
même nom. Il peut être lu ou écrit à n'importe quel moment.
 Au débordement de TMR0 (FF à 00), le drapeau T0IF est placé à 1.
Ceci peut déclencher l'interruption T0I si celle-ci est validée

Pr. Mohamed Hamlich 28


Application : clignoter LED/TMR0
Temporisation voisine de 50 ms à l'aide de TMR0
(horloge Fosc=4Mhz)
1) Par scrutation du drapeau T0IF (pas
d'interruption)
2) En utilisant l'interruption T0I

2) Void interrupt()
Tosc x 4 x 256 x Pr = 0,05
{PORTC.B0=!PORTC.B0;
Pr≈195
INTCON.TMR0IF=0;
Nous allons prendre Pr=256 et nous recalculons le
modulo du TMR0. TMR0=61;
Modulo= 195, donc il faut charger le TMR0 par }
256-195= 61 pour avoir ce modulo.
1) main() main()
{ TRISC.B0=0; { TRISC.B0=0;
while (1) INTCON.GIE=1;
{INTCON.TMR0IF=0; TMR0=61; INTCON.TOIE=1;
while(INTCON.TMR0IF==0); TMR0=61;
PORTC.B0=!PORTC.B0; while (1);
}} }

Pr. Mohamed Hamlich 29


Le Timer TMR1
 TMR1 est un Timer/Compteur 16 bits accessible en lecture/écriture
par l'intermédiaire des registres 8 bits TMR1H et TMR1L qui
constituent sa partie haute et sa partie basse.

Pr. Mohamed Hamlich 30


Le Timer TMR1
 A son débordement (FFFFh à 0000h) le drapeau TMR1IF est positionné ce
qui peut déclencher l'interruption périphérique TMR1I si elle est validée.

 TMR1 peut fonctionner dans 3 modes différents :


 Timer Synchrone (horloge interne)
 Compteur Synchrone (horloge externe)
 Compteur Asynchrone (horloge externe)

 Le bit de contrôle TMR1CS détermine le fonctionnement en Timer ou en


Compteur et le bit T1SYNC détermine le mode de fonctionnement en
synchrone ou en asynchrone

 TMR1 peut être RAZ à l'aide du module de capture/comparaison CCP

 TMR1 peut être précédé d'un prédiviseur (Prescaler) qui peut diviser la
fréquence par 1, 2, 4 ou 8 selon la valeur des bits T1CKPS1 et T1CKPS0

Pr. Mohamed Hamlich 31


Le Timer TMR1

 Le mode TIMER: Dans ce mode, TMR1 est incrémenté par l’horloge


système Fosc/4 éventuellement prédivisée.

 Le mode Compteur: Dans ce mode, TMR1 est incrémenté à chaque


front montant de l'horloge externe T1CKI (RC0) ou l'horloge interne
générée par l’oscillateur dédié T1OSC à condition de positionner le bit
T1OSCEN à 1 et de brancher un quartz entre les broche RC0 et RC1.

 En mode compteur, RC0 et RC1 sont automatiquement configurées


en entrée, on n’a pas besoin de les configurer.

Pr. Mohamed Hamlich 32


Le Timer TMR1

T1CKPS1,T1CKPS0 : Control du prescaler


00 : division par 1
01 : division par 2
10 : division par 4
11 : division par 8
T1OSCEN : Validation de l'Oscillateur associé à TMR1
0 : Oscillateur arrêté
1 : Oscillateur activé
T1SYNC : Synchronisation de l'horloge externe (ignoré en mode timer)
0 : Synchronisation
1 : pas de synchronisation
TMR1CS : Choix de l'horloge du Timer
0 : horloge système (Fosc/4) : mode timer
1 : Horloge externe : mode compteur
TMR1ON : Démarrer arrêter le timer
0 : Timer stoppé
1 : Timer en fonctionnement

Pr. Mohamed Hamlich 33


Le module de conversión A/N

Pr. Mohamed Hamlich 34


Le module de conversión A/N
 Convertisseur Analogique Numérique 10 bits. Les tensions de
références permettant de fixer la dynamique du convertisseur. Elles
peuvent être choisies parmi Vdd, Vss, Vr+ ou Vr-

Pr. Mohamed Hamlich 35


Le module de conversión A/N
 La conversion démarre quand on place le bit GO/DONE à 1.
 A la fin de la conversion, le résultat de conversion est recopié dans les
registres ADRESH et ADRESL, le bit GO/DONE repasse
automatiquement à 0 et le drapeau ADIF (situé dans PIR1) passe à 1
ce qui peut déclencher l’interruption associée si elle est validée.
 Le control du module se fait par les deux registres ADCON0 et
ADCON1

Pr. Mohamed Hamlich 36


Le module de conversión A/N

Pr. Mohamed Hamlich 37


Le module de conversión A/N
Fréquence d'échantillonnage: Si on veut échantillonner un signal variable, La période
d'échantillonnage Te doit être supérieur ou égale à Temin =TACQ + TCONV

Quelle est la relation entre la tension analogique convertie et le nombre N recueilli dans le
registre ADRES ?
Si on note :
• Q = pas de quantification = (Vref+ - Vref-)/1024
• Va = tension analogique à convertir
• N = valeur numérique obtenue,

Pr. Mohamed Hamlich 38


• 5v
• 3,75 11
• 2,5 10
• 1,25 01
• 00
• 0v
• Q=5/4 =1,25v
Pr. Mohamed Hamlich 39
Le module de conversión A/N

Programmation:
 Configurer les E/S en Analogique/digital/Référence
 Configurer les entrées analogiques en entrées
 Définir l'horloge de conversion, Valider le module (ADCON0)
 Choisir le canal à convertir (ADCON0)
 Lancer la conversion, GO_DONE = 1 (ADCON0)
 Attendre fin de conversion, GO_DONE = 0 ou interruption si validée
 Lire le résultat
 Arrêter le convertisseur ou recommencer au point 6

Pr. Mohamed Hamlich 40


• main()
• {
• ANSEL=0B11111111;
• TRISC=0;
• TRISD=0;
• TRISA.B0=1;
• ADCON0=0B11000001;
• ADCON1=0B00000000;
• while(1)
• {
• ADCON0.B1=1;
• while (ADCON0.B1==1);
• PORTC=ADRESH;
• PORTD=ADRESL;
• }
• }
Pr. Mohamed Hamlich 41
unsigned int x;
main()
{
char txt[7];
ANSELH = 0;
ANSEL=0xFF;
TRISA.B2=1;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
while(1)
{
x = ADC_Read(2);
IntToStr(x, txt);
Lcd_Out(1,4,«température=");
Lcd_Out(2,6,txt); // Write text in first
Lcd_Chr-Cp(223);
Lcd_Chr-Cp(‘C’);

}
} Pr. Mohamed Hamlich 42
• unsigned int x;
• main()
• {
• unsigned int u,d;

• ANSELH = 0;
• ANSEL=0xFF;
• TRISA.B2=1;
• TRISC=0;
• TRISD=0;
• while(1)
• {
• x = ADC_Read(2);
• x=x/2.07;
• d=x/10;
• u=x%10;
• Portc=d;
• Portd=u;
• }
• }
Pr. Mohamed Hamlich 43
GESTION D’UN AFFICHEUR LCD
EN MIKROC
• Le module vient dans différentes formes et tailles. Des
modules avec 8, 16, 20, 24, 32 et 40 caractères sont
disponibles.

• Selon le modèle, l'écran LCD est fabriqué avec 14 ou 16


pattes pour l'interface.

• Le tableau suivant présente la configuration des pattes et


les fonctions des pattes d’un LCD à 14 pattes.
• VEE est désigné pour réglage du contraste de l'affichage et
doit être reliée à une alimentation en courant continu. Un
potentiomètre est généralement connecté à l'alimentation
avec son curseur raccordé à la patte VEE et l'autre patte
du potentiomètre relié à la masse.
• De cette façon la tension à la patte VEE, et où le
contraste de l'affichage, peut être réglée à volonté.
• le registre de sélection (RS): indique s’il s’agit d’une
commande ou d’une donnée
• Lecture / écriture (R / W). Cette patte est reliée avec la
masse (état logique bas) afin d'écrire des données de
caractères au module LCD. Lorsque cette broche est à
+5 V (états logique haut) donc les informations sortants
du module LCD peuvent être lues.
• la validation (EN), qui est utilisé pour initier le transfert de
commandes ou de données entre le module et le
microcontrôleur. Lors de l'écriture à l'écran, les données
sont transférés uniquement sur le front descendant (haut-bas)
sur cette patte.
• Lors de la lecture de l’affichage, les données deviennent
accessibles après le front montant (bas-haut) de la patte de
validation, et ces données demeurent tant que la patte de
validation est au niveau logique haut.
• Les broches 7 à 14 sont les huit lignes de bus de données (D0 à
D7). Les données peuvent être transférées entre le
microcontrôleur et le module LCD à l'aide soit d'un seul octet de
8 bits soit de deux 4-bits. Dans ce dernier cas, seuls les quatre
lignes de données supérieures (D4 à D7) sont utilisées. Le 4-
bits mode a l'avantage de nécessiter moins de lignes d'E / S
pour communiquer avec l'écran LCD.
• Le mikroC LCD bibliothèque fournit un grand nombre
de fonctions pour contrôler du texte LCD avec 4-bits et
les interfaces de données 8-bit, et pour les graphiques
LCD. La plus courante sont les 4-bit interface en mode
texte sur écran LCD. Ce qui suit sont les fonctions
disponibles pour LCD 4-bit interface en mode texte LCD
:
• Lcd_Config
• Lcd_Init
• Lcd_Out
• Lcd_Out_Cp
• Lcd_Chr
• Lcd_Chr_Cp
• Lcd_Cmd
• Lcd_Config
• La fonction Lcd_Config est utilisée pour configurer
l'interface LCD. La connexion par défaut entre le LCD et
le microcontrôleur est la suivante :

• LCD Patte du port de microcontroleurs


• RS → 2
• EN → 3
• D4 → 4
• D5 → 5
• D6 → 6
• D7 → 7
• Lcd_Init
• La fonction Lcd_Init est appelée pour configurer
l'interface entre le microcontrôleur et l'écran LCD
lorsque les connexions sont faites par défaut que
vient d'être illustré. Le nom du port doit être
spécifié en passant son adresse. Par exemple, en
supposant que LCD est reliée à PORTB et les
connexions par défaut précédentes sont utilisées,
la fonction doit être appelée en tant que :
• Lcd_Init();
• Lcd_Out
• La fonction Lcd_Out affiche du texte à la ligne indiquée
et la position des colonnes de l'écran LCD. La fonction doit
être appelée avec des paramètres dans l'ordre suivant :
• ligne, colonne, texte
• Par exemple, pour afficher du texte "Ordinateur" à la ligne 1
et la colonne 2 de l'écran LCD nous devrions appeler la
fonction comme suit :
• Lcd_Out (1, 2, "Ordinateur");
• Lcd_Out_Cp
• La fonction Lcd_Out_Cp affiche le texte à la position
actuelle du curseur.
• Par exemple, pour afficher le texte "Ordinateur" à la
position actuelle du curseur, la fonction devrait être appelé
en tant que :
• Lcd_Out_Cp ("Ordinateur");
• Lcd_Chr
• La fonction Lcd_Chr affiche un caractère à la ligne
indiquée et la colonne la position du curseur. La
fonction doit être appelée avec les paramètres
dans le l'ordre suivant :
• ligne, colonne, caractere
• Par exemple, pour afficher caractère "K" à la ligne
2 et la colonne 4 de l'écran LCD nous devrions
appeler la fonction de :
• Lcd_Chr(2, 4, ‘K’);
• Lcd_Chr_Cp
• La fonction Lcd_Chr_Cp affiche un caractère à la
position actuelle du courser. Par exemple, pour
afficher le caractère "M" à la position actuelle du
curseur, la fonction doit être appelée en tant que :
• Lcd_Chr_Cp ('M');
• Lcd_Cmd
• La fonction Lcd_Cmd est utilisée pour envoyer
une commande à l'écran LCD. Avec ce
commande, nous pouvons déplacer le curseur
vers n'importe quelle ligne, désactiver l'écran
LCD, faire clignote le curseur, décaler l'affichage,
etc. Une liste des plus couramment utilisés
commandes LCD est donnée dans Tableau suivant:
• Par exemple, pour effacer l'écran LCD nous devrions
appeler la fonction comme suit : Lcd_Cmd
(Lcd_Clear);
Afficher variable int
• void main(){
• int j = -4220;
• char txt[7];
• IntToStr(j, txt);
• ANSEL = 0; // Configure AN pins as
digital I/O
• ANSELH = 0;
• Lcd_Init();
• Lcd_Cmd(_LCD_CLEAR); // Clear display
• Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
• Lcd_Out(1,6,txt); // Write text in first row
Informatique industrielle
Chapitre 6: Transmission de données

Pr. Mohamed Hamlich


Sige.ensam@gmail.com

ENSAM- Casablanca

Pr. Mohamed Hamlich 61


Transmission de données
Deux types de transmission de données :

Parallèle: Consiste à transmettre chaque


caractère par son code ASCII sur 8bits
(fils)

Série : Consiste à transmettre bit par bit


chaque caractère sur un seul fil.
Liaison série Liaison parallèle

Pr. Mohamed Hamlich 62


Transmission parallèle
• Soit à transmettre le caractère A codé en ASCII:
• ASC(A)=65)10=41)16=01000001)2
• 0
• 1
• 0
• 0
• EM 0 REC
• 0
• 0
• 1

Pr. Mohamed Hamlich 63


Transmission série
• Soit à transmettre le caractère A codé en ASCII en
mode série:
• ASC(A)=65)10=41)16=01000001)2

EM
REC

• 0 1 0 0 0 0 0 1

Pr. Mohamed Hamlich 64


Deux types de transmission série:
• Synchrone
• Asynchrone

Pr. Mohamed Hamlich 65


Transmission série : deux types
 Synchrone: L’émetteur et le récepteur sont synchronisés
par un signal d’horloge

 Asynchrone : Pas de signal d’horloge et donc l’émetteur


et le récepteur utilisent des bits redondants dans le
signal de données pour se synchroniser.

 Necessité de standards et normes pour communiquer


 Normes électriques
 Normes de protocole de communication

Pr. Mohamed Hamlich 66


Transmission série asynchrone
 les caractères sont émis de façon irrégulière,
comme par exemple des caractères tapés sur un
clavier, l’intervalle de temps entre deux caractères
est aléatoire, le début d’un caractère peut survenir
à n’importe quel moment.

 Le bit de départ (START) indique le début d’un


caractère et celui ou ceux d’arrêt (STOP) – il peut
y’en avoir ‘1’ ou ‘2’ – marquent la fin de caractère.

Pr. Mohamed Hamlich 67


ASC(C)=(01000011)2
Emetteur: 010000111

Sans erreur Avec erreur

Récepteur: 010000111

000000111

Pr. Mohamed Hamlich 68


Transmission série asynchrone
 Un bit de parité peut être utilisé pour détecter les
erreurs susceptibles d’apparaître pendant la
transmission.
 Il existe deux types de contrôle de parité (pair et
impair) et il est indispensable que l’émetteur et le
récepteur s’entendent sur le type à utiliser pour
l’ensemble de la transmission:
Avec la parité paire, si le nombre de ‘ 1 ‘
dans les données envoyées est impaire alors
le bit de parité est égal à ‘ 1 ‘ de manière à
ce que le nombre total de ‘ 1 ‘ soit pair y
compris le bit de parité, et si le nombre de ‘
1 ‘ est déjà pair alors le bit de parité vaudra
‘ 0 ‘.
Une parité impaire correspond au système
inverse.

Pr. Mohamed Hamlich 69


Transmission série asynchrone

Pr. Mohamed Hamlich 70


Informatique industrielle
Bus I2C

Pr. Mohamed Hamlich


Sige.ensam@gmail.com

Pr. Mohamed Hamlich 71


Transmission parallèle

Transmission parallèle: disparait


Soit à transmettre le caractère A codé en ASCII.
ASC(A)=(65)10=(41)16=(01000001)2
• 0
• 1
• 0
• 0
• 0

• 0
• 0

• 1

Pr. Mohamed Hamlich 72


Transmission série

• Transmission série

• 0 1 0 0 0 0 0 1

• Transmission série asynchrone


• Transmission série synchrone

Pr. Mohamed Hamlich 73


Intérêts :

• REDUCTION DES COUTS INITIAUX


• Réduction massive du câblage : 1 seul câble en
général pour tous les équipements au lieu d’un par
équipement.
• Possibilité de réutiliser le câblage analogique existant
dans certains cas.
• Réduction du temps d’installation.
• Réduction du matériel nécessaire à l’installation.

Prof : M.HAMLICH-
Intérêts :

• REDUCTION DES COUTS DE MAINTENANCE


• Complexité moindre donc moins de maintenance
(fiabilité accrue)
• Maintenance plus aisée : temps de dépannage
réduit, localisation des pannes possibles grâce à des
diagnostics en ligne («on line») donc à distance.
• Outils de test dédiés (analyseur...)
• Flexibilité pour l’extension du bus de terrain et pour
les nouveaux raccordements.

Prof : M.HAMLICH-
Types de liaisons

Prof : M.HAMLICH-
Ports des ordinateurs

Sur les PC, la connectique


RS232 disponible et de
type Sub-D 9 points.
D’autres protocoles
séries peuvent être
trouvés avec des
connectiques PS/2
(clavier/sourie) ou Sub-D
15 points
(joystick ou instruments
de musique : protocole
MIDI).
Prof : M.HAMLICH-
Signaux des ports série

 Notez que les sigles sont données interprétés du côté DTE : PC


– · GND : (Ground) la masse. Référence nécessaire à toute mesure de tension.
Lignes de données. Elles font passer les données numériques.
– · RD : (Received Data) Données reçues (par le PC).
– · TD : (Transmitted Data) Données émises (par le PC).
 Lignes de contrôle de flux. le contrôle de flux reste toujours (surtout dans une
communication asynchrone) une logique de réception, c'est à dire que c'est la
faculté de réception du partenaire qui indique si oui ou non un équipement va
émettre.
– · RTS : (Request to Send) Indique que le DTE (PC) est prêt à émettre, même
si la
traduction littérale est « demande d'émission ».
– · CTS : (Clear to Send) Indique que le DCE (modem) est prêt à recevoir

Prof : M.HAMLICH-
Transmission synchrone et
transmission asynchrone

Transmission asynchrone :

• les caractères sont émis de façon irrégulière, comme par exemple des
caractères tapés sur un clavier, l’intervalle de temps entre deux caractères
est aléatoire, le début d’un caractère peut survenir à n’importe quel moment.

• les bits de départ et d’arrêt souvent désignés par leur appellation anglo-
saxonne de START (élément de départ) et de STOP (élément d’arrêt). Ces
bits, sont en fait des signaux encadrent ceux qui constituent un caractère, le
bit de départ (START) indique le début d’un caractère et celui ou ceux
d’arrêt (STOP) – il peut y’en avoir ‘1’ ou ‘2’ – marquent la fin de caractère.

• Un octet transmet d’une façon asynchrone est illustré sur la page suivante :

Prof : M.HAMLICH-
Exemple de trame

Remarque : Un bit de parité peut être utilisé pour détecter les erreurs
susceptibles d’apparaître pendant la transmission.

Prof : M.HAMLICH-
• Emetteur: 110000101

• Recepteur:110000101 Erreur:100000101

• yassmina041099@gmail.com

Pr. Mohamed Hamlich 81


Allure d’un caractère
transmis en RS232

Prof : M.HAMLICH-
Bit de parité

• Il existe deux types de contrôle de parité (pair et impair) et il est


indispensable que l’émetteur et le récepteur s’entendent sur le type à utiliser
pour l’ensemble de la transmission.
• Avec la parité paire, si le nombre de ‘ 1 ‘ dans les données envoyées est
impaire alors le bit de parité (bit de control) est égal à ‘ 1 ‘ de manière à ce
que le nombre total de ‘ 1 ‘ soit pair y compris le bit de parité, et si le nombre
de ‘ 1 ‘ est déjà pair alors le bit de parité vaudra ‘ 0 ‘.
• Une parité impaire correspond au système inverse.

Exemple :

Prof : M.HAMLICH-
Transmission synchrone

• Dans une transmission synchrone, les bits sont émis


d’une façon régulière, sans séparation entre les
caractères, pour cela un signal d’horloge périodique
de période T fonctionne pendant toute la durée de
l’émission.

Prof : M.HAMLICH-
Le support physique

Prof : M.HAMLICH-
Prof : M.HAMLICH-
I2C : Introduction

 I2C est le sigle d'Inter-Integrated Circuit. À la fin des années 1970, la division
des semi-conducteurs de chez Philips (maintenant devenue NXP) avait vu la
nécessité de simplifier et standardiser les échanges de données entre les
différents circuits intégrés dans leurs produits.

 Leur solution fut le bus I2C, elle réduisait le nombre de lignes nécessaires à
seulement deux lignes, SDA - Serial DAta, et SCL - Serial CLock.

 Dans ce cours, nous allons décrire l'architecture physique du bus I2C, le


protocole de communication série et comment communiquer en I2C

Pr. Mohamed Hamlich 87


I2C : Vitesse

 À l'origine, la communication était limitée à la vitesse de transfert de 100 kbit/s, et


cela suffisait dans la majorité des cas.

 Pour des débits plus rapides, de nouvelles spécifications sont nées. D'abord un
Fast Mode à 400 kbit/s, puis un Fast Mode plus (FM+) à 1 Mbit/s.

 Depuis 1998, il y a une version High Speed à 3,4 Mbit/s. Le débit maximal possible
via un bus I2C est spécifié dans l'Ultra Fast mode à 5 Mbit/s, mais avec un
fonctionnement un peu particulier.

Pr. Mohamed Hamlich 88


I2C : caractéristiques

•seulement deux lignes (bidirectionnelles) sont nécessaires, - SDA -, - SCK -;

•transmission synchrone. Contrairement à la liaison RS232. Ici, le périphérique maître


(master) génère le signal d'horloge qui synchronise et cadence les échanges ;

•la relation entre les périphériques du bus est de type maître-esclave (master/slave).

•chaque périphérique sur le bus I2C possède une adresse unique sur 7bits;

•l'I2C gère le fonctionnement multimaître (multi-master),

Pr. Mohamed Hamlich 89


I2C : bit dominant

Sur le bus I2C le niveau logique dominant est le 0, le niveau récessif est
le 1. En absence de commande le niveau logique (repos) est donc 1. Le
bus doit être équipé de deux résistances de pull-up (4K à 10K)
Pr. Mohamed Hamlich 90
I2C : Contrôle du bus

• Les échanges commencent toujours par une condition START sur


SCL/SDA et finissent par une condition STOP

• Les bits sont transférés sur le front


descendant de SCL
• Le bus I2C pouvant accueillir plusieurs esclaves ceux-ci sont identifiés
par une adresse sur 7 bits, le 8 ième bits de l’octet indique s’il s’agit
d’une opération d’écriture dans l’esclave (0) ou de lecture (1).

Pr. Mohamed Hamlich 91


I2C : Transmission d’une adresse

• Le premier octet envoyé correspond à l’adresse de l’esclave choisi


suivi d’un bit de lecture ou écriture.

• Par exemple pour un circuit dont l’adresse est 0b1010000.


L’adresse I2C en écriture sera 0b10100000 (0xA0) et
0b10100001 (0xA1) en lecture.

Pr. Mohamed Hamlich 92


I2C : Transmission d’un octet

• Le bit de pois fort est transmis en premier

• A chaque période de SCL, un bit de SDA est transmis

Pr. Mohamed Hamlich 93


I2C : Ecriture d’une donnée

• Le bit de R/W = 0;

• Après chaque bit ACK valide, il peut y avoir deux cas :


• Le maitre continue d’envoyer des octets à l’esclave
• Le maitre décide de terminer le dialogue en envoyant une
condition de stop.

Pr. Mohamed Hamlich 94


I2C : Lecture d’une donnée
• Le bit de R/W = 1;

• C’est toujours le maitre qui génère SCL.


• L’esclave prend le contrôle de SDA.
• C’est le maitre qui génère ACK après chaque octet envoyé par
l’esclave.

Pr. Mohamed Hamlich 95


I2C : Lecture et écriture
• Adresse du DS1307:
• Adresse: 1101000

Pr. Mohamed Hamlich 96


adresse donnée
00000000 secondes
00000001 minutes
00000010 heures

Pr. Mohamed Hamlich 97


I2C : Exemple d’application

Pr. Mohamed Hamlich 98

Vous aimerez peut-être aussi