12.01.2013 Views

Cours 80C552

Cours 80C552

Cours 80C552

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

SEPTIEME PARTIE:<br />

ETUDE FONCTIONNELLE DES CARTES REALISEES<br />

AUTOUR DU µC <strong>80C552</strong><br />

Plan de l’étude:<br />

A -Schéma fonctionnel de la carte XEVA page 76<br />

B- Schéma électrique de la carte XEVA page 77<br />

C- Schéma fonctionnel de la carte XEVA-DEMO page 78<br />

D- Schéma électrique de la carte XEVA-DEMO page 79<br />

E- Schéma fonctionnel de l’ensemble RACK51 page 80<br />

F- Schéma électrique de l’ensemble RACK51 page 81<br />

G- Schéma fonctionnel des cartes d’extension page 82<br />

H- Schéma électrique des cartes d’extension page 83<br />

I- Brochage cu microcontrôleur <strong>80C552</strong> page 84<br />

- 75 - - cf RIVALIN Georges 2005-2006-


A -Schéma fonctionnel de la carte XEVA:<br />

- 76 - - cf RIVALIN Georges 2005-2006-


B- Schéma électrique de la carte XEVA :<br />

- 77 - - cf RIVALIN Georges 2005-2006-


C -Schéma fonctionnel de la carte XEVA-DEMO:<br />

- 78 - - cf RIVALIN Georges 2005-2006-


D -Schéma électrique de la carte XEVA-DEMO:<br />

- 79 - - cf RIVALIN Georges 2005-2006-


E -Schéma fonctionnel de l’ensemble RACK51:<br />

- 80 - - cf RIVALIN Georges 2005-2006-


F -Schéma électrique de l’ensemble RACK51:<br />

- 81 - - cf RIVALIN Georges 2005-2006-


G -Schéma fonctionnel des cartes d’extension:<br />

- 82 - - cf RIVALIN Georges 2005-2006-


H -Schéma électrique des cartes d’extension:<br />

- 83 - - cf RIVALIN Georges 2005-2006-


I- Brochage du microcontrôleur <strong>80C552</strong>:<br />

- 84 - - cf RIVALIN Georges 2005-2006-


HUITIEME PARTIE:<br />

ETUDE STRUCTURELLE ET LOGICIELLE A L’AIDE<br />

DES CARTES REALISEES AUTOUR DU µC <strong>80C552</strong><br />

Plan de l’étude:<br />

A- Structuration interne du µC <strong>80C552</strong> page 86<br />

1°- Schéma synoptique et fonctions complémentaires<br />

2°- Registres à fonctions spéciales (SFR) page 87<br />

B- Réalisation de la conversion analogique/digital page 88<br />

1°- Structure interne<br />

a- Multiplexage des entrées analogiques<br />

b- Référence de conversion<br />

c- Résultat de la conversion page 89<br />

d- Contrôle de la conversion<br />

2°- Programme de conversion-type page 90<br />

a- Programme en langage assembleur<br />

b- Programme en langage C<br />

C - Le compteur/temporisateur (dit “timer”) T2 page 91<br />

1°- Bornes utilisées<br />

2°- Registres utilisés<br />

3°- Utilisation du registre TM2CON page 92<br />

4°- Utilisation du registre CTCON page 93<br />

5°- Utilisation des registres STE et RTE<br />

6°- Utilisation des registres TM2IR, IP1 et IEN1 page 94<br />

E- Les sorties à rapport cyclique variable PWM0 et PWM1 page 95<br />

1°- Fonctions réalisées<br />

2°- Registres utilisés<br />

3°- Caractéristiques des signaux de sorties<br />

4°- Programme en langage C page 96<br />

5°- Relevés exprimentaux<br />

F- Le fonctionnement du bus I²C page 97<br />

1°- Les différents types de bus<br />

2°- Le principe du bus I²C<br />

3°- Transmission d’un bit page 98<br />

4°- Condition de départ et de fin de transmission page 99<br />

5°- Bit d’accusé de réception: Acknowledge (ACK)<br />

G- Composition d’un message de transmission<br />

1°- Description générale<br />

2°- Constitution de l’octet-adresse du récepteur page 100<br />

