Cours 80C552
Cours 80C552
Cours 80C552
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-