Chapitre III Ce microcontrôleur intègre en plus des fonctions sophistiquées :
LE MICROCONTRÔLEUR 68HC11 - Un convertisseur A/N de 8 canaux d’entrée multiplexés et de 8 bits de précision;
III.1 – Description : - Cinq ports d’entrée/sortie de 8 bits, programmables (le 68HC11F1 en possède sept); C’est un microcontrôleur livré en un seul boîtier qui bénéficie des avantages de la - Un système de temporisation 16 bits développé de manière à avoir trois lignes de technologie HCMOS, c'est-à-dire une faible consommation de puissance comme la capture en entrée, cinq lignes de comparaison en sortie et un circuit d’interruption en famille CMOS, une grande immunité aux bruits et la grande de commutation (vitesse temps réel; maximale d’environ 40 MHz). - Un accumulateur d’impulsions qui peut être utilisé pour mesurer une période externe; La mémoire interne comprend : - Un circuit de surveillance de bon fonctionnement (COP) ou « Watchdog », qui aide à - 8 kOctets de mémoire ROM (certaines versions ont 4 kOctets, d’autres ont 12 ou protéger contre les défaillances logicielles; 16 kOctets, les versions 68HC11A1 et 68HC11F1 ne possèdent pas de ROM); - Un système d’horloge programmable qui génère une initialisation dans le cas d’une - 512 Octets de mémoire EEPROM (certaines versions n’en ont pas); perte d’horloge ou lorsque celle-ci est trop lente; - 256 Octets de mémoire RAM (certaines versions ont 512, le 68HC11F1 intègre - Une interface de communication série asynchrone SCI; 1024 octets de RAM statique); - Une interface de périphériques série synchrone (SPI); Le 68HC11 opère à une vitesse de BUS de 2 MHz (le 68HC11F1 opère à 4 MHz). - Un circuit de détection de code opératoire illégal qui produit une interruption non masquable si un code opératoire illégal est détecté dans le programme. III.2 – Modes de fonctionnement : Le 68HC11 possède deux broches dédiées MODA et MODB qui sélectionnent le XTAL mode de fonctionnement. Les modes de fonctionnement de base sont : 68HC11 EXTAL - Mode Single-Chip (Mode auto-opérationnel) ou Mode 0; Quartz de fréquence 4 fois la fréquence de - Mode Etendu-multiplexé ou Mode 1; fonctionnement du µC Les modes de fonctionnement spéciaux : a) Horloge à base de Quartz - Mode Bootstrap; - Mode Test. La sélection des différents modes se fait conformément à la table de vérité suivante : XTAL MODB MODA Mode de fonctionnement 68HC11 EXTAL Horloge de fréquence 1 0 Single-Chip ou Mono-Chip 4 fois la fréquence de fonctionnement du µC 1 1 Étendu-Multiplexé 0 0 Spécial Bootstrap b) Horloge externe 0 1 Spécial Test Figure III.1 – Conception d’une horloge pour le microcontrôleur 68HC11 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 1/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 2/40 III.2.1 – Mode Single chip : PB7 A15 Dans ce mode auto-opérationnel, le microcontrôleur fonctionne de manière PB6 A14 PB5 A13 autonome et n’a pas d’adresses extérieures ni de BUS de données externe. Il exploite au PB4 A12 PB3 A11 maximum ses propres ressources et périphériques internes. Toutes les manipulations de PB2 A10 PB1 A9 données et d’adresses sont internes. Ce mode est sélectionné pendant la remise à zéro à PB0 A8 l’aide de la combinaison ci-dessus. 68HC11 74HC373 PC7 PC7 Q1 A7 PC6 PC6 Q2 A6 III.2.2 – Mode étendu multiplexé : PC5 PC5 Q3 A5 PC4 PC4 Q4 A4 Dans ce mode, deux ports d’Entrée/Sortie et deux lignes d’E/S additionnelles PC3 PC3 Q5 A3 PC2 PC2 Q6 A2 deviennent BUS d’adresses, de données et de contrôle (AS et R/ W ) permettant au PC1 PC1 Q7 A1 PC0 PC0 Q8 A0 microcontrôleur d’adresser jusqu’à 64 koctets d’espace mémoire (figure III.2). L’octet de (PD6) AS LE CE poids fort des adresses sort sur le port B alors que l’octet de poids faible est multiplexé (PD7) R/W avec le BUS de données et sort sur le port C. Dans ce cas, le bit 6 du port D devient la WE E sortie de contrôle AS qui est utilisée pour démultiplexer l’octet faible d’adresses des D7 D6 données. Le bit 7 du port D contrôle la direction de transfert des données ( R/ W ). D5 D4 D3 Pour la version 68HC11F1, le BUS d’adresses est formé par le port B (A15-A8) et le D2 D1 port F (A7-A0). Le signal R/ W est fourni indépendamment par le 68HC11F1. Pour le D0 BUS de données, il est constitué dans cette version par le port C (D7-D0). Figure III.2 – Démultiplexage Adresses/Données avec le circuit MC74HC373 Les ports B, C et F fonctionnent aussi en ports d’entrée-sortie ordinaires (ports B et (Versions autres que le 68HC11F1) F comme ports de sortie et port C comme entrée/sortie). III.2.3 – Mode Bootstrap : Dans le mode Bootstrap, le programme situé dans la ROM de démarrage initialise Il s’agit d’un mode Single-Chip spécial, dont le programme de gestion (Firmware) et la logique de réception série de façon logicielle, qui permet de programmer la vitesse de les vecteurs sont placés dans la ROM de démarrage (Boot ROM). La ROM de démarrage transmission et le format du mot de l’interface SCI pour charger le programme spécial de a une taille de 256 octets et est située entre $BF00 et $BFFF. Le programme BOOT- gestion dans la RAM interne. LOADER est situé dans la ROM de démarrage entre $BF40 et $BFFF (192 octets). Les bits de contrôle peuvent aussi être programmés de manière à ce que le mode de Le programme de démarrage permet de charger un programme spécial de gestion de fonctionnement puisse être changé (à la fin du chargement du programme dans la RAM) 256 Octets dans la RAM interne (ou jusqu’à 1 kOctet dans la version 68HC11F1) et un du mode Bootstrap au mode étendu multiplexé, afin d’exécuter le programme chargé contrôle est validé après cette lecture pour que le microcontrôleur retrouve le mode dans la RAM à partir de l’adresse $0000. single chip. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 3/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 4/40 III.2.4 – Mode Test : III.3.2 – Mode Etendu-Multiplexé : C’est un mode étendu multiplexé spécial, le vecteur d’initialisation est recherché en Les emplacements mémoire sont les mêmes que ceux du mode Single-Chip, à mémoire ce qui permet au programme d’être vectorisé vers un programme de test l’addition des emplacements désignés EXT; réservés aux mémoires et aux E/S externes. externe. III.3.3 – Mode Bootstrap : Ce mode est avant tout considéré comme le mode de test global de production au Les emplacements sont identiques à ceux du mode single chip, à l’addition des moment de la fabrication. Cependant il peut aussi être utilisé pour programmer des emplacements de la mémoire de démarrage (Boot ROM). calibrations ou des données personnelles dans l’EEPROM interne ou programmer le registre CONFIG. Durant l’initialisation de ce mode, un bit est configuré pour permettre III.3.4 – Mode Test : l’accès aux bits de contrôle de ce mode. Les emplacements sont les mêmes que ceux du mode étendu multiplexé. Il faut Les bits de contrôle peuvent aussi être programmés pour permettre au mode de seulement noter les emplacements réservés aux vecteurs d’interruption de ce mode, situés fonctionnement de passer du mode test au mode single chip. dans l’espace mémoire externe. III.3 – Répartition de l’espace mémoire : III.4 – Unité centrale de traitement : L’espace mémoire dépend du mode de fonctionnement (figure III.3). C’est une extension de l’unité centrale du microcontrôleur 6801. En plus d’être $0000 0000 RAM de (1024 sur la version F1) capable d’exécuter les instructions du 6800 et du 6801, le 68HC11 possède 91 nouveaux ↑ ↑ 256 Octets EXT EXT 00FF codes opératoires. L’unité centrale de traitement du 68HC11 peut être utilisée $1000 ↓ ↓ 1000 Bloc de 64 octets (96 sur la version F1 : $1000-$105F) indépendamment des E/S, mémoires et des périphériques externes et peut être ↑ ↑ de registres EXT EXT 103F internes considérée comme un processeur indépendant qui communique avec ses sous-systèmes ↓ ↓ $B600 B600 EEPROM de 512 Octets internes, dans le mode Single-Chip. ↑ ↑ B7FF L’unité centrale de traitement possède sept registres accessibles par l’utilisateur EXT BF00 ROM de BFC0 64 Vecteurs démarrage d’interruption des EXT BFFF BFFF modes spéciaux (Figure III.4). L’ordre d’empilement de ces registres dans la pile lors d’une interruption $E000 ↓ ↓ E000 ROM de est montré à la figure III.5. 8 kOctets FFC0 64 Vecteurs d’interruption des III.4.1 – Accumulateurs A et B : $FFFF FFFF FFFF modes normaux Mode Mode Etendu Mode Mode Ces registres contiennent des opérandes ou des résultats d’opérations arithmétiques Single-Chip Multiplexé Spécial Boot Spécial Test (Mode 0) (Mode 1) ou logiques de manipulation de données. Ces accumulateurs 8 bits sont concaténables en MODA= 0 MODA= 1 MODA= 0 MODA= 1 MODB= 1 MODB= 1 MODB= 0 MODB= 0 un accumulateur D de 16 bits. L’accumulateur A correspond au poids le plus fort. Figure III.3 – Répartition de l’espace mémoire du 68HC11 III.4.2 – Registres d’index X et Y : III.3.1 – Mode Single-Chip : Utilisables lors de l’adressage indexé, ils contiennent la valeur 16 bits qui peut être Aucune adresse mémoire externe n’est générée. Les emplacements mémoire internes associée à un décalage pour créer l’adresse effective. Ils peuvent aussi servir de pointeurs sont indiqués par les aires hachurées. Le contenu de ces aires est montré sur le coté droit de la figure. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 5/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 6/40 d’adresses ou de zones de stockage temporaires. Il est à noter que plusieurs instructions III.4.4 – Le compteur programme PC: utilisant le registre Y, nécessitent un octet supplémentaire de code machine. Ce registre de 16 bits contient à chaque instant l’adresse de la prochaine instruction à COMPTEUR PROGRAMME - PC exécuter. INDEX - X III.4.5 – Le registre d’état CCR: INDEX - Y POINTEUR DE PILE - SP Les huit bits de ce registre indiquent la signification des résultats de l’opération qui ACCUMULATEUR - A ACCUMULATEUR - B vient d’être exécutée. Ces bits peuvent être testés par un programme pour générer une action spécifique. ACCUMULATEUR - D Les bits (C, V, Z, N, I et H) sont identiques à ceux du MC6809 vu au chapitre REGISTRE D’ETAT - CCR précédent, la signification des bits S et X est comme suit : S X H I N Z V C - S : Ce bit est utilisé pour permettre ou interdire l’instruction STOP du 68HC11. Bit de retenue (CARRY) L’instruction STOP arrête l’oscillateur du 68HC11 et par conséquent arrête le Bit de débordement (OVERFLOW) fonctionnement du microcontrôleur. Quand S=1, l’instruction STOP devient Bit de zero (ZERO) Bit de signe négatif (NEGATIVE) inopérante. Quand S=0, dès que le programme rencontre l’instruction STOP, Masque d’interruption IRQ l’horloge du 68HC11 s’arrête. Bit de demie retenue (HALF CARRY) Masque d’interruption X (XIRQ) - X : Masque de l’interruption XIRQ . Il permet de valider les demandes d’interruption Désactivation de STOP sur la broche XIRQ . Ce masque est utilisé uniquement pendant la remise à zéro Figure III.4 – Registres du 68HC11 (reset) pour inhiber l’interruption XIRQ , mais dès que le programme de démarrage est III.4.3 – Pointeur de pile SP : lancé, les interruptions XIRQ sont autorisées et ne peuvent plus être masquées par Configuré comme un registre à séquence LIFO « Le dernier sort en premier », lors programme. XIRQ est une interruption non masquable en fonctionnement normal. du stockage du contexte du 68HC11 au moment des interruptions (Figure III.5). Remarques : SP après interruption SP-9 Quand une interruption apparaît : CCR SP-8 ACC. A X=1 ⇒ blocage de XIRQ (lors d’un RESET); SP-7 ACC. B SP-6 I=1 ⇒ blocage de IRQ . XH SP-5 Adresses décroissantes XL SP-4 Après traitement de l’interruption, l’instruction RTI (retour d’interruption) : YH SP-3 X=0 ⇒ autorisation de XIRQ ; YL SP-2 PCH SP-1 I=0 ⇒ autorisation de IRQ . SP avant interruption PCL SP X étant le masque de l’interruption XIRQ et I celui de l’interruption IRQ . Figure III.5 – Ordre d’empilement des registres sur la pile A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 7/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 8/40 III.5 – Les autres registres internes du 68HC11 : $102A SPDR Pour écrire à ou lire à partir des différents périphériques ou ressources internes du $102B BAUD $102C SCCR1 68HC11, ce microcontrôleur utilise un ensemble de registres repérés dans l’espace $102D SCCR2 mémoire (entre $1000 et $103F dans la version de base et $1000-$105F sur la version $102E SCSR $102F SCDR F1). Un certain nombre de ces registres est utilisé pour la configuration des différents $1030 ADCTL modes de fonctionnement de ces périphériques et ressources internes. Le tableau suivant $1031 ADR1 $1032 ADR2 donne le nom et l’adresse dans l’espace mémoire de ces registres dans la version de base $1033 ADR3 du 68HC11. $1034 ADR4 $1035 BPROT $1000 PORT A (DDRA du Bit7 en $1026 = PACTL) $1036 à $1038 RESERVE MOTOROLA $1001 RESERVE MOTOROLA $1039 OPTION $1002 PIOC $103A COPRST $1003 PORT C $103B PPROG $1004 PORT B $103C HPRIO $1005 PORT CL $103D INIT $1006 RESERVE MOTOROLA $103E TEST1 $1007 DDRC $103F CONFIG $1008 PORT D $1009 DDRD III.6 – Les interruptions du 68HC11 : $100A PORT E $100B CFORC Il existe de nombreuses sources d’interruption pour le 68HC11: 2 interruptions $100C OC1M matérielles (entrées externes sensibles à un niveau bas) : IRQ et XIRQ , une interruption $100D OC1D $100E et $100F TCNT logicielle SWI et un certain nombre de sources internes liées aux différents périphériques $1010 et $1011 TIC1 qui équipent le microcontrôleur (TIMER, SCI, SPI, RTII : Interruption temps réel, etc...). $1012 et $1013 TIC2 $1014 et $1015 TIC3 III.6.1 – Interruptions matérielles : $1016 et $1017 TOC1 $1018 et $1019 TOC2 y XIRQ : Interruption non masquable du 68HC11 (broche externe). Le masque X du $101A et $101B TOC3 $101C et $101D TOC4 registre d’état est utilisé uniquement pendant la remise à zéro (reset) pour inhiber $101E et $101F TOC5 l’interruption XIRQ . Dès que le programme de démarrage est initialisé, les interruptions $1020 TCTL1 $1021 TCTL2 XIRQ sont autorisées et ne peuvent plus être masquées par programme. $1022 TMSK1 $1023 TFLG1 y IRQ : Interruption générale masquable du 68HC11 (broche externe). Elle peut être $1024 TMSK2 $1025 TFLG2 masquée par programme (Instruction SEI). $1026 PACTL y PA0 (IC3), PA1 (IC2), PA2 (IC1) : Utilisées par le TIMER. Elles peuvent être utilisées $1027 PACNT pour contrôler des demandes d’interruption. Les interruptions correspondantes sont $1028 SPCR $1029 SPSR masquables. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 9/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 10/40 y PA6 (OC2), PA5 (OC3), PA4 (OC4), PA3 (OC5) et éventuellement PA7 (OC1) : Exemple: SPIRQ est l’étiquette du sous-programme à exécuter si un niveau bas apparaît utilisées comme sorties de comparaison par les comparateurs du TIMER. Quand il y a sur l’entrée IRQ . égalité entre le contenu des registres de comparaison et le contenu du compteur libre, un ORG $FFF2 bit est positionné (OC1F à OC5F du registre TFLG1) et une interruption peut être FDB SPIRQ générée. Les interruptions associées aux sorties de comparaison sont masquables. Il faudra au début du programme autoriser les interruptions (CLI). III.6.1 – Interruption logicielle SWI : III.7 – Modes d’adressage : SWI est exécutée comme toute autre instruction. Elle est utilisée dans un programme Le 68HC11 possède six modes d’adressage qui lui confèrent une grande flexibilité et pour réaliser une interruption (afin de gérer ses points d’arrêt par exemple). d’importantes capacités logicielles. La description des différents modes a été présentée au Quand une interruption apparaît, le 68HC11 termine l’instruction en cours, tous les chapitre consacré au 6809 et est résumée ci-après (les éventuelles différences par rapport registres ainsi que le compteur ordinal sont sauvegardés dans la pile (voir figure III.5), et au 6809 sont citées dans le texte) : le bit I du registre d’état CCR est mis à « 1 », ce qui interdit toute nouvelle interruption. III.7.1 – Mode d’adressage inhérent : Seule XIRQ , qui est non masquable, sera traitée si elle intervient pendant une phase La donnée n’est pas nécessaire au microcontrôleur car l’instruction est implicite. d’interruption. Ensuite le vecteur correspondant à l’interruption de plus haute priorité est Exemple: recherché, et sa valeur chargée dans le compteur ordinal. Le sous-programme lié à TAB : Transfert du contenu du registre A vers le registre B. l’interruption va donc s’exécuter. Ce programme se termine par l’instruction RTI qui a pour effet de faire exécuter les opérations inverses, à savoir restitution des registres, III.7.2 – Mode d’adressage immédiat : remise à « 0 » du bit I du registre d’état (CCR) autorisant la prise en compte de nouvelles La donnée fait partie de l’instruction. Par exemple si on veut initialiser un registre interruptions et le chargement du compteur ordinal avec la valeur qu’il avait avant avec une valeur donnée, on utilisera ce mode d’adressage. Exemple: LDAA #$4F : Le registre A est chargé par la valeur hexadécimale : 4F. l’interruption, ce qui fait reprendre le programme à l’endroit où il avait été interrompu. Ce mode est spécifié à l’assembleur par l’utilisation du préfixe # avant la donnée. A la remise à zéro du système à base du 68HC11, les bits I et X du registre CCR sont à « 1 », ce qui masque les interruptions. Si on désire que l’interruption IRQ soit active, il III.7.3 – Mode d’adressage direct : faudra l’autoriser en passant le bit I à « 0 ». On utilisera l’instruction : CLI. Au contraire si La donnée est à une adresse codée sur 8 bits, c’est à dire comprise entre $00 et $FF on a besoin de les masquer au cours du programme on utilisera l’instruction : SEI. donc dans la zone RAM. Un seul octet est nécessaire pour spécifier l’adresse. Exemple: A chaque interruption il y aura neuf octets sauvegardés dans la RAM (voir figure STAA $0F : Le contenu du registre A est rangé à l’adresse $0F. III.5). Il ne faut pas oublier d’initialiser le pointeur de pile SP sur une adresse en RAM où Remarque : Le 68HC11 n’a pas de registre de page directe. L’espace adressable en mode le microcontrôleur pourra sauvegarder ses registres. direct s’étend de $0000 à $00FF. Exemple: SP pointe le bas de la zone des 256 octets de RAM interne: LDS #$00FF III.7.4 – Mode d’adressage étendu : Il faudra initialiser le vecteur d’interruption en écrivant à l’adresse de ce vecteur La donnée est à une adresse codée sur deux octets, c’est à dire n’importe où dans l’adresse du programme correspondant. l’espace adressable par le 68HC11 qui a 16 bits d’adresse. Exemple: A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 11/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 12/40 STAA $1000 : Le contenu du registre A est rangé à l’adresse $1000. EQU : Affecte une valeur permanente à une étiquette. Exemple: PORTB EQU $04 III.7.5 – Mode d’adressage indexé : La donnée est à une adresse spécifiée par le contenu d’un registre d’index: X ou Y ORG : Fixe l’origine des adresses pour l’assemblage. Exemple: auquel on ajoute une valeur d’offset contenue dans l’instruction. Exemple: ORG $B600 LDX #$1000 FCB : Réserve une adresse mémoire (un mot de 8 bits) et l’initialise à une valeur. LDAA 5,X : Le registre A est chargé par l’octet de l’adresse $1005. Exemple: Remarque : L’offset doit être compris dans la plage : $00 - $FF. L’offset est un nombre ORG $C000 non signé dans le cas du 68HC11 contrairement au microprocesseur 6809 qui utilise un FCB $7E : La valeur $7E sera écrite à l’adresse $C000 offset signé. FDB : Réserve deux adresses (un mot de 16 bits) et les initialise. Exemple: III.7.6 – Mode d’adressage relatif : ORG $B8CA Ce mode d’adressage n’est utilisé que lors des instructions de branchement. Si la FDB $7F00 : La valeur de $7F00 est écrite à l’adresse $B8CA. Comme $7F00 est codée sur 16 bits, le MSB (7F) sera situé à $B8CA et le LSB (00) à $B8CB condition de branchement est vraie, le mot de 8 bits qui suit l’instruction représente un déplacement binaire signé. Ce mot est ajouté au contenu du PC pour former l’adresse où FCC : Réserve plusieurs adresses et les initialise avec le code ASCII des caractères du doit se brancher le programme. Il faut noter que le déplacement codé sur 8 bits autorise texte. Exemple: un offset compris dans la gamme -128 à 127. Il n’existe pas de branchement long (16 ORG $C003 bits) dans le cas du 68HC11. Si le déplacement est trop important, on utilisera un saut en FCC "TEXTE" : Le code ASCII de T sera mis à l’adresse $C003, celui de E à $C004, deux temps. celui de X à $C005, celui de T à $C006 et celui de E à $C007. Remarque : Les modes d’adressage suivants n’existent pas pour le 68HC11 comparé Remarque : Certains assembleurs du 68HC11 n’acceptent pas la directive FCC pour les avec le 6809 : Indirect, Indexé auto-incrémenté, Indexé auto-décrémenté, Relatif au PC. chaînes de caractères mais plutôt FCB (exemple : FCB "TEXTE") III.8 – Programmation du 68HC11 : RMB : Réserve des adresses mémoire mais sans les initialiser à une valeur particulière. Exemple: III.8.1 – Syntaxe assembleur : ORG $B7E0 De la même façon que dans le cas du microprocesseur 6809, chaque ligne RMB $06 Les 6 cases mémoire à partir de l’adresse $B7E0 sont réservées. d’instruction du programme assembleur du 68HC11 comporte quatre parties appelées « champs ». Chaque champ est séparé par un espace. III.8.2 – Les instructions spéciales du 68HC11 : Étiquette Code opératoire Code opérande Commentaire Ces instructions ne marchent qu’avec un adressage direct ou indexé. BSET PORTD,X,#$40 : Mise à «1» du bit b6 de l’adresse X+PORTD III.8.2 – Directives de l’assembleur : BCLR MEM,X,#$08 : Mise à «0» du bit b3 de l’adresse X+MEM Tout comme le 6809, le 68HC11 possède un certain nombre de directives BRSET PORTB,X,#$01 ETIQ : Saut à ETIQ si le bit b0 de PORTB+X est à «1» d’assembleur. Les plus importantes sont résumées ci-dessous : BRCLR MEM,#$02 ETIQ : Saut à ETIQ si le bit b1 de MEM est à «0» A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 13/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 14/40 III.9 – Les ports d’entrée/sortie : de PA7 est programmé par le bit DDRA7 (bit 7) du registre de contrôle PACTL Le 68HC11 possède cinq ports de 8 bits chacun (il y en a 7 sur la version F1), qui dans la version de base et par le bit I4/O5 (bit 2) du registre PACTL dans la peuvent servir plus qu’un objectif, dépendamment de la configuration du mode de version F1. fonctionnement, défini par le registre de contrôle. Les broches des ports sont également Le registre PORTA permet l’écriture ou la lecture des bits PA0 à PA7. partagées avec d’autres fonctions périphériques. Remarque : Si certaines lignes de sortie sont configurées pour être utilisées par le TIMER, il est impossible de modifier leur état par une écriture dans le registre PORTA. III.9.1 – Le port A : Le résultat de cette écriture est cependant mémorisé dans un « Latch » et, lorsque les Le port A est un port parallèle à usage général partagé avec le TIMER et broches sont libérées par le TIMER, les données mémorisées sont transférées en sortie. l’accumulateur d’impulsions. Lorsque les broches du port A ne sont pas utilisées en Même si certaines lignes sont configurées pour être utilisées par le TIMER, leur état temporisation, elles peuvent être utilisées comme des E/S ordinaires à usage général. peut toujours être lu dans le registre PORTA. Dans tous les modes de fonctionnement du 68HC11. III.9.1.1 – Les registres associés au port A : Dans la version de base, le port A possède : i) Le registre PORTA : ▫ 3 entrées fixes : PA0, PA1, PA2; Ce registre de 8 bits est accessible en lecture/écriture. ▫ 4 sorties fixes : PA3 à PA6; ▫ 1 entrée/sortie configurable : PA7. RESET - 0 0 0 0 - - - PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PORTA $1000 Dans la version F1, tous les bits du port A peuvent être configurées en entrée ou en Remarque : La ligne en face du mot « RESET » indique l’état des bits du registre à la sortie. remise à zéro du microcontrôleur. Une lecture du contenu de ce registre retourne l’état réel des broches en entrée mais Le port A peut être configuré de la façon suivante : donne l’état précédemment écrit dans le registre pour les bits correspondants à des - bits 0, 1, 2 : Trois entrées de capture IC3, IC2, IC1. Chacune des entrées de broches de sortie. capture est utilisée pour verrouiller une valeur de temporisation du compteur libre Pour envoyer une donnée vers le port A, il suffit d’écrire : dans le registre de capture en entrée à 16 bits à lecture seule, lorsqu’une transition PORTA EQU $1000 active est enregistrée sur une broche externe; STAA PORTA : La donnée étant disponible dans l’accumulateur A. - bits 3, 4, 5, 6 : Quatre sorties de comparaison OC5, OC4, OC3, OC2. Chacune Pour recevoir une donnée qui arrive sur le port A, il suffit d’écrire : des sorties comparaison s’active lorsqu’une concordance est établie entre la valeur PORTA EQU $1000 du compteur libre et la valeur chargée dans le registre de comparaison. Les sorties LDAA PORTA : La donnée se trouve alors dans l’accumulateur A. peuvent être utilisées extérieurement pour indiquer qu’une période de temps s’est écoulée; ii) Le registre PACTL : Ce registre de 8 bits est accessible en lecture/écriture. Seul le bit DDRA7 nous - bit 7 : Entrée de l’accumulateur des impulsions ou cinquième sortie de intéresse dans ce paragraphe. comparaison OC1. Cette broche est bidirectionnelle. Le sens de fonctionnement A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 15/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 16/40 RESET - 0 0 0 0 - - - y Les adresses des ports du microcontrôleur peuvent être relocalisées dans les cartes de DDRA7 PAEN PAMOD PEDGE - - RTR1 RTR0 PACTL $1026 développement. Par exemple sur la carte CONTROLBOYF1, le port B est relocalisé à DDRA : Sens de fonctionnement de PA7 l’adresse $1060. 0 Entrée commune avec l’entrée PAI de l’accumulateur d’impulsions 1 Sortie commune avec la sortie OC1, sortie de comparaison y Le port B comme le port C supportent divers modes de fonctionnement en « dialogue » qui font intervenir les lignes STRA et STRB (du port D). Ces modes de fonctionnement Si on désire que PA7 soit configuré en sortie, il faut écrire : se programment grâce à divers bits du registre PIOC. PACTL EQU $1026 LDAA #%10000000 : On veut mettre DDRA7 en sortie (on masque les autres bits III.9.2.1 – Les registres associés au port B : pour ne changer que DDRA7) STAA PACTL : On envoie dans PACTL i) Le registre PORTB : Remarque : Sur la version 68HC11F1, tous les bits du port A peuvent être configurés Le port B est un port de sortie de 8 bits à usage général. Il ne dispose pas de registre comme entrées ou sorties. Le sens d’échange du port est déterminé par le registre DDRA DDR associé puisque son sens de fonctionnement est figé. situé à l’adresse $1001. RESET 0 0 0 0 0 0 0 0 RESET 0 0 0 0 0 0 0 0 DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1 DDRA0 DDRA $1001 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PORTB $1004 DDRA7 à DDRA0 : Sens Pour envoyer une donnée vers le port B, il suffit donc d’écrire : 0 Entrée 1 Sortie PORTB EQU $1004 STAA PORTB : La donnée étant disponible dans l’accumulateur A Exemple de configuration et d’utilisation du port A en entrées numériques (version Comme le port B est un port de sortie, la lecture du registre PORTB permet 68HC11F1): d’accéder à la dernière donnée qui a été écrite à ce port. PORTA EQU $1000 Remarque : En dialogue simple, une écriture dans le registre PORTB place les données DDRA EQU $1001 LDAA #$00 correspondantes en sortie sur le port et génère une impulsion d’une durée de 2 cycles STAA DDRA : Les bits PA7-PA0 sont configurés en entrées d’horloge E sur la ligne STRB. LDAA PORTA : Lecture des données numériques présentes sur le port A III.9.2 – Le port B : III.9.3 – Le port C : En mode Single-Chip, les broches de ce port sont des sorties à usage général. En mode Single-Chip, les broches de ce port sont des E/S ordinaires à usage général Cependant, en mode multiplexé les broches constituent l’octet de poids fort de l’adresse. ou de simples sorties validées par STRB (broche 7 du port D), les entrées peuvent être En fonctionnement en port d’usage général, le positionnement des lignes du port B verrouillées par STRA (broche 6 du port D). Il peut aussi être utilisé dans le mode se fait en écrivant dans le registre PORTB. Comme le port B est un port de sortie à usage dialogue E/S parallèle où l’entrée STRA et la sortie STRB opèrent en lignes de contrôle. général, son sens est donc figé et ne possède pas de registre de direction. En mode étendu multiplexé, les broches sont multiplexées adresses/données Remarques : (démultiplexées par le signal AS : bit PD6 du port D) qui représentent le poids faible de l’adresse durant la portion adresse du cycle, et des données bidirectionnelles contrôlées par le signal R/ W (bit PD7 du port D) durant la portion données du cycle. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 17/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 18/40 En mode de fonctionnement en port à usage général, le port C est un port STAF : Etat du détecteur de front de STRA bidirectionnel. Le sens de chaque ligne est programmé grâce aux bits correspondants au 0 RAZ : lecture de PIOC (avec STAF = 1) et accès à PORTCL (lecture ou écriture suivant mode de registre DDRC. La lecture ou l’écriture des données de ou vers le port C fait par contre fonctionnement) appel à deux registres : PORTC et PORTCL. 1 Transition active détectée sur STRA STAI : Masque d’interruption de STRA III.9.3.1 – Les registres associés au port C : 0 Demande inhibée suivant mode de fct) i) Le registre DDRC : 1 Interruptions (générées par passage à 1 de STAF) Ce registre de 8 bits de direction de données est accessibles en lecture/écriture. autorisées RESET 0 0 0 0 0 0 0 0 DDRC7 DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0 DDRC $1007 CWOM : Configuration matérielle du port C 0 Sortie CMOS DDRC7 à DDRC0 : Sens 1 Sorties à drain ouvert nécessitant une résistance pull-up 0 Entrée 1 Sortie HDNS et OIN : Mode de fonctionnement HDNS OIN Si on veut par exemple que les broches PC0 à PC5 soient en sortie et les broches 0 x Dialogue simple 1 0 Dialogue complet en entrée PC6 et PC7 en entrée, il faut écrire : 1 1 Dialogue complet en sortie DDRC EQU $1007 PLS : Fonctionnement de STRB LDAA #%00111111 0 Mode verrouillé STAA DDRC 1 Mode impulsionnel ii) Les registres PORTC et PORTCL (version de base uniquement): EGA : Choix du front actif de STRA Ces deux registres de 8 bits sont accessibles en lecture/écriture. 0 Front descendant 1 Front montant RESET - - - - - - - - PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PORTC $1003 INVB : Niveau actif de STRB 0 Niveau bas PORTCL (version de base uniquement) RESET - - - - - - - - 1 Niveau haut PCL7 PCL6 PCL5 PCL4 PCL3 PCL2 PCL1 PCL0 PORTCL $1005 iv) Modes de fonctionnement : Remarque : On utilise le registre PORTCL pour accéder aux données verrouillées par un « Latch » connecté au port C. a) Dialogue simple : Une écriture dans le registre PORTC place les données correspondantes en sortie sur iii) Le registre PIOC : le port et génère une impulsion d’une durée de 2 cycles d’horloge E sur la ligne STRB. Ce registre de 8 bits, accessible en lecture/écriture, sert à sélectionner le mode de En entrée : la lecture du registre PORTC est le reflet de l’état courant des lignes de dialogue utilisé mais aussi les états des divers signaux ou transitions. port. La lecture de PORTCL, par contre, est le reflet de l’état de ces lignes au moment de RESET 0 0 0 0 0 - 1 1 STAF STAI CWOM HDNS OIN PLS EGA INVB PIOC $1002 la transition valide de la ligne STRA. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 19/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 20/40 En sortie : le fait d’écrire dans PORTC ou dans PORTCL produit les mêmes effets III.9.4 – Le port D : au niveau des broches configurées en sortie. Peut être utilisé comme E/S à usage général (à 6 bits) ou travailler avec le SCI et le Par contre l’écriture dans l’un de ces registres est évidemment sans aucun effet sur les SPI. En mode étendu-multiplexé, les bits 6 et 7 sont utilisés comme signaux de contrôle broches configurées en entrée. des ports B et C (AS et R/ W ), les autres bits sont configurés comme suit (bit0 et bit1 Ces données sont cependant mémorisées localement et sont présentées en sortie si pour la transmission série): les broches correspondantes changent de sens de fonctionnement. - bit 0 : Entrée réception RXD du SCI; - bit 1 : Sortie transmission TXD du SCI. b) Dialogue complet en entrée : Les bits 2 à 5 sont réservés au SPI (pour l’interconnexion de plusieurs microcontrôleurs Lorsqu’une condition « prêt » est reconnue, le système externe place les données sur ou l’interconnexion de périphériques): les lignes du port C, puis délivre un front actif sur la ligne STRA. Ce front verrouille les données du port C dans le registre PORTCL et positionne - bit 2 : Ligne MISO (Master In-Slave Out)= Entrée quand le SPI est configuré l’indicateur STAF (provoquant éventuellement une interruption). maître et sortie lorsqu’il est configuré esclave; En mode « verrouillé » (PLS = 0), la ligne STRB est mise à son état actif pour inhiber - bit 3 : Ligne MOSI (Master Out-Slave In)= Entrée quand le SPI est configuré le système externe en ce qui concerne la validation de nouvelles données sur le port C. esclave et sortie lorsqu’il est configuré maître; La lecture du registre PORTCL efface l’indicateur STAF et repositionne STRB à - bit 4 : Horloge série = Sortie quand le SPI est configuré maître et entrée lorsqu’il l’état « prêt » pour permettre un nouveau cycle. est configuré esclave; En mode « impulsionnel » (PLS = 1), la lecture du registre PORTCL efface - bit 5 : Sélection d’esclave (SS) sert à valider un esclave pour accepter les données l’indicateur STAF et génère une impulsion d’une durée de 2 cycles sur la ligne STRB pour du SPI. indiquer que le microcontrôleur est « prêt » pour un nouveau cycle. Quand le port D n’utilise pas les interfaces SCI et SPI, le sens de fonctionnement des 6 lignes du port est programmé par les bits correspondants du registre DDRD. c) Dialogue complet en sortie : La sortie de données se fait par écriture de registre PORTD et c’est dans ce même L’écriture d’une donnée dans le registre PORTCL positionne les lignes de sortie du registre que l’on vient lire l’état des broches qui sont positionnées en entrées. port C, active la ligne STRB pour indiquer au système externe que les informations sont Il est possible de programmer le port D pour fonctionner avec des sorties a drain valides et remet éventuellement à zéro le bit STAF. ouvert en mettant à « 1 » le bit DWOM du registre du contrôle SPCR de l’interface série En mode impulsionnel (PLS = 0), la ligne STRB reste positionnée seulement synchrone (SPI). pendant 2 cycles d’horloge. En mode verrouillé (PLS = 1), la ligne STRB restera jusqu’à Avec ce type de sortie, il est nécessaire de câbler des résistances de pull up. l’apparition d’un front valide sur STRA. Si l’une ou l’autre des interfaces séries est utilisée, le sens des lignes du port D est fixé Le système externe, après avoir traité la donnée, active la ligne STRA pour indiquer en priorité par ces fonctions quelque soit l’état du bit correspondant du registre DDRD. qu’un nouveau cycle peut débuter. Dès que la fonction est sélectionnée, le bit de DDRD redevient significatif Le front actif reconnu par le microcontrôleur sur la ligne STRA positionne le bit automatiquement. STAF à « 1 » et génère éventuellement une interruption. Toutefois, dans certaines situations, le fonctionnement des lignes de la SPI est Une écriture dans PORTCL initialise un nouveau cycle. influencé par les bits correspondants du DDRD. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 21/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 22/40 III.9.4.1 – Les registres associés au port D : faut toujours garder VRefH – VRefL > 2,5 Volts. La conversion est réalisée avec une i) Le registre DDRD : précision de 1 LSB (±1/2 LSB comme erreur de quantification et autant comme erreur de linéarité). Les nouveaux microcontrôleurs produits n’ont plus d’erreur de linéarité. Ce registre de 6 bits de direction de données est accessible en lecture/écriture. La conversion s’effectue de la façon suivante : Une tension d’entrée égale VRefL est RESET 0 0 0 0 0 0 0 0 0 0 DDRD5 DDRD4 DDRD3 DDRD2 DDRD1 DDRD0 DDRD $1009 convertie en $00 et une tension d’entrée égale ou supérieure à VRefH est convertie en $FF. Un bit de contrôle interne permet de sélectionner une horloge interne qui servira à DDRD5 à DDRD0 : Sens faire des conversions plus précises lorsque la vitesse de l’horloge E devient plus basse 0 Entrée 1 Sortie que celle garantissant la bonne précision. Lors d’une demande de conversion, une ii) Le registre PORTD : séquence de 4 conversions est lancée. Ce registre de 6 bits de données du port est accessible en lecture/écriture. Le convertisseur utilise le principe des approximations successives : La tension est RESET 0 0 0 0 0 0 0 0 − VRefL V 0 0 PD5 PD4 PD3 PD2 PD1 PD0 PORTD $1008 comparée à : Vi = RefH . 2 III.9.5 – Le port E : Si la tension à convertir est supérieure à cette valeur, le bit 7 du registre de Utilisé comme port d’entrée numérique d’usage général et/ou comme canaux comparaison est mis à 1, dans le cas contraire, il est mis à 0 ainsi que la tension Vi. Cette d’entrée analogiques du convertisseur A/N. Le port E ne peut être lu comme entrée nouvelle valeur est comparée à la tension à mesurer et le bit 6 est positionné en fonction lorsqu’une conversion A/N est en cours d’exécution. L’information présente sur le port de ce résultat. est transmise seulement pendant la lecture du port. RESET 0 0 0 0 0 0 0 0 Finalement, la tension à mesurer est comparée à Vi avec cette équation : PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0 PORTE $100A b b b b b b b b Vi = (VRefH − VRefL ) 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 Remarques : 2 4 8 16 32 64 128 256 - Lors du fonctionnement en entrées numériques, comme le port E est un port d’entrée à bn= 0 ou 1 suivant le résultat des comparaisons internes. usage général, son sens est donc figé et ne possède pas de registre de direction. Chaque opération est effectuée en 32 cycles d’horloge E (si E > 750 kHz). Le - La version 68HC11F1 possède deux ports supplémentaires : Le port F qui est un port convertisseur possède 4 registres de résultat séparés qui permettent de mémoriser les de sortie et le port G qui est un port d’entrée/sortie. résultats de la séquence de 4 conversions. III.10 – Convertisseur A/N : Cette séquence débute un cycle d’horloge interne après une écriture dans le registre Il s’agit d’un convertisseur à seize canaux d’entrée analogiques multiplexés, de 8 bits ADCTL. de précision, à approximation successive, possédant un échantillonneur bloqueur en III.10.1 – Les entrées de conversion : entrée pour minimiser les erreurs de conversion causées par une variation trop rapide du Un multiplexeur permet de sélectionner une entrée analogique parmi 16 voies signal d’entrée. Les 8 entrées sont communes avec le port E. analogiques : 8 de ces voies correspondent aux broches d’entrée du port E, 4 autres à des Le 68HC11 possède deux broches dédiées VRefL et VRefH utilisées comme référence références internes, le reste étant réservé pour un usage futur. Le choix de la voie de tension au lieu des lignes d’alimentation; pour augmenter la précision de la conversion s’effectue grâce au registre ADCTL. A/N vis-à-vis de la variation de température et de celles de la tension d’alimentation. Il A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 23/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 24/40 III.10.2 – Les registres du convertisseur : On peut donc convertir une seule entrée analogique avec MULT = 0. Nous aurons i) Le registre ADCTL : alors deux cas : RESET 0 0 - - - - - - CCF 0 SCAN MULT CD CC CB CA ADCTL $1030 y SCAN = 0 : La voie est convertie 4 fois et les résultats se retrouvent dans ADR1 à CCF : Indicateur de conversion terminée (à lecture seule) ADR4 puis la conversion est stoppée. On peut relancer une conversion par 1 Lorsqu’une séquence de conversion est terminée et que les 4 registres de résultats contiennent les résultats de la conversion écriture dans ADCTL. 0 Par écriture dans le registre ADCTL, ce qui à pour effet de relancer y SCAN = 1 : La conversion est effectuée sans arrêt sur le canal choisi. Le résultat une nouvelle séquence de conversion de la 5ème conversion est stocké dans ADR1 écrasant la première conversion et la SCAN : Commande de balayage continu 6ème dans ADR2 écrasant la première conversion et ainsi de suite. 1 Conversion continue, les registres résultats sont en permanence mis à jour à chaque fois que de nouvelles données deviennent disponibles On peut aussi convertir plusieurs entrées avec MULT = 1 avec toujours 2 0 La séquence (4 conversions) s’arrête lorsque les 4 registres résultats possibilités: sont pleins y SCAN = 0 : Une conversion est effectuée successivement sur chaque voie, les MULT : Commande 1 voie / plusieurs voies 1 La conversion s’effectue sur 4 voies successivement. Ces voies sont résultats sont placés respectivement dans ADR1, ADR2, ADR3 et ADR4 puis la spécifiées par les bits CD et CC conversion s’arrête. 0 La conversion est effectuée 4 fois sur la voie choisie grâce à CD à CA y SCAN = 1 : La conversion est effectuée sans arrêt selon le principe vu Lorsque MULT=1, CB et CA n’ont aucune influence et le groupe des 4 canaux précédemment. sélectionnés se fait grâce à la combinaison des bits CD et CC. CD, CC, CB, CA : Sélection de voie ii) Le registre OPTION : Canal Résultat Deux bits du registre OPTION sont utilisés pour contrôler le convertisseur CD CC CB CA analogique numérique (ADPU : Analog to Digital converter Power Up, et CSE : Clock 0 0 0 0 AN0 (PE0) ADR1 Select). Groupe 1
0 1 0 1 AN5 (PE5) * ADR2 ADPU : Mise en marche/arrêt du convertisseur A/N
0 1 1 0 AN6 (PE6) * ADR3 0 Le convertisseur A/N est arrêté 0 1 1 1 AN7 (PE7) * ADR4 1 Le convertisseur A/N est autorisé (mis en marche) 1 0 0 0 Réservé ADR1 Groupe 3
1 0 0 1 Réservé ADR2 CSE : Choix de l’horloge du convertisseur A/N
1 0 1 0 Réservé ADR3 0 Le convertisseur A/N utilise l’horloge interne E 1 0 1 1 Réservé ADR4 1 Sélectionne l’horloge locale à cellule RC 1 1 0 0 Vrh ** ADR1 Groupe 4 1 1 0 1 Vrl ** ADR2 iii) Exemple d’utilisation : 1 1 1 0 Vrh/2 ** ADR3 On relie sur les broches PE0 et PE1 deux photodiodes. On veut convertir la tension 1 1 1 1 Réservé ADR4 fournie qui est le reflet de la luminosité reçue par les photodiodes et sauvegarder ces * Non disponibles dans les boîtiers à 40 broches ; ** Ces lignes sont destinées aux tests de fabrication. valeurs en mémoire. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 25/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 26/40 CONV LDX #OPTION Les fonctions du TIMER en usage général sont accomplies par : BSET 0,X,%10000000 : Validation du convertisseur A/N y Le diviseur de fréquence; LDX #ADCTL BSET 0,X,%00010000 : Début de conversion y Le compteur libre; Bcl LDX #ADCTL y Les registres IC (trois registres de 16 bits : TIC1, TIC2 et TIC3); BRCLR 0,X,%10000000,Bcl y Les registres OC (cinq registres de 16 bits : TOC1 à TOC5); LDAA ADR1 STAA $0000 y Les registres globaux de contrôle et d’état du TIMER. LDAA ADR2 STAA $0001 III.11.1 – Les entrées de capture : RTS Les entrées de capture IC3, IC2, IC1 (PA0, PA1, PA2 du port A) sont des broches III.11 – Temporisateur programmable (TIMER) : utilisées pour déclencher des captures de temps. Ces captures sont déclenchées par le Le TIMER est formé par un compteur libre de 16 bits qui s’incrémente en front du signal arrivant sur ces broches (le front est sélectionné par programme). La permanence (Free running) dès la remise à zéro du microcontrôleur. Ce compteur est mesure du temps est réalisée par la lecture des registres correspondants. En enregistrant attaqué par un circuit diviseur de fréquence programmable (division par 1, 4, 8 ou 16), les temps successifs entre plusieurs fronts, il est possible de mesurer la période ou la lui-même piloté par l’horloge E du 68HC11. On peut donc programmer des fréquences largeur d’un signal. Le TIMER dispose de trois registres de capture (TIC1, TIC2 et TIC3) d’entrée par division de la fréquence d’horloge E. qui sont prévus pour mémoriser l’instant d’arrivée de front actif sur les trois entrées Le système de temporisation peut être divisé en quatre blocs fonctionnels distincts: correspondantes (IC1, IC2 et IC3), un bit d’état est positionné (IC1F, IC2F et IC3F) et y Le TIMER en usage général ; une interruption peut être générée. Ces trois entrées vont permettre la mesure de y Le Watchdog ou chien de garde (appelé aussi COP : Computer Operating longueur d’impulsions, de fréquence ou d’écart entre événements différents. Properly); On peut choisir la polarité du front qui déclenche la capture et valider ou non les y Le générateur d’interruption temps réel ; demandes d’interruption. Si les interruptions sont inhibées, il est nécessaire de lire y L’accumulateur d’impulsions. périodiquement les indicateurs de capture. Ces quatre blocs utilisent une source d’horloge et une chaîne de diviseurs en partie Trois registres correspondent à ces trois entrées de capture : TIC1, TIC2 et TIC3. Ce communs mais qui sont indépendants les uns des autres. sont des registres 16 bits. BIT15 BIT8 $1010 Les fonctions disponibles avec le TIMER en usage général sont : BIT7 BIT0 $1011 TIC1 y Trois fonctions de capture en entrée (IC) : Ces dernières enregistrent le comptage BIT15 BIT8 $1012 TIC2 du compteur libre lorsqu’une transition active est enregistrée sur une broche BIT7 BIT0 $1013 correspondante; BIT15 BIT8 $1014 TIC3 y Cinq fonctions de comparaison en sortie (OC) : Ces sorties provoquent une action BIT7 BIT0 $1015 quand il y a égalité entre les 16 bits du registre de sortie comparaison et le compteur L’information lue avec ces registres est l’information correspondante au front qui libre. s’est produit immédiatement avant la lecture et pas forcement celle qui a déclenché Le rôle de ces fonctions a été décrit dans le paragraphe réservé au port A. l’indicateur de capture. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 27/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 28/40 Les entrées de capture étant indépendantes, il est possible de saisir simultanément LDAA #%00000001 STAA TCTL2 trois fronts de déclenchement et d’effectuer des mesures simultanées de délais sur trois STAA TFLG1 signaux différents. BCL LDX #TFLG1 BRCLR 0,X,%00000001,BCL III.11.1.1 – Les registres TMSK1 et TFLG1 : LDD TIC3 Les indicateurs de capture ICxF sont automatiquement mis à 1 à chaque fois que le STD $0000 LDAA #%00000001 front sélectionné est détecté sur l’entrée de capture correspondante. STAA TFLG1 RESET 0 0 0 0 0 0 0 0 BCL1 LDX TFLG1 OC1F OC2F OC3F OC4F OC5F IC1F IC2F IC3F TFLG1 $1023 BRCLR 0,X,%00000001,BCL1 LDD TIC3 IC1F, IC2F et IC3F : Indicateurs de capture SUBD $0000 IC1F IC2F IC3F 0 0 0 Remise à zéro en écrivant 1 sur le bit correspondant ii) Mesure de la largeur d’impulsions arrivant sur IC3 (PA0) : 1 1 1 A chaque front sélectionné détecté sur l’entrée correspondante On désire mesurer la largeur d’impulsion (temps de niveau haut d’un signal) entre un Les bits de contrôle ICxI permettent à l’utilisateur de configurer chaque entrée en front montant et un front descendant en examinant l’état de IC3F (entrée sur PA0). mode d’interruption ou en mode de lecture périodique. LDAA #%00000001 STAA TCTL2 RESET 0 0 0 0 0 0 0 0 STAA TFLG1 OC1I OC2I OC3I OC4I OC5I IC1I IC2I IC3I TMSK1 $1022 BCL LDX #TFLG1 BRCLR 0,X,%00000001,BCL IC1I, IC2I et IC3I : Choix du mode LDD TIC3 IC1I IC2I IC3I STD $0000 0 0 0 Interruption inhibée ou masquée (Mode périodique) LDAA #%00000010 1 1 1 Interruption activée ou autorisée (Mode interruption) STAA TCTL2 III.11.1.2 – Le registre TCTL2 : LDAA #%00000001 STAA TFLG1 L’utilisateur peut choisir pour chaque entrée de capture le sens du front de BCL1 LDX #TFLG1 déclenchement. BRCLR 0,X,%00000001,BCL1 RESET 0 0 0 0 0 0 0 0 LDD TIC3 0 0 EDG1B EDG1A EDG2B EDG2A EDG3B EDG3A TCTL2 $1021 SUBD $0000 III.11.2 – Les sorties comparaison : EDGxB, EDGxA : Configuration EDGxB EDGxA Les sorties comparaison OC2 à OC5 (PA6 à PA3 du port A) et éventuellement OC1 0 0 Capture inhibée 0 1 Capture sur fronts montants (PA7 du port A) sont des broches utilisées comme sorties de comparaison par les 1 0 Capture sur fronts descendants comparateurs du TIMER. Lorsque le comptage du compteur libre atteint la valeur à 1 1 Capture sur chaque front comparer, ces sorties sont activées. Il existe un registre et un comparateur associés à III.11.1.3 – Exemples : chacune des sorties comparaison. Quand il y’a identité entre le contenu du registre du i) Mesure d’une période arrivant sur IC3 (PA0): comparateur et celle du compteur, la sortie est activée. A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 29/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 30/40 La fonction comparaison en sortie fait appel à 5 registres de comparaison en sortie Ces registres 16 bits peuvent être lus ou écrits. On utilisera l’instruction LDD (ou (TOC1 à TOC5). On peut les programmer à tout instant et ils sont comparés en LDX ou LDY) pour les lire. Après un RESET, les registres TOCx sont forcés à $FFFF. permanence avec le contenu du compteur 16 bits. Quand il y a égalité, un bit d’état est III.11.2.1 – Le registre TMSK1 : positionné (OC1F à OC5F), une interruption peut être générée et la patte de sortie RESET 0 0 0 0 0 0 0 0 OC1I OC2I OC3I OC4I OC5I IC1I IC2I IC3I TMSK1 $1022 correspondante (OC1 à OC5) peut changer d’état comme on le désire. On peut utiliser les sorties comparaison pour générer par exemple des impulsions de Validation des interruptions OC1I OC2I OC3I OC4I OC5I durée bien déterminée. La sortie est configurée pour changer d’état à chaque égalité entre 0 0 0 0 0 Les interruptions sont inhibées ou masquées le compteur et le registre de comparaison associé. A chaque égalité, une valeur 1 1 1 1 1 Les interruptions sont validées ou autorisées correspondant à la largeur d’impulsion suivante est ajoutée au contenu du comparateur. III.11.2.2 – Le registre TFLG1 : Application : génération de signaux modulés en largeur d’impulsion (MLI) pour RESET 0 0 0 0 0 0 0 0 OC1F OC2F OC3F OC4F OC5F IC1F IC2F IC3F TFLG1 $1023 commander des moteurs électriques, génération d’impulsions programmables. Les registres de comparaison peuvent contenir une valeur différente (entrée par le Indicateur de comparaison OC1F OC2F OC3F OC4F OC5F programmeur). Un drapeau « OCxF » du registre TFLG1 est positionné quand la valeur Remise à zéro en écrivant un « 1 » sur le bit 0 0 0 0 0 du ou des registres est égale à celle du compteur et on peut ou non associer une correspondant Il y a identité entre le compteur libre et le interruption à chacun des indicateurs. 1 1 1 1 1 registre de comparaison correspondant Pour OC2 à OC5 on peut choisir quatre actions au moment de la comparaison (état III.11.2.3 – Le registre TCTL1 : haut, état bas, aucune action, changement d’état à chaque comparaison) en programmant On peut programmer indépendamment l’action qui apparaît sur chacune des sorties les bits OMx et OLx du registre TCTL1. PA6 à PA3 (OC2 à OC5). OC1 est particulier : il peut commander directement les 5 sorties de comparaison. RESET 0 0 0 0 0 0 0 0 OM2 OL2 OM3 OL3 OM4 OL4 OM5 OL5 TCTL1 $1020 Les registres de contrôle et de données associées à cette fonction sont OC1M et OC1D. Il est possible de commander les actions sur une sortie à partir du comparateur OC1 Action et du comparateur associé à cette sortie. OMx OLx 0 0 Aucune action BIT15 BIT8 $1016 0 1 La sortie change d’état à chaque comparaison TOC1 BIT7 BIT0 $1017 1 0 La sortie passe à 0 à chaque comparaison 1 1 La sortie passe à 1 à chaque comparaison BIT15 BIT8 $1018 TOC2 BIT7 BIT0 $1019 III.11.2.4 – Exemple1 : BIT15 BIT8 $101A Générateur de signaux carrés à fréquence fixe sur la sortie PA3 (utilisant OC5) : TOC3 BIT7 BIT0 $101B TCTL1 EQU $1020 BIT15 BIT8 $101C TOC4 LDAA #%00000001 BIT7 BIT0 $101D STAA TCTL1 : (OM5 = 0 et OL5 = 1, la sortie OC5 changera d’état à chaque comparaison) BIT15 BIT8 $101E BRA * TOC5 BIT7 BIT0 $101F END A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 31/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 32/40 La sortie PA3 est programmée pour changer d’état à chaque comparaison. Le registre Sélection des sorties de comparaison est à $FFFF après la remise à zéro. Donc on aura un changement d’état OC1Dx 0 Sortie à 0 à chaque comparaison donc toutes les 32,77 ms pour un quartz à 8 MHz (prédiviseur 1 Sortie à 1 égal à 1). L’état pris par la sortie au moment de la comparaison avec OC1 est indiqué par III.11.2.5 – Exemple2 : OC1Dx. Générateur de signaux carrés à la fréquence de 1 kHz sur la sortie PA6 (OC2). III.11.2.7 – Exemple : Quartz de 8 MHz : On désire réaliser une horloge multiphases sur les sorties PA3 à PA7. TOC2 EQU $1018 LDAA #$80 TCTL1 EQU $1020 STAA PACTL TFLG1 EQU $1023 COMP LDY #DEBTAB LDAA #$40 LDX #TFLG1 STAA TCTL1 : (OM2 = 0 et OL2 = 1, la sortie OC2 changera d’état à chaque comparaison) LDAA #$F8 DEBUT LDAA #$40 STAA OC1M STAA TFLG1 RAZ LDAA #$80 WAIT LDX #TFLG1 STAA TFLG1 ; on remet à zéro le bit OC1F BRCLR 0,X $40 WAIT LDAA 0,Y LDD TOC2 INY ADDD #1000 CPY #FINTAB STD TOC2 BNE SUITE BRA DEBUT LDY #DEBTAB III.11.2.5 – Le registre OC1M : SUITE STAA OC1D LDD TOC1 Le comparateur OC1 occupe une place à part. Il permet de contrôler une ou ADDD #20000 plusieurs autres sorties de comparaison. STD TOC1 Les sorties affectées par la fonction de comparaison OC1 sont repérées en mettant à BASCUL BRCLR 0,X,$80,BASCUL BRA RAZ 1 les bits OC1Mx correspondant du registre OC1M. DEBTAB FCB 00,$08,00,$10,00,$20,00,$40,00,$80 RESET 0 0 0 0 0 0 0 0 FINTAB EQU * OC1M7 OC1M6 OC1M5 OC1M4 OC1M3 0 0 0 OC1M $100C OC2/PA6 OC3/PA5 OC4/PA4 OC5/PA3 END Sélection des sorties III.11.2.8 – Le registre CFORC : OC1Mx 0 Sortie non sélectionnée Il est possible de forcer, par programme, l’état d’une sortie sans avoir besoin 1 Sortie sélectionnée d’attendre le résultat d’une comparaison. III.11.2.6 – Le registre OC1D : RESET 0 0 0 0 0 0 0 0 FOC1 FOC2 FOC3 FOC4 FOC5 0 0 0 CFORC $100B RESET 0 0 0 0 0 0 0 0 OC1D7 OC1D6 OC1D5 OC1D4 OC1D3 0 0 0 OC1D $100D A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 33/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 34/40 Forçage des sorties III.11.4 – le prédiviseur et le compteur : FOCx La base du TIMER est un compteur 16 bits qui compte en permanence de $0000 à 0 Sortie normale 1 Sortie forcée $FFFF sans aucun moyen de l’arrêter et qui positionne à « 1 » un bit de dépassement lors du passage de $FFFF à $0000. Par contre, on peut venir lire en permanence la valeur du III.11.3 – La fonction « Chien de garde » (Watchdog): compteur grâce au registre TCNT. Ce dispositif permet de protéger le système contre les défaillances logicielles. Quand Le prédiviseur permet de définir le signal d’horloge qui pilote ce compteur (en fait, on utilise le watchdog, si une boucle infinie se présente dans le programme, et que le on divise la fréquence de E). watchdog n’est pas relancé alors une séquence de réinitialisation interne est lancée. Le Watchdog fonctionne ou non suivant l’état du bit NOCOP du registre CONFIG. III.11.4.1 – Le registre TCNT : Sa période est positionnée à son temps le plus court. On peut changer sa période en BIT15 BIT8 $100E TCNT BIT7 BIT0 $100F programmant les bits CR0 et CR1 du registre OPTION. C’est un registre 16 bits, pour le lire on ne peut pas utiliser les accumulateurs A et B, III.11.3.1 – Le registre OPTION : mais on peut utiliser les registres 16 bits du 68HC11 (X, Y ou D). RESET 0 0 0 1 0 0 0 0 ADPU CSE IRQE DLY CME - CR1 CR0 OPTION $1039 LDX TCNT LDY TCNT CR1 CR0 E/215 Divisé par CR1 et CR0 : Période du Watchdog 0 0 1 16,384ms LDD TCNT 0 1 4 65,536ms 1 0 16 262,14ms III.11.4.2 – Le registre TMSK2 : 1 1 128 1,049s Le prédiviseur est programmable grâce aux bits PR0 et PR1. Le tableau suivant est III.11.3.2 – Le registre CONFIG : dressé pour une fréquence de quartz de 8 MHz. RESET 0 0 0 0 0 1 1 1 Ce registre est partagé avec certaines parties du TIMER : 0 0 0 0 NOSEC NOCOP ROMON EEON CONFIG $103F • Seul PR0 et PR1 nous serons utiles pour la programmation du prédiviseur ; EEON : Validation de l’EEPROM • La validation des interruptions se fait avec PAII, TOI, RTII et PAOVI. 0 Les 512 octets d’EEPROM sont inhibés RESET 0 0 0 0 0 0 0 0 1 Les 512 octets d’EEPROM sont validés de $B600 à $B7FF TOI RTII PAOVI PAII 0 0 PR1 PR0 TMSK2 $1024 ROMON : Validation de la ROM interne TOI : Validation des demandes d’interruption par l’indicateur de débordement 0 Les 8 koctets sont inhibés 0 Interruptions inhibées mais le bit TOF continue de fonctionner normalement 1 Les 8 koctets sont validés 1 Interruptions autorisées (par passage à 1 de TOF lorsqu’il est mis à 1) NOCOP : Arrêt du Watchdog 0 Il est arrêté et ne produit pas de reset RTII : Interruption temps réel 1 Il est validé dès la fin de la remise à zéro (reset) 0 Interruption inhibée mais la RTI continue de fonctionner et de positionner le bit RTIF 1 Interruptions autorisées NOSEC : Verrouillage de l’EEPROM PAOVI : Validation d’interruption lors de dépassement 0 Cette possibilité n’est offerte que si la ROM à été programmée 0 Interruption inhibée 1 en usine pour cet usage 1 Les interruptions sont autorisées et effectives a chaque passage à 0 du compteur A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 35/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 36/40 PAII : Bit de validation des interruptions sur PAI TOF : Indicateur de débordement 0 Interruptions inhibées 0 Remise à zéro par écriture de 1 sur ce bit 1 Interruptions autorisées et effectives à chaque front actif sur l’entrée 1 Il passe à 1 à chaque débordement du compteur PR1 et PR0 : Rapport de pré division PR1 PR0 E Divisé par Période/temps maximal III.11.4.5 – Le registre PACTL : 0 0 1 500ns/32 ,77ms Dans ce registre, seul les bits RTR0 et RTR1 sont utilisés pour les interruptions en 0 1 4 2µs/131,1ms temps réel. Ces deux bits déterminent le rapport de sélection de la fonction RTI. 1 0 8 4µs/262,1ms 1 1 16 8µs/524,3ms Les autres bits sont utilisés pour la programmation du compteur d’impulsions. RESET 0 0 0 0 0 0 0 0 III.11.4.3 – Interruption temps réel : DDR7 PAEN PAMOD PEDGE 0 0 RTR1 RTR0 PACTL $1026 La fonction interruption temps réel peut être utilisée pour produire des interruptions RTR1 RTR0 E Divisé par RTR1 et RTR0 : Rythme de l’horloge temps réel à intervalle de temps régulier. Elle permet de savoir le temps exact d’exécution d’un ou 0 0 1 4,10 ms 0 1 2 8,19 ms d’une partie de programme. Pour cela, on valide l’interruption à un point particulier du 1 0 4 16,38 ms programme et on l’arrête en un autre point. L’interruption temps réel peut aussi être 1 1 8 32,77 ms utilisée pour produire des interruptions à intervalle régulier servant de base de temps, PEDGE : Choix du front de comptage et du niveau de commande permettant de synchroniser le fonctionnement d’un système à base du 68HC11. On peut 0 PAI réagit sur front descendant ou ouvre la porte de comptage avec un niveau bas 1 PAI réagit sur front montant ou ouvre la porte de comptage sur un niveau haut choisir entre 4 rapports de division (registre PACTL). PAMOD : Choix du mode Il ne faut pas oublier, si on utilise la fonction RTI de remettre l’indicateur RTIF à 0 0 L’accumulateur fonctionne en mode comptage sur PAI sinon, dès la fin de l’exécution du programme d’interruption, il y a retour dans ce même 1 L’accumulateur fonctionne en mode comptage de l’horloge E/64 sous contrôle du niveau appliqué sur PAI programme. Quatre bits de différents registres seront utilisés pour réaliser ce but : PAEN : Bit de commande de comptage • RTII de TMSK2; 0 Le comptage est inhibé • RTIF de TFLG2 ; 1 Le comptage est autorisé • RTR0 et RTR1 de PACTL. DDR7 : Bit de direction associé à PA7 0 Entrée III.11.4.4 – Le registre TFLG2 : 1 Sortie RESET 0 0 0 0 0 0 0 0 TOF RTIF PAOVF PAIF 0 0 0 0 TFLG2 $1025 III.11.5 – L’accumulateur d’impulsions : PAIF : Indicateur d’interruption sur PAI C’est un compteur de 8 bits, associé à la broche PA7 / PAI (Port A) et qui peut 0 Remise à zéro par écriture de 1 sur ce bit travailler dans deux modes : Mode compteur d’événements et mode commandé. Le 1 A 1 lors de la détection d’une transition valide sur PAI registre de contrôle de cet accumulateur (PACTL) le configure pour un mode ou l’autre, PAOVF : Indicateur de dépassement 0 Remise à zéro par écriture de 1 sur ce bit par programmation du bit PAMOD. 1 A 1 lors du débordement du compteur de $FF à $00 En mode compteur d’événements : cet accumulateur s’incrémente à chaque front RTIF : Indicateur d’interruption temps réel actif du signal PAI : 0 Remise à zéro par écriture de 1 sur ce bit 1 A 1 lorsqu’une interruption temps réelle a lieu A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 37/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 38/40 y Un bit de stop; PA7 / PAI Compteur 8 bits y Un break est défini comme la transmission de plusieurs données nulles. En mode commandé : PA7 / PAI sert à bloquer un signal d’horloge appliqué au III.12.3 – Interruptions du SCI: compteur. Le SCI possède plusieurs drapeaux d’état qui produisent une interruption matérielle Horloge interne (÷ 64) s’ils sont activés. Ces indicateurs correspondent à : y Registre de transmission de données vide TDRE; Compteur 8 bits PA7 / PAI y Fin de transmission; y Ligne de repos détectée (fin de message, début de message, resynchronisation avec Ces deux modes sont sélectionnés par programme. Le comptage est déterminé par le transmetteur); lecture du registre correspondant (PACNT). Ce compteur peut générer une interruption. y Registre de réception de données plein RDRF. III.12 – L’interface de communication série : III.13 – L’interface de périphérique série SPI : Il est pourvu d’un format standard NRZ, avec une vitesse de transmission variable. Permet d’interconnecter plusieurs microcontrôleurs entre eux, ou d’interconnecter le L’interface avec les circuits périphériques est accomplie grâce aux broches du port D : la 68HC11 avec des circuits périphériques. broche 0 pour la réception (RXD) et la broche 1 pour la transmission (TXD). Cette interface confère au microcontrôleur les caractéristiques suivantes : III.12.1 – Génération de vitesse de transmission : y Transfert bidirectionnel à 100% (full duplex); Un registre programmable est utilisé pour programmer le rapport de division d’un y Opération en mode maître-esclave; diviseur de fréquence piloté par l’horloge E du 68HC11. La programmation de ce registre y Interfaçage avec des périphériques passifs; permet 32 vitesses différentes de transmission. y Interfaçage avec des périphériques intelligents en mode esclave; III.12.2 – Format des données : y Polarité et phase d’horloge programmables; La longueur du mot peut consister en 10 ou 11 bits. La sélection de cette longueur y Indication de fin de transmission (par un drapeau); est contrôlée par un bit du registre de contrôle. Lorsque ce bit est à zéro, le mot contient y Détection d’erreurs de collision d’écriture; un bit de Start, 8 bits de donnée et un bit de Stop. Lorsque ce bit est à un, le mot y Détection d’erreurs de mode maître – maître. comprend un bit de Start, neuf bits de données et un bit de Stop. Les quatre lignes de signalisation associées à cette interface sont : Le format de donnée requiert : y Ligne MOSI (Master Out-Slave In); y Une ligne d’attente qui est à l’état haut (1 logique) avant la transmission ou la y Ligne MISO (Master In-Slave Out); réception d’un message; y Ligne d’horloge série ou SCK; y Un bit de Start (0 logique) qui est transmis/reçu pour indiquer le début du y Ligne de sélection d’esclave. message; y La donnée transmise ou reçue a le bit le moins significatif (LSB) en premier; A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 39/40 A. BA-RAZZOUK – Systèmes à microprocesseurs – Chapitre III Page 40/40