3°- Composition des messages pour la mémoire EEPROM série 24C02<br />

- 85 - - cf RIVALIN Georges 2005-2006-


A- Structuration interne du µC <strong>80C552</strong>:<br />

1°- Schéma synoptique et fonctions complémentaires:<br />

Figure extraite de l’ouvrage “Microcontrôleurs 80C535 à <strong>80C552</strong>- Bernard ODANT- Editions DUNOD<br />

Figure extraite de l’ouvrage “Microcontrôleurs 80C535 à <strong>80C552</strong>- Bernard ODANT- Editions DUNOD<br />

Ce schéma<br />

synoptique et la figure<br />

ci-dessous font<br />

nettement apparaître<br />

l’évolution du µC8051<br />

au µC<strong>80C552</strong>.<br />

Il faut noter tout<br />

d’abord l’existence de<br />

2 ports parallèles<br />

supplémentaires:<br />

-P4: port logique<br />

bidirectionnel,<br />

-P5: port<br />

analogique<br />

unidirectionnel,<br />

-PWM: ensemble<br />

de 2 sorties à modulation<br />

de largeur<br />

d’amplitude,<br />

-I²C: port de<br />

communiation série.<br />

La taille de la<br />

mémoire RAM interne<br />

a par ailleurs doublé.<br />

Chacune des<br />

f o n c t i o n s<br />

supplémentaires fait<br />

évidemment appel à<br />

des registres internes<br />

supplémentaires ainsi<br />

que cela apparait sur la<br />

page suivante.<br />

- 86 - - cf RIVALIN Georges 2005-2006-


2°- Registres à fonctions spéciales (SFR):<br />

Chacune des fonctions supplémentaires nécessitera l’utilisation de registres spécifiques. Ainsi, la<br />

conversion analogique/digital fera appel aux registres ADCH et ADCON.<br />

Le registre correspondant au port<br />

P5 (adresse: C4h) comporte les<br />

états des 8 entrées analogiques à<br />

convertir: on remarque qu’elles sont<br />

dénommées ADC7 à ADC0.<br />

Le registre ADCON (Analogic/<br />

digital control) contiendra les variables<br />

nécessaires à la préparation de<br />

la conversion, et à son contrôle final.<br />

Le registre ADCH (Analogic/<br />

digital converter high) contiendra<br />

les 8 bits de poids les plus forts du<br />

résultat de la conversion.<br />

De même, pour la communication<br />

sur bus I²C, il sera fait appel<br />

aux registres S1ADR, S1DAT,<br />

S1STA, S1CON.<br />

Les registres PWMP, PWM1 et<br />

PWM0 seront utilisés pour la production<br />

de signaux modulés en<br />

largeur d’impulsion (MLI ou PWM:<br />

Pulse Wide Modulation).<br />

De même les compteurs (timers)<br />

font appel à un certain nombre de<br />

registres:<br />

- les registres TMH2 et TML2<br />

(TiMer High et TiMer Low, soit 16<br />

bits au total) d’une part,<br />

TM2CON et TM2IR (TiMer Control<br />

et TiMer INterruption) d’autre<br />

part, pour le compteur 2,<br />

- le registre T3 pour le compteur<br />

3.<br />

- 87 - - cf RIVALIN Georges 2005-2006-


B- Réalisation de la conversion analogique/digital:<br />

1°- Structure interne:<br />

Le convertisseur analogique-numérique possède 2 broches d’alimentation distinctes de celles de<br />

la partie logique du microcontrôleur: AVDD et AVSS. Elles sont généralement reliées au bornes VDD<br />

et VSS.<br />

Figure extraite de l’ouvrage “Microcontrôleurs 80C535 à <strong>80C552</strong>- Bernard ODANT- Editions DUNOD<br />

a- Multiplexage des entrées analogiques:<br />

Les tensions à convertir sont applicables sur les 8 entrées ADC 7 à ADC 0 du microcontrôleur,<br />

c’est à dire sur les 8 bits du port 5.<br />

Par multiplexage, l’une de ces tensions est sélectionnée: ce sont les états des 3 bits de poids<br />

les plus faibles du registre ADCON qui permettent cet aiguillage, selon le tableau suivant:<br />

b- Référence de conversion:<br />

ADCON 2 ADCON 1 ADCON 0 Entrée sélectionnée<br />

0 0 0 ADC 0<br />

0 0 1 ADC 1<br />

0 1 0 ADC 2<br />

0 1 1 ADC 3<br />

1 0 0 ADC 4<br />

1 0 1 ADC 5<br />

1 1 0 ADC 6<br />

1 1 1 ADC 7<br />

Deux entrées analogiques du microcontrôleur servent de référence: AVREF+ et AVREF-.<br />

La tension de référence du convertisseur est la différence de ces deux potentiels:<br />

AVREF = AVREF+ - AVREF-<br />

- 88 - - cf RIVALIN Georges 2005-2006-


c- Résultat de la conversion:<br />

Le résultat de la conversion est stocké dans le registre ADCH (pour les 8 bits de poids les<br />

plus forts), et dans le registre ADCON pour les deux bits de poids les plus faibles.<br />

Si le résultat de la conversion est exploité sur 10 bits, le résultat est donné par l’expression:<br />

RESULTAT = 2 10 x (TENSION - AVREF-) / (AVREF+ - AVREF-)<br />

Si le résultat de la conversion est exploité sur 8 bits, le résultat est donné par l’expression:<br />

RESULTAT = 2 8 x (TENSION - AVREF-) / (AVREF+ - AVREF-)<br />

Dans le cas où les entrées AVREF+ et AVREF- sont reliées à la masse, cette expression<br />

devient:<br />

RESULTAT = 2 8 x TENSION / AVREF.<br />

d- Contrôle de la conversion:<br />

Le registre ADCON comporte 8 bits, dont 3 servent au multiplexage, 2 servent à contenir<br />

une partie du résultat, et les 3 autres au contrôle de la conversion:<br />

ADCON 7 autrement dit ADC 1 : contient le bit 1 de la conversion sur 10 bits.<br />

ADCON 6 autrement dit ADC 0 : contient le bit 0 de la conversion sur 10 bits.<br />

(ne pas confondre ces deux bits avec les bits 0 et 1 de P5)<br />

ADCON 5 autrement dit ADEX: autorise le lancement de la conversion par signal externe;<br />

ADEX = 1 => lancement de la conversion par la borne STADC (Start ADC)<br />

ou mise à 1 du bit ADCS (ADC Start).<br />

ADEX = 0 => lancement de la conversion uniquement par la mise à 1 du bit<br />

ADCS (voir ci-dessous).<br />

ADCON 4 autrement dit ADCI: indique la disponibilité du résultat de la conversion;<br />

ADCI doit être mis à 0 par programme avant le lancement de la conversion,<br />

ADCI est mis à 1 matériellement quand le résultat de la conversion est disponible.<br />

ADCON 3 autrement dit ADCS: début et fin de la conversion;<br />

ADCS doit être mis à 1 par programme pour lancer la conversion,<br />

ADCS est mis à 0 matériellement quand le résultat de la conversion est disponible.<br />

ADCON 2 autrement dit AADR 2 : bit de poids 2 de la sélection du multiplexeur.<br />

ADCON 1 autrement dit AADR 1 : bit de poids 1 de la sélection du multiplexeur.<br />

ADCON 0 autrement dit AADR 0 : bit de poids 0 de la sélection du multiplexeur.<br />

Le programme de gestion de la conversion doit tenir compte de ces 6 derniers bits, comme<br />

nous allons le voir dans la partie suivante.<br />

- 89 - - cf RIVALIN Georges 2005-2006-


2°- Programme de conversion-type:<br />

a- Programme en langage assembleur:<br />

INCLUDE REG552.INC Inclure le fichier “reg552.inc” pour la définition des registres du<br />

microcontrôleur <strong>80C552</strong>.<br />

BCL2: MOV ADCON,#00h Initialisation du registre de contrôle du convertisseur:<br />

Mise à 0 du bit ADEX, la conversion sera lancée par la mise à 1 du bit ADCS,<br />

Mise à 0 du bit ADCI du registre de contrôle, ce bit passera à 1 lorsque la<br />

conversion sera terminée,<br />

Sélection de la broche P5.0 ou la tension à convertir est appliquée.<br />

ORL ADCON,#08h Lancement conversion par OU logique entre la valeur de ADCON et 08h:<br />

ADCON = 0 0 0 0 0 0 0 0<br />

08h = 0 0 0 0 1 0 0 0<br />

Résultat = 0 0 0 0 1 0 0 0<br />

Le bit ADCS est mis à 1, la conversion peut commencer.<br />

BCL1: MOV A,ADCON Copie de la valeur de ADCON dans A<br />

JNB 0E4h, BCL1 Test du bit 4 (adresse bit E4h) de A, soit du bit ADCI du registre ADCON,<br />

Tant que ce bit est à 0, le programme retourne à BCL.<br />

SJMP BCL2<br />

END<br />

b- Programme en langage C:<br />

#include Inclure le fichier “reg552h” pour la définition des registres du<br />

microcontrôleur <strong>80C552</strong>.<br />

at 0xE4 sbit ADCI; Indiquer l’adresse du bit ADCI: E4h, soit le bit 4 de l’accumulateur A.<br />

void main (void)<br />

{<br />

Déclaration du programme principal<br />

while (1)<br />

{<br />

Début de boucle<br />

ADCON = 0x00; Initialisation du registre de contrôle du convertisseur:<br />

Mise à 0 du bit ADEX, la conversion sera lancée par la mise à 1 du bit ADCS,<br />

Mise à 0 du bit ADCI du registre de contrôle, ce bit passera à 1 lorsque la<br />

conversion sera terminée,<br />

Sélection de la broche P5.0 ou la tension à convertir est appliquée.<br />

ADCON=ADCON | 0x08;Lancement conversion par OU logique entre la valeur de ADCON et 08h:<br />

ADCON = 0 0 0 0 0 0 0 0<br />

08h = 0 0 0 0 1 0 0 0<br />

Résultat = 0 0 0 0 1 0 0 0<br />

Le bit ADCS est mis à 1, la conversion peut commencer.<br />

do<br />

{ Test du bit ADCI:<br />

ACC = ADCON;<br />

}<br />

Charger le contenu de ADCON dans ACC,<br />

while (ADCI == 0); Tant que ce bit est à 0.<br />

}<br />

}<br />

- 90 - - cf RIVALIN Georges 2005-2006-


C - Le compteur/temporisateur (dit “timer”) T2:<br />

1°- Bornes utilisées:<br />

CT0I (ou P1.0): borne d’activation du registre de capture CT0,<br />

CT1I (ou P1.1): borne d’activation du registre de capture CT1,<br />

CT2I (ou P1.2): borne d’activation du registre de capture CT2,<br />

CT3I (ou P1.3): borne d’activation du registre de capture CT3,<br />

T2 (ou P1.4): borne d’entrée de comptage des évènements externes,<br />

RT2 (ou P1.5): borne de remise à zéro de T2, active sur front montant.<br />

2°- Registres utilisés:<br />

Le timer T2 est un registre 16 bits (TMH2 + TML2 = adresses EDh et ECh), dont le contenu<br />

ne peut pas être modifié par programme.<br />

Il est associé à quatre registres 16 bits de capture, permettant de mémoriser le contenu du timer:<br />

- CT3 (CTH3 + CTL3 = adresses CFh et AFh),<br />

- CT2 (CTH2 + CTL2 = adresses CEh et AEh),<br />

- CT1 (CTH1 + CTL1 = adresses CDh et ADh),<br />

- CT0 (CTH0 + CTL0 = adresses CCh et ACh).<br />

ainsi qu’à trois registres de comparaison:<br />

- CM2 (CMH2 + CML2 = adresses CBh et ABh),<br />

- CM1 (CMH1 + CML1 = adresses CAh et AAh),<br />

- CM0 (CMH0 + CML0 = adresses C9h et A9h),<br />

permettant lors de l’égalité entre les contenus des registres T2 et CTn de fixer l’état d’une bornes<br />

de P4 ( Set, Reset ou Toogle).<br />

Le fonctionnement de tout cet ensemble est régi par les registres suivants:<br />

TM2CON: registre de contrôle du timer T2 (adresseEAh),<br />

CTCON: registre de contrôle des registres de capture (adresse EBh),<br />

STE: registre de mise à 1 (adresse EEh),<br />

RTE: registre de remise à 0 ou inversion (adresse EFh),<br />

TM2IR: registre des indicateurs d’interruption (adresse C8h, bit à bit de C8h à CFh),<br />

IEN1: registre d’autorisations des interruptions (adresse E8h, bit à bit de E8h à EFh),<br />

IP1: registre de priorité des interruptions (adresse F8h, bit à bit de F8h à FFh).<br />

- 91 - - cf RIVALIN Georges 2005-2006-


Figure extraite de l’ouvrage “Microcontrôleurs 80C535 à <strong>80C552</strong>- Bernard ODANT- Editions DUNOD<br />

3°- Utilisation du registre TM2CON: (TiMer 2 CONtrol => fonction comptage)<br />

TM2CON 7 ou T2IS1: Sélection de l’interruption sur débordement 16 bits,<br />

TM2CON 6 ou T2IS0: Sélection de l’interruption sur débordement 8 bits,<br />

TM2CON 5 ou T2ER: Autorisation de RAZ externe (front montant sur entrée RT2),<br />

TM2CON 4 ou T2BO: Indicateur de débordement sur 8 bits,<br />

TM2CON 3 ou T2P1: Sélection du facteur de pré-division,<br />

TM2CON 2 ou T2P0: Sélection du facteur de pré-division,<br />

TM2CON 1 ou T2MS1: Sélection du signal d’entrée du timer,<br />

TM2CON 0 ou T2MS0: Sélection du signal d’entrée du timer.<br />

T2P1 T2P0 Pré-division T2MS1 T2MS0 Fonctionnement<br />

0 0 fosc / 12 0 0 Arrêt du comptage<br />

0 1 fosc / 24 0 1 Comptage fosc / 12n<br />

1 0 fosc / 48 1 0 Mode Test (non utilisé)<br />

1 1 fosc / 96 1 1 Comptage broche T2<br />

- 92 - - cf RIVALIN Georges 2005-2006-


4°- Utilisation du registre CTCON: (CapTure CONtrol => fonction capture)<br />

CTCON 7 ou CTN3: Déclenchement d’une capture dans CT3 par front descendant,<br />

CTCON 6 ou CTP3: Déclenchement d’une capture dans CT3 par front montant,<br />

CTCON 5 ou CTN2: Déclenchement d’une capture dans CT2 par front descendant,<br />

CTCON 4 ou CTP2: Déclenchement d’une capture dans CT2 par front montant,<br />

CTCON 3 ou CTN1: Déclenchement d’une capture dans CT1 par front descendant,<br />

CTCON 2 ou CTP1: Déclenchement d’une capture dans CT1 par front montant,<br />

CTCON 1 ou CTN0: Déclenchement d’une capture dans CT0 par front descendant,<br />

CTCON 0 ou CTP0: Déclenchement d’une capture dans CT0 par front montant.<br />

La capture peut être faite soit sur front montant, soit sur front descendant, soit sur les deux types<br />

de fronts.<br />

Chacun de ces registres de capture possède un indicateur d’interruption situé dans le registre<br />

TM2IR.<br />

5°- Utilisation des registres STE et RTE: (Set , Reset ou Toggle => fonction comparaison)<br />

Chaque registre de comparaison est associé à un comparateur, qui, en cas d’égalité des contenus,<br />

positionne un indicateur d’interruption, situé dans le registre TM2IR.<br />

Lorsque l’égalité des contenus est détectée, les contenus des bits du port P4 peuvent être fixés<br />

comme suit, s’ils l’ont préalablement été autorisés par le contenu des registres suivants:<br />

STE 7 ou TG47: Lecture de l’état futur de P4.7 (fonction TOGGLE),<br />

STE 6 ou TG46: Lecture de l’état futur de P4.6 (fonction TOGGLE),<br />

STE 5 ou SP45: Autorisation de mise à 1 de P4.5 si T2 =CM0,<br />

STE 4 ou SP44: Autorisation de mise à 1 de P4.4 si T2 =CM0,<br />

STE 3 ou SP43: Autorisation de mise à 1 de P4.3 si T2 =CM0,<br />

STE 2 ou SP42: Autorisation de mise à 1 de P4.2 si T2 =CM0,<br />

STE 1 ou SP41: Autorisation de mise à 1 de P4.1 si T2 =CM0,<br />

STE 0 ou SP40: Autorisation de mise à 1 de P4.0 si T2 =CM0.<br />

RTE 7 ou TP47: Inversion de P4.7 lorsque T2 = CM2,<br />

RTE 6 ou TP46: Inversion de P4.6 lorsque T2 = CM2,<br />

RTE 5 ou RP45: Autorisation de mise à 0 de P4.5 si T2 =CM1,<br />

RTE 4 ou RP44: Autorisation de mise à 0 de P4.4 si T2 =CM1,<br />

RTE 3 ou RP43: Autorisation de mise à 0 de P4.3 si T2 =CM1,<br />

RTE 2 ou RP42: Autorisation de mise à 0 de P4.2 si T2 =CM1,<br />

RTE 1 ou RP41: Autorisation de mise à 0 de P4.1 si T2 =CM1,<br />

RTE 0 ou RP40: Autorisation de mise à 0 de P4.0 si T2 =CM1.<br />

- 93 - - cf RIVALIN Georges 2005-2006-


6°- Utilisation des registres TM2IR, IP1 et IEN1:<br />

TiMer2 Interrupt Request )<br />

Interrupt Request 1 ) => gestion des interruptions.<br />

Interrupt ENable 1 )<br />

Les huit bits de ce registre sont mis à l’état haut par tois types d’évènement, selon les cas:<br />

- dépassement de capacité,<br />

- égalité entre les contenus des regitres timers et comparaison ,<br />

- capture réalisée.<br />

TM2IR 7 ou T2OV: Dépassement de capacité sur 16 bits,<br />

TM2IR 6 ou CMI2: Indicateur du registre de comparaison CM2,<br />

TM2IR 5 ou CMI1: Indicateur du registre de comparaison CM1,<br />

TM2IR 4 ou CMI0: Indicateur du registre de comparaison CM0,<br />

TM2IR 3 ou CTI3: Indicateur du registre de capture CT3,<br />

TM2IR 2 ou CTI2: Indicateur du registre de capture CT2,<br />

TM2IR 1 ou CTI1: Indicateur du registre de capture CT1,<br />

TM2IR 0 ou CTI0: Indicateur du registre de capture CT0.<br />

Ces indicateurs entraineront l’interruption du programme à condition qu’une autorisation préalable<br />

leur soit donnée par le contenu du bit correspondant du registre IEN1:<br />

IEN1 7 ou ET2: Autorisation d’interruption sur dépassement 16 bits,<br />

IEN1 6 ou ECM2: Autorisation d’interruption sur comparaison avec CM2,<br />

IEN1 5 ou ECM1: Autorisation d’interruption sur comparaison avec CM1,<br />

IEN1 4 ou ECM0: Autorisation d’interruption sur comparaison avec CM0,<br />

IEN1 3 ou ECT3: Autorisation d’interruption sur capture avec CT3,<br />

IEN1 2 ou ECT2: Autorisation d’interruption sur capture avec CT2,<br />

IEN1 1 ou ECT1: Autorisation d’interruption sur capture avec CT1,<br />

IEN1 0 ou ECT0: Autorisation d’interruption sur capture avec CT0.<br />

Dans le cas où plusieurs autorisations d’interruption sont validées, une priorité est fixé ou non par<br />

le bit correpondant du registre IP1:<br />

IP1 7 ou PT2: Priorité sur dépassement de capacité 16 bits,<br />

IP1 6 ou PCM2: Priorité pour comparaison avec CM2,<br />

IP1 5 ou PCM1: Priorité pour comparaison avec CM1,<br />

IP1 4 ou PCM0: Priorité pour comparaison avec CM0,<br />

IP1 3 ou PCT3: Priorité pour capture avec CT3,<br />

IP1 2 ou PCT2: Priorité pour capture avec CT2,<br />

IP1 1 ou PCT1: Priorité pour capture avec CT1,<br />

IP1 0 ou PCT0: Priorité pour capture avec CT0.<br />

- 94 - - cf RIVALIN Georges 2005-2006-


E- Les sorties à rapport cyclique variable PWM0 et PWM1:<br />

Pulse Width Modulation : Modulation de largeur d’impulsion.<br />

1°- Fonctions réalisées:<br />

Ces sorties peuvent fournir des signaux de féquence et de rapport cyclique fixés ou variables<br />

compte-tenu des l’état des registres suivants:<br />

2°- Registres utilisés:<br />

PWMP: registre de pré-division de la fréquence de l’oscillateur (adresse FEh); ce registre<br />

permet de fixer la fréquence des signaux de sorties,<br />

PWM0: registre permettant de fixer le rapprot cyclique de la sortie PWM0, (adresse FCh),<br />

PWM1: registre permettant de fixer le rapprot cyclique de la sortie PWM1, (adresse FDh).<br />

Figure extraite de l’ouvrage “Microcontrôleurs 80C535 à <strong>80C552</strong>- Bernard ODANT- Editions DUNOD<br />

3°- Caractéristiques des signaux de sorties:<br />

La fréquence du signal de sortie est définie par l’expression:<br />

f PWM = f OSC / { 2 x ( 1 + [PWMP] ) x 255)}<br />

Le rapport cyclique du signal de sortie est défini par l’expression:<br />

t B / t H = [PWMn] / ( 255 - [PWMn] ) ou η = t H / T = 1 ( [PWMn] / 255 )<br />

- 95 - - cf RIVALIN Georges 2005-2006-


4°- Programme en langage C:<br />

#include <br />

void main (void)<br />

{<br />

PWM1 = Valeur;<br />

PWMP = Valeur;<br />

}<br />

5°- Relevés exprimentaux:<br />

a- Avec la valeur décimale 128 stockée dans le registre PWM1:<br />

=> Pour les valeurs suivantes stochées dans PWMP, relevez les caractéristiques du signal sur<br />

la bornes PWM1:<br />

PWMP 0 10 15 20 25 30<br />

T (µs)<br />

f (Hz)<br />

PWMP 35 40 45 50 75 100<br />

T (µs)<br />

f (Hz)<br />

PWMP 125 150 175 200 225 255<br />

T (µs)<br />

f (Hz)<br />

b- Avec la valeur décimale 22 stockée dans le registre PWMP:<br />

=> Pour les valeurs suivantes stochées dans PWM1, relevez les caractéristiques du signal sur<br />

la bornes PWM1:<br />

PWM1 35 40 45 50 75 100<br />

η<br />

PWM1 125 150 175 200 225 255<br />

η<br />

- 96 - - cf RIVALIN Georges 2005-2006-


F- Le fonctionnement du bus I²C:<br />

1°- Les différents types de bus:<br />

La communication des microcontrôleurs, soit entre eux, soit avec les autres périphériques, se fait<br />

par l’intermédiaire de bus parallèles ou de bus séries. Une hiérarchie des circuits est définie: certains<br />

sont des circuits maîtres, d’autres des circuits esclaves.<br />

a- Les bus parallèles:<br />

Dans ce cas les informations sont appliquées sur les ports de données et sur les ports d’adresses<br />

(ports parallèles comme sur les cartes minimales à µP 6809 ou µC 80C51); dans certains cas<br />

les données et les adresses sont multiplexées (comme dans le cas du port 0 du 80C51).<br />

Avantages de ce type de bus: - rapidité de transmission des informations,<br />

- distances de transmission courtes.<br />

Inconvénient majeur: - nombre de fils de liaisons élevé.<br />

b- Les bus séries:<br />

Dans ce cas les informations étant transmises les unes après les autres (en série) donc sur un<br />

même conducteur, le nombre de fils de liaison est considérablement diminué. D’autre part cela<br />

permet d’avoir les liaisons plus longues. Par contre la transmission des données effectuée en série<br />

nécessite une durée beaucoup plus grande qu’en parallèle, principal inconvénient de ce système.<br />

2°- Le principe du bus I²C:<br />

a- Constitution:<br />

Le bus I²C (Inter-Ic-Communication) est un système de transmission série synchrone.<br />

A cet effet, deux lignes sont utilisées: - la ligne de donnée série (serial data => SDA),<br />

- la ligne d’horloge (serial clock => SCL).<br />

Ces lignes sont forcées à l’état haut (borne positive de l’alimentation) par des résistances de<br />

rappel, type pull-up. Les circuits connectés sur le bus doivent donc être à sorties “collecteur ouvert”<br />

ou “drain ouvert”.<br />

Le bus est libre quand les deux lignes (SDA et SCL) sont à l’état haut (structure dite “ET<br />

cablé”).<br />

b- Configuration du système:<br />

Le système qui génère le message est appelé “émetteur”, celui qui le reçoit est appelé “récepteur”.<br />

Le système qui contrôle la transmission du message est appelé “maître”, celui qui est contrôlé par<br />

le maître est appelé “esclave”.<br />

Chaque circuit connecté sur le bus I²C possède une adresse propre.<br />

Le bus I²C admet l’existence plusieurs maîtres; la procédure d’arbitrage n’est pas abordée dans<br />

ce document.<br />

La vitesse de travail sur ce type de bus permet une compatibilité avec des systèmes rapides<br />

(hardware) et des logiciels lents; deux vitesses de travail ont été définies:<br />

- la vitesse rapide (high speed mode): 100kHz maximum,<br />

- la vitesse lente (low speed mode): 2kHz au maximum.<br />

- 97 - - cf RIVALIN Georges 2005-2006-


Maître Emetteur Récepteur Récepteur Esclave<br />

3°- Transmission d’un bit:<br />

Pendant chaque état haut de l’horloge, un bit de donnée est transmis sur la ligne SDA. La<br />

donnée doit être stable pendant cette phase.<br />

La donnée ne peut changer d’état que lorsque l’horloge est au niveau bas.<br />

Transmission correcte: Transmission impossible:<br />

- 98 - - cf RIVALIN Georges 2005-2006-


4°- Condition de départ et de fin de transmission:<br />

Le départ de la transmission est donné par un front descendant sur la ligne SDA, pendant que la<br />

ligne SCL est à l’état haut (Start).<br />

La fin de la transmission correspond à un front montant sur la ligne SDA, pendant que la ligne<br />

SCL est à l’état haut (Stop).<br />

Un changement d’état de la ligne de donnée (SDA) pendant un état haut de la ligne d’horloge<br />

(SCL) conditionne un début ou une fin de transmision.<br />

5°- Bit d’accusé de réception: Acknowledge (ACK)<br />

Après chaque transmission d’un octet de données (8 bits), l’émetteur maintient la ligne SDA à<br />

l’état haut, pendant le temps équivalent à la transmission d’un neuvième bit.<br />

Si, pendant ce temps-là, le récepteur force la ligne SDA à l’état bas, il accuse réception (ACK<br />

= 0).<br />

Sinon, le maintien de la ligne SDA à l’état haut correspond à la libération du bus, et à l’interruption<br />

de la communication.<br />

G- Composition d’un message de transmission:<br />

1°- Description générale:<br />

Une condition de départ de la transmission stipule le début du message (Start) et une condition<br />

de fin de transmission correspond à la fin du message (Stop).<br />

La transmission se fait par octet; le premier octet transmis par le maître-émetteur contient l’adresse<br />

du récepteur.<br />

Chaque octet est suivi d’un bit d’accusé de réception qui doit être validé par le récepteur pour<br />

que la transmission puisse se poursuivre.<br />

Le nombre d’octets constituant le message n’est pas limité.<br />

- 99 - - cf RIVALIN Georges 2005-2006-


2°- Constitution de l’octet-adresse du récepteur:<br />

L’adresse du récepteur est codée sur sept bits, du poids le plus fort au poids le plus faible.<br />

Le huitième bit (poids le plus faible du mot) indique la direction de transmission:<br />

- Etat 0: le maître écrit une donnée à l’adresse pointée,<br />

- Etat 1: le maître lit une donnée à l’adresse pointée.<br />

Un bit d’accusé de réception intervient également en neuvième lieu.<br />

3°- Composition des messages pour la mémoire EEPROM série 24C02:<br />

Extraits des documents-constructeurs<br />

Microchip.<br />

- 100 - - cf RIVALIN Georges 2005-2006-


- 101 - - cf RIVALIN Georges 2005-2006-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!