Royaume du Maroc OFFICE DE LA FORMATION PROFESSIONNELLE ET DE LA PROMOTION DU TRAVAIL MODULE 11 Introduction aux Microprocesseurs Résumé de Théorie Télécharger tous les modules de toutes les filières de l'OFPPT sur le site dédié à la formation professionnelle au Maroc : www.marocetude.com Pour cela visiter notre site www.marocetude.com et choisissez la rubrique : MODULES ISTA Première Année Programme de Formation des Techniciens Spécialisés en Électronique DIRECTION DE LA RECHERCHE ET INGENIERIE DE LA FORMATION Septembre 1995 INTRODUCTION AUX MICROPROCESSEURS RÉSUMÉ DE THÉORIE Programmer les entrées/sorties en mode simple. TECCART INTERNATIONAL 2000 inc. 3155, boul. Hochelaga, Montréal, Québec (Canada) H1W 1G4 RÉDACTION Serge Leblanc. DESSINS ET CONCEPTION GRAPHIQUE Serge Leblanc RÉVISION TECHNIQUE Pierre Asselin B.Sc. & Christian Lépine RÉVISION LINGUISTIQUE François Gaudreau COMMISSION DE VALIDATION Formateurs de l'OFPPT Les droits de reproduction et de diffusion de ce document sont cédés par Teccart International 2000 inc. à l’Office de la Formation Professionnelle et de la Promotion du Travail du Royaume du Maroc, pour sa propre utilisation au Maroc. Mis à part l’OFPPT, toute reproduction, en tout ou en partie, par quelque procédé que ce soit, est interdite. Mp_Rt3.Doc, imprimé à Montréal, le 17 avril 2017 TABLE DES MATIÈRES 3. PROGRAMMER LES ENTREES/SORTIES EN MODE SIMPLE. 3-1 3.1 Description générale du PIA 3-1 3.2 Brochage du PIA 3.2.1 Signaux réservés aux données des péripheriques: 3.2.2 Signaux réservés aux données du microprocesseur: 3.2.3 Signaux de contrôle et de synchronisation avec les périphériques: 3.2.4 Signaux de controle et de synchronisation avec le MPU: 3-1 3-2 3-2 3-2 3-2 3.3 Branchement du PIA sur le système Mod. E6809 3-3 3.4 Les registres du PIA 3-3 3.5 La programmation du PIA 3-4 3.6 Tableau résumé des fonctions du registre CRA du PIA 3-6 3.7 Choisir et installer un interface de puissance 3-7 3.8 Commande d’un élément de puissance 3.8.1 Schéma bloc du système 3.8.2 Algorithme de traitement 3.8.3 Ordinogramme 3.8.4 Programme assembleur 3-9 3-9 3-10 3-10 3-11 3.9 Convertisseur numérique à analogique 3.9.1 Rappel 3.9.2 Schéma électrique du convertisseur N/A 3.9.3 Programme de contrôle du convertisseur N/A 3.9.4 Programme assembleur: 3-12 3-12 3-12 3-13 3-13 3.10 Convertisseur analogique à numérique 3.10.1 Schéma électrique du convertisseur A/N 3.10.2 Le circuit de mise à l’échelle du signal d’entrée 3.10.3 Le convertisseur analogique à numérique ADC0804 3.10.4 Programme de contrôle du convertisseur A/N 3-14 3-14 3-15 3-15 3-15 3.11 Exercices 3-17 Résumé de Théorie Introduction aux Microprocesseurs 3. Programmer les entrées/sorties en mode simple. 3.1 Description générale du PIA Le PIA (abréviation de Peripheral Interface Adaptor) est un circuit électronique sophistiqué qui contrôle des périphériques reliés en parallèle. Tous les micro-ordinateurs travaillent avec des circuits d'entrées/sorties pour assurer la liaison avec le monde extérieur. Le PIA est incorporé dans bon nombre d'applications commandées par divers types de microprocesseurs. Ce circuit d'entrée/sortie peut recevoir des contacts simples ou disposés en matrice, contrôler des lecteurs de LED, des relais ou des opto-coupleurs, etc. Le PIA est incontestablement très populaire comme interface. Le PIA communique avec les périphériques via 16 lignes d'entrée/sortie. Ces lignes PAO à PA7 et PBO à PB7 sont configurées en 2 ports PA et PB de 8 bits (8 lignes). Un port constitue un groupe d'entrées/sorties parallèles. Chaque ligne est programmée séparément en entrée ou en sortie. Le programmeur peut contrôler chaque ligne de sortie individuellement et lire l'état de chaque ligne d'entrée; c'est une question de logiciel ! Ainsi, quand le programmeur lit le port PA programmé en entrée, l'état des 8 lignes PAO à PA7 est acheminé à travers le PIA puis sur les lignes DO à D7 du bus de données jusque vers le microprocesseur. Quand le programmeur écrit dans le port B, programmé en sortie, l'information est envoyée par le microprocesseur via le bus de données (lignes DO à D7) puis à travers le PIA jusque sur les lignes PBO à PB7 du port B. Les différences entre le port A et le port B se situent au niveau des possibilités d'échange avec protocole entre le PIA et les péripheriques. Le port A est mieux adapté aux entrées tandis que le port B convient mieux aux sorties. Chaque port est doté de 2 lignes de contrôle: l'une en entrée (CA1 ou CB1) et l'autre en entrée ou en sortie (CA2 et CB2). 3.2 Brochage du PIA La figure ci-contre montre le brochage du PIA. Voici un résumé des signaux et du brochage du PIA. D’un point de vue fonctionnel, les signaux appartiennent à 4 catégories. Signaux réservés aux données des périphériques Signaux réservés aux données P. Signaux de contrôle et de synchronisation avec les périphériques. Signaux de contrôle et de synchronisation avec le microprocesseur. PA0 à PA7 PB0 à PB7 D0 à D7 CA1, CA2 CB1, CB2 E, R/W, /RESET CS0, CS1, /CS2 ,RS0, RS1 /IRQA, /IRQB VSS PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 CB1 CB2 VCC 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 M C 6 8 2 1 CA1 CA2 /IRQA /IRQB RS0 RS1 /RESET D0 D1 D2 D3 D4 D5 D6 D7 E CS1 /CS2 CS0 R//W Figure 3-1 Programmer les entrées/sorties page 3-1 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.2.1 Signaux réservés aux données des péripheriques: PA0- PA7 Port A lignes d'entrée ou de sortie (logique à 3 états). PB0 PB7 Port B lignes d'entrée ou de sortie (logique a 3 etats). Ces lignes ne supportent pas de transferts bidirectionnels de données. Chaque ligne peut fournir en source 1mA à 1.5 V et conduire la base d'un transistor. En entrée, chaque ligne est à l'état 0, si la tension appliquée est de 0.8 V et moins et à l'etat 1, si la tension appliquée est de 2 V et plus. Une ligne du port B (assigné en sortie) entre en état de haute impédance lors d'une lecture. 3.2.2 Signaux réservés aux données du microprocesseur: DO - D7 Lignes du bus de données assurant le transtert bidirectionnel d'information entre le microprocesseur et le PIA. Ces lignes fonctionnent en logique à 3 états. 3.2.3 Signaux de contrôle et de synchronisation avec les périphériques: CA1 Ligne, en entrée seulement, utilisée pour signaler une cause d'interruption d'un périphérique. CA2 Lorsque CA2 est programmée en entrée. cette ligne fonctionne comme CA1. Lorsque CA2 est programmée en sortie, elle est utilisée comme signal de réponse sur les données reçues au port A. CB1 Ligne, en entrée seulement, utilisée pour signaler une cause d’interruption d'un périphérique. CB2 Lorsque CB2 est programmée en entrée, cette ligne fonctionne cornme CB1. En sortie, elle véhicule un signal associé à l’envoi de données sur le port B. 3.2.4 Signaux de controle et de synchronisation avec le MPU: E Signal de synchronisation d’horloge avec le MPU. R/W Si R/W = 1, le MPU lit dans le PIA les données provenant des périphériques où il lit les registres DDRA, DDRB, CRA ou CRB. Si R/W = O, le MPU écrit des données dans le PIA pour les envoyer aux périphériques où il programme les registres DDRA, DDRB, CRA et CRB. /IRQA et Lorsque ces deux signaux passent à l'état logique 0, ils signalent une /IRQB demande d'interruption provenant du PIA. Les broches /IRQA et /IRQB sont généralement connectées aux lignes d’interruptions du CPU. /RESET Signal qui remet à 0 les registres internes du PIA. Lors d'un reset, les ports A et B sont en entrée. CS0, CS1 et /CS2 : Le boîtier du PIA sera choisi si CSO = 1, CS1 = 1 et CS2 = O. RSO et RS1 Ces 2 lignes donnent accès aux 6 registres internes du PIA; 4 registres sont accessibles directement et les 2 autres le sont de façon indirecte. Programmer les entrées/sorties page 3-2 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.3 Branchement du PIA sur le système Mod. E6809 R/W RESET A0 A1 FIRQ CPU 6809 R/W E RESET RS0 RS1 IRQA IRQB D0 D0 D7 D7 +5v +5v CA1 CA2 PIA 6821 CS0 CS1 CS2 Périphérique A PA CB1 Périphérique B PB CB2 signal: PAR adr: $1400 du décodeur d'adresse Figure 3-2 La figure de branchement du PIA montre comment le PIA est implanté dans le système Mod. E6809. Notez que le décodeur d’adresses fournit un signal de sélection répondant à l’adresse de base $1400. 3.4 Les registres du PIA Physiquement, le PIA utilise quatre adresses pour la sélection des registres. Deux registres (PA et DDRA) répondent à la même adresse. L’accès à l’un ou à l’autre se fait par le bit 2 du registre de contrôle CRA. Le même truc est utilisé pour le port B. RS 1 RS 0 0 0 0 1 1 0 1 1 Programmer les entrées/sorties Registre sélectionné PortA PA si CRA2=1 ou registre de direction DDRA si CRA2=0 Registre de contrôle CRA Port B si CRB2=1 ou registre de direction DDRB si CRB2=0 Registre de contrôle CRB page 3-3 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs Du point de vue programmation, l'utilisateur a accès à 6 registres internes. Par conséquent, le microprocesseur peut rejoindre 6 registres en lecture et en écriture comme des cases mémoire. Ces registres sont divisés en 2 groupes A et B de trois registres. CRA et CRB: sont les registres qui contrôlent les paramètres de fonctionnement du PIA. DDRA et DDRB: sont les registres de direction dont chacun des bits fixe le sens de transfert (entrée ou sortie) pour chacune des lignes reliées au péripheriques. Un état 1 définit une ligne en sortie et un état 0, une broche en entrée. ORA et ORB: sont les registres de sorties qui mémorisent les données (en sortie) lors d'une écriture. Comment se fait-il que chaque ligne d'un port puisse être programmée individuellement en entrée ou en sortie ? Ceci est obtenu par l'écriture d'un mot dans un registre de direction. Les registres de direction règlent la direction du transfert de données entre les périphériques et le MPU. Ainsi, lorsqu'un 0 est écrit dans le bit DDRA6 du registre DDRA, la ligne A6 est programmée en entrée. À l’inverse, lorsqu’un 1 est écrit dans le bit DDRB6 du registre DDRB, la ligne PB6 est programmée en sortie. D'un point de vue plus électronique, seuls les bits des lignes programmées en sortie sont mémorisés dans un registre périphérique. Par exemple, le signal envoyé au périphérique via la ligne de sortie PB6 est mémorisé dans le bit ORB6 du registre de sortie ORB. Ensuite, puisque le bit DDRB6 = 1 dans le registre de direction DDRB, le transfert du bit ORB6 sur la ligne PB6 est autorisé. Le sort d'une ligne programmée en entrée est tout différent! Son état n'est pas mémorisé dans un registre de sortie. Ainsi, l'état de la ligne PA6 est transmis directement au buffer bidirectionel. Ce dernier l'amplifie puis l'envoie sur la ligne D6 du bus de données vers le microprocesseur. 3.5 La programmation du PIA Avant d'utiliser le PIA pour communiquer avec des périphériques, l’utilisateur doit définir le sens (en entrée ou en sortie) de chacune des lignes du port A et du port B. Ensuite, il s'agit de rejoindre les registres périphériques ORA et ORB. Toutes ces étapes constituent l'initialisation du PIA. Elles se résument par l'algorithme suivant: 1- Mettre à 0 les bits CRA2 et CRB2 des registres de contrôle pour préparer l'accès aux registres de direction DDRA et DDRB. 2- Écrire dans les registres de direction DDRA et DDRB un code de 8 bits programmant en entrée ou en sortie chacune des lignes des ports. Un bit mis à 1 assigne une ligne en sortie, tandis qu'un bit mis à 0 programme une ligne en entrée. 3- Mettre à 1 les bits CRA2 et CRB2 des registres de contrôle pour préparer l'accès aux registres periphériques ORA et ORB. Programmer les entrées/sorties page 3-4 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs Pour initialiser le PIA, les étapes de cet algorithme sont traduites en instructions. Par conséquent, avant d'utiliser le PIA, il faut absolument faire exécuter un sous-programme qui programme les registres internes suivant la configuration des entrées/sorties desirées. Après son initialisation, le PIA est prêt à régir l'échange de données entre le microprocesseur et les périphériques. À cette étape, les données sont lues et écrites dans les ports A et B à 2 adresses correspondant aux registres périphériques ORA et ORB. Voici un programme de démonstration qui permet la vérification du PIA. ;********************************************** ; Programme de demonstration utilisant le PIA. ; Ce programme fait la lecture des entrees (portA) et transmet le code lu sur les sorties (portB). ; On peut quitter le programme avec la touche (reset). ; ; par: Serge Leblanc (22 mai 1995) ;-----------------------------------------------P_DDRA EQU $1400 Data direction register A P_DDRB EQU $1402 Data direction register B P_CRA EQU $1401 Control register A P_CRB EQU $1403 Control register B PA EQU $1400 Port A data input address PB EQU $1402 Port B data input address ;-----------------------------------------------; Programme principal ORG JSR LDB STB JMP ;--------------------------------------------------; Sous-programme d'initialisation du PIA. ; Le port A est initialise en entree tandis que ; et le port B est initialise en sortie. ; para. d'entree : aucun ; para. de sortie: aucun ; reg. affectes : A, CC $0200 INIPIA PA PB BOUCLE Origine du programme Sous-programme d'initialisation Lecture de PA -> reg.B Ecriture du reg.B -> PB Boucle sans fin (sort avec reset) INIPIA #$00 P_CRA P_DDRA #$04 P_CRA #$00 P_CRB #$FF P_DDRB #$04 P_CRB demande acces au DDRA (CRA2=0) programme le reg. CRA programme le portA en entree demande acces au PortA (CRA2=1) programme le reg. CRA demande acces au DDRB (CRB2=0) programme le reg. CRB place le portB en sortie programme le reg. DDRB demande acces au port B (CRB2=1) programme le reg. CRB retour du sous-programme DEBUT BOUCLE LDA STA STA LDA STA LDA STA LDA STA LDA STA RTS ;--------------------------------------------------END Programmer les entrées/sorties page 3-5 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.6 Tableau résumé des fonctions du registre CRA du PIA Ce tableau montre la fonction de chaque bit du registre de contrôle CRA associé au port A du PIA; le même tableau est utilisé pour le port B. L’initialisation du PIA se fait par la programmation du registre CRA. Par exemple, si le PIA est utilisé en mode simple, c’està-dire sans utiliser les lignes de contrôles, seul le bit 2 de CRA est important. Ce bit détermine l’accès à DDRA ou à PA. 7 6 IRQ de CA1 IRQ de CA2 5 4 0 CA2 en entrée 1 1 transition transition active sur CA1 active sur CA2 P R O G R A M M E 1 CA2 en sortie P U L S É D I A L O G U E Programmer les entrées/sorties 2 1 accès à DDRA ou à PA CONTRÔLE DE CA2 0 0 aucune aucune transition transition active sur CA1 active sur CA2 0 3 0 CA2 actif sur . 0 interruption masquée 1 CA2 actif sur . 1 interruption permise 1 X CA2 = CRA3 0 DDRA 1 PA 0 CONTRÔLE DE CA1 0 CA1 actif sur . 0 interruption masquée 1 CA1 actif sur . 1 interruption permise Mode dialogue Rx : CA1 ou => CA2 et CRA7 Lire PA => CA2 et CRA7 0 1 lire PA => CA2 écrire PB => CB2 Tx : Écrire sur PB => CB2 CB1 0 ou => CB2 0 voir page 3-6 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.7 Choisir et installer un interface de puissance Les lignes, en sorties du port A ou du port B, de l’interface parallèle PIA ont une faible capacité en courant. On peut, tout au plus, allumer des LED, mais les sorties du PIA ne peuvent pas contrôler directement des éléments de puissance sans l’ajout d’une interface de puissance adéquate. Il est possible de renforcir une sortie du PIA par l’ajout d’un transistor, d’un petit relais ou d’un opto-coupleur. Voici quelques configurations possibles. Charge alimentée en courant continu avec un 7407 Le 7407 est un buffer dont la sortie est à collecteur ouvert. Il offre l’avantage d’augmenter la capacité en courant jusqu’à 40mA et permet également une alimentation jusqu’à +30 volts. Vcc Vcc Charge résistiv e Charge inductiv e PB ou PA PB ou PA 7407 Contrôle par «buffer» à collecteur ouvert 7407 Contrôle par «buffer» à collecteur ouv ert Figure 3-3 Figure 3-4 Charge alimentée en courant continu avec un transistor Le transistor permet aussi le renforcement en courant et bénificie des avantages d’une sortie à collecteur ouvert. De plus, les transistors sont disponibles avec des spécifications très variées en ce qui concerne: le courant, la tension, le gain et la dissipation. Il est généralement peu coûteux. Vcc Vcc PB ou PA Charge résistiv e PB ou PA Charge inducti ve Contrôle par transistor Contrôle par transistor Figure 3-5 Figure 3-6 Programmer les entrées/sorties page 3-7 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs Charge alimentée en courant alternatif avec isolation Les coupleurs optiques permettent une excellente isolation électrique entre le circuit de puissance et le circuit de contrôle. On peut les utiliser directement si la charge est de faible puissance ou les renforcer avec un thyristor de forte puissance. Certains coupleurs optiques, comme le MOC3041, peuvent réaliser un amorçage des thyristors à 0° ou 180° degrés; ces circuits sont idéaux pour les circuits de contrôle, puissance par cycle complet. Les éléments chauffants sont généralement contrôlés de cette façon. D’autres coupleurs optiques, comme le MOC3011, amorcent les thyristors aussitôt que la commande est active; ces coupleurs sont utilisés lorsqu’il faut contrôler la puissance à la charge par portion de cycle ou angle de phase. Le contrôle d’intensité d’éclairage utilise se principe pour éviter le clignotement des lampes comme le ferait un contrôle par cycle complet. +5v Ce circuit permet de contrôler une charge AC de faible puissance directement et ce, en offrant une bonne isolation électrique par coupleur optique. LA MP AC PB ou PA OP TOTRIAC Charge AC faible puissance Figure 3-7 +5v Voici la version à forte puissance, elle peut contrôler des charges importantes à l’aide du TRIAC de puissance ajouté. Celui-ci devra être choisi selon les caractéristiques en tension et en courant imposées par la charge. LAM P PB ou PA TRI AC OPT OTRI AC AC Charge AC forte puissance Figure 3-8 . +5v Ce dernier circuit est utile lorsque la charge est inductive. Comme le précédent, c’est un circuit à forte puissance. 1K2 CH ARGE IND UCTIVE 180 R MO C301 1 0.2 uF TR IAC PB ou PA AC Charge AC inductive Figure 3-9 Programmer les entrées/sorties page 3-8 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.8 Commande d’un élément de puissance L’expérience suivante démontre le fonctionnement d’un contrôle de puissance par un système à microprocesseur. Il s’agit de maintenir la température d’un espace à l’aide d’un élément chauffant. Le système est en boucle fermé et utilise un capteur pour mesurer la température. 3.8.1 Schéma bloc du système La figure ci-après montre le système de contrôle de température. On y trouve un capteur permettant la conversion de la température à une tension proportionnelle. Le signal électrique du capteur de température est envoyé à un comparateur de tension qui reçoit également une tension de comparaison. La position du potentiomètre sert à établir à quelle température le comparateur basculera. La sortie du comparateur est transmise au PIA sur la ligne PA7. Ce signal correspond à +5 volts pour une température plus élevée que le point de consigne et à 0 volt, pour une température inférieure. Le PIA transmet au microprocesseur l’état du comparateur et celui-ci décide s’il faut activer ou désactiver la sortie PB7 afin d’augmenter ou de réduire la température. Le signal est actif à 0v et inactif à +5v. Le signal de sortie PB7 du PIA est couplé optiquement à l’interface de puissance. Ce dispositif protège, par isolation électrique, le circuit de contrôle d’une défectuosité électrique du circuit de puissance. L’interface de puissance à thyristor, commandée par le PIA, permet le contrôle d’un élément chauffant branché sur le secteur. Comparateur de tension PA7 PIA PB7 Coupleur optique Vréf. Micro Processeur Capteur de température Interface de puissance à thyristor Élément chauffant Figure 3-10 Programmer les entrées/sorties page 3-9 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.8.2 Algorithme de traitement Pour solutionner ce problème, il faudra suivre un algorithme dont les étapes chronologiques sont les suivants. 1. Initialiser le PIA. 2. Lire le bit 7 du portA. 3. Prendre la décision d’activer ou non PB7 selon l’état de PA7. 4. Recommencer à l’étape 2. 3.8.3 Ordinogramme INIPIA CONTRÔLE accès à DDRA CRA2=0 INIPIA définir port A en entrée DDRA=$00 LIRE LE PORT A accès à PA CRA2=1 accès à DDRB CRB2=0 PA7 = 1 ? définir port B en sortie DDRB=$FF ACTIVER LA SORTIE PLACER PB7 À 0 DÉSACTIVER LA SORTIE PLACER PB7 À 1 accès à ORB CRB2=1 RETOUR Figure 3-11 Programmer les entrées/sorties page 3-10 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.8.4 Programme assembleur ;********************************************** ; Programme de controle de temperature. Ce programme fait la lecture de l'entree PA7 ; puis active, si necessaire, la sortie PB7 afin de maintenir la temperature d'un espace. ; On peut quitter le programme avec la touche (reset). ; ; par: Serge Leblanc (22 mai 1995) ;-----------------------------------------------P_DDRA EQU $1400 Data direction register A P_DDRB EQU $1402 Data direction register B P_CRA EQU $1401 Control register A P_CRB EQU $1403 Control register B PA EQU $1400 Port A data input address PB EQU $1402 Port B data input address ;-----------------------------------------------; Programme principal ORG $0200 Origine du programme JSR LDB LDA ANDA BEQ ORB BRA ACTIVE ANDB STORE STB JMP ;--------------------------------------------------; Sous-programme d'initialisation du PIA. ; Le port A est initialise en entree tandis que ; et le port B est initialise en sortie. ; para. d'entree : aucun ; para. de sortie: aucun ; reg. affectes : A, CC INIPIA PB PA #10000000B ACTIVE #10000000B STORE #01111111B PB BOUCLE Sous-programme d'initialisation Lire l'etat des sorties PB Lecture du portA Isoler le bit 7 si bit7=0, temperature trop basse Forcer le bit7 a 1 (desactive) INIPIA #$00 P_CRA P_DDRA #$04 P_CRA #$00 P_CRB #$FF P_DDRB #$04 P_CRB demande acces au DDRA (CRA2=0) programme le reg. CRA programme le portA en entree demande acces au PortA (CRA2=1) programme le reg. CRA demande acces au DDRB (CRB2=0) programme le reg. CRB place le portB en sortie programme le reg. DDRB demande acces au port B (CRB2=1) programme le reg. CRB retour du sous-programme DEBUT BOUCLE LDA STA STA LDA STA LDA STA LDA STA LDA STA RTS ;--------------------------------------------------END Programmer les entrées/sorties page 3-11 Forcer le bit7 a 0 (active) Ecriture du resultat sur le portB Boucle sans fin (sort avec reset) OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.9 Convertisseur numérique à analogique Les convertisseurs N/A permettent de convertir une valeur numérique en un voltage proportionnel. Le contrôle d’une tension à l’aide d’un système à microprocesseur est particulièrement intéressant et permet une grande variété d’applications. On peut, pour en nommer quelques unes, contrôler l’intensité lumineuse d’un système d’éclairage, contrôler la puissance transmise à un élément chauffant, contrôler la vitesse de rotation d’un moteur. 3.9.1 Rappel Pour prévoir quelle sera la tension de sortie d’un convertisseur, quelques paramètres doivent être connus. On peut évaluer la tension de sortie si on connaît la tension maximale à pleine échelle, le nombre de bits utilisés par le convertisseur et la valeur appliquée au convertisseur. Un convertisseur possède les caractéristiques suivantes: la tension maximale à pleine échelle = 8 volts; le nombre de bits du convertisseur = 8 bits. Si le convertisseur N/A convertit la valeur 255 qui correspond à la valeur la plus haute, on obtient la tension maximale, c’est-à-dire 8 volts. La tension minimale est obtenue avec la valeur 0. Par contre, si l’on tente de prévoir la tension pour une valeur intermédiaire comme 64, les calculs suivants sont nécessaires. La résolution exprime la plus petite variation de tension possible. Le nombre de bits est exprimé par la lettre n Re solution Vout max 8volts 8volts 8 314 . mV 255 2n 1 2 1 Vout valeur * resolution 64 * 31.4mV 2Volts On peut donc facilement prévoir la tension de sortie de ce convertisseur. 3.9.2 Schéma électrique du convertisseur N/A La figure montre le câblage du convertisseur implanté sur le système Mod. E6809.Le circuit utilise un DAC0800 de 8 bits. Le DAC0800 reçoit les données à convertir du circuit 74374. Celui-ci mémorise l’information présente sur le bus de données lorsqu’une impulsion est reçue sur sa broche CLK. Cette impulsion est généré par le décodeur d’adresses chaque fois que le microprocesseur fait une opération d’écriture à l’adresse $1800. La sortie du convertisseur DAC0800 ne fournit pas directement une tension, c’est une sortie en courant. Le circuit utilisant l’amplificateur opérationnel est un convertisseur courant à tension calibrée de manière à obtenir une tension de 0 volt avec la valeur $00 et +8 volts avec la valeur maximale $FF. Programmer les entrées/sorties page 3-12 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs R76 2K7 RV3 1K +12V CPU DATA BUS +12V 1 11 OE CLK 2 5 6 9 12 15 16 19 12 11 10 9 8 7 6 5 D0 D1 D2 D3 D4 D5 D6 D7 VRE F+ IOU T VRE FV- 1 2 74L S374 V+ VLC IOU T COM P 13 7 IC3 2 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 R74 4K7 14 3 4 2 15 3 IC3 3 6 741 OUT R75 4K7 5 D0 D1 D2 D3 D4 D5 D6 D7 4 1 IC3 1 3 4 7 8 13 14 17 18 C8 16 DA C0800 10K RV4 10n Adr.: $1 800 -12V -12V Figure 3-12 3.9.3 Programme de contrôle du convertisseur N/A Le programme suivant génère une rampe de tension à la sortie du convertisseur. Cette rampe commence à zéro volt et monte progressivement jusqu’à huit volts. Lorsque la tension maximale est atteinte, elle tombe d’un coup à zéro volt puis recommence le cycle continuellement. C’est ce qu’on appelle une forme d’onde en dent de scie. 3.9.4 Programme assembleur: ;********************************************** ; Generation d'une rampe de tension de 0 a 8 volt sur le convertisseur N/A. ; On peut quitter le programme avec la touche (reset). ; par: Serge Leblanc (22 mai 1995) ;---------------------------------------------CONV_DA EQU $1800 Adresse du convertisseur N/A ;---------------------------------------------ORG $0200 Origine du programme DEBUT MONTE LDB STB INCB JMP ;---------------------------------------------END Programmer les entrées/sorties #$00 CONV_DA MONTE page 3-13 code = 00 = 0 volt sur le convertisseur incremente la valeur du N/A continu a monter OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.10 Convertisseur analogique à numérique Le convertiseur analogique à numérique permet la mesure d’une tension et la convertit en une valeur numérique utilisable par le microprocesseur. Beaucoup de phénomènes physiques peuvent être mesurés si l’on dispose d’un capteur et d’une interface électronique traduisant la grandeur physique du phénomène sous la forme d’une tension, dont l’amplitude est compatible avec l’entrée analogique du convertisseur A/N. La valeur numérique obtenu du convertisseur dépend de la résolution du convertisseur et de la quantité de bits utilisés pour réaliser la conversion. Prenons par exemple un convertisseur de 10 bits dont la résolution est de 10mV. La tension maximale qu’il peut mesurer est: 10mV * (210-1) = 10.23 Volts Si on lui appliquait une tension de 2 volts, le valeur numérique serait égale à: 2 Volts / 10mV = 200 (ou C8 en hexa) 3.10.1 Schéma électrique du convertisseur A/N Le schéma suivant montre l’implantation du convertisseur ADC0804 sur le système à microprocesseur Mod. E6809. On retrouve sur ce schéma deux parties importantes: un circuit pour la mise à l’échelle du signal et le convertisseur analogique et numérique ADC0804. DATA BUS RV1 4K7 IC3 0 AD C0804 +12V +12V 470 R 100 K D7 1N9 14 20 R73 19 4 9 IC2 9 3 6 R70 100 K 2 6 741 C5 10n R71 10K C7 100 n 7 8 10 RV2 VCC CLK -R 2K2 5 R69 4 1 INPUT R68 C6 100 n 7 1N9 14 D6 +5V CLK -IN Vre f/2 Vin (+) D0 D1 D2 D3 D4 D5 D6 D7 INT R Vin (-) WR A-G ND RD GN D CS CPU 18 17 16 15 14 13 12 11 FIRQ R/W 11 1K IC4 E 740 4 5 3 10 R72 2 1 10K adr: $1C00 -12V Figure 3-13 Programmer les entrées/sorties page 3-14 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.10.2 Le circuit de mise à l’échelle du signal d’entrée Le circuit d’entrée est protégé, à l’aide de R68, D6 et D7, contre les tensions négatives et contre les tensions positives plus grandes que +12.7 volts. La tension d’entrée est divisée par deux par les résistances R69 et R70 qui déterminent aussi l’impédance d’entrée du circuit, soit 200Kohms. Le potentiomètre RV1 permet d’ajuster le gain de l’amplificateur et le potentiomètre RV2 sert à calibrer le décalage offset. Sur l’entrée Vin+ du ADC0804, le signal doit se maintenir à l’intérieur des limites d’opération. Ces limites sont 0 volt comme tension minimale et +5 volts, comme tension maximale. 3.10.3 Le convertisseur analogique à numérique ADC0804 Le ADC0804 est un convertisseur à 8 bits, doté d’une vitesse de conversion élevée et d’une entrée analogique 0 à 5 volts. Il exploite la technique de conversion à approximations successives. Ce convertisseur est équipé d’une porte de sortie à trois états qui lui permet de s’attacher directement sur les bus du microprocesseur. Les signaux suivants sont utilisés pour établir la communication. Le signal /CS permet la sélection du boîtier, celui-ci répond à l’adresse hexadécimale $1C00. Le signal /RD utilisé en synchronisation avec /CS permet de lire la donnée provenant du convertisseur. Le signal /WR utilisé en synchronisation avec /CS à transmettre le signal de début de conversion. Le signal INTR, qui indique la fin de la conversion, peut être utilisé pour générer des interruptions FIRQ au microprocesseur. 3.10.4 Programme de contrôle du convertisseur A/N Bien que le programme ci-après utilise une boucle de délai pour permettre au convertisseur de terminer la conversion avant de lire la donnée, il est possible d’utiliser un programme de contrôle avec gestion de l’interruption FIRQ pour signaler la fin de la conversion au microprocesseur. ;********************************************** ; Lecture d'une tension de 0 a 8 volt avec le ; convertisseur analogique a numerique ADC0804. ; Le code lu est retourne sur le portB du PIA ; pour la visualisation sur des LED. ; ; On peut quitter le programme avec la touche (reset). ;---------------------------------------------AD_CONV EQU $1C00 PORTB EQU $1402 DDRB EQU $1402 CRB EQU $1403 ;---------------------------------------------ORG $0200 DEBUT LOOP JSR STA JSR Programmer les entrées/sorties INIPIA AD_CONV DELAI page 3-15 Adresse du convertisseur A/N Adr. du portB du PIA Adr. du reg. de dir. du PIA Adr. reg. de controle du PIA Origine du programme initialise le PIA depart de conversion attend fin de conversion OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs LDA STA JMP ;---------------------------------------------; Sous-programme d'initialisation du PIA, ; le port B est defini en sortie. ; ; para. d'entree : aucun ; para. de sortie: aucun ; reg. affectes : CC AD_CONV PORTB LOOP lit la valeur convertie ecrit la valeur sur PB boucle sans fin INIPIA PSHS CLR LDA STA LDA STA PULS RTS ;---------------------------------------------; Sous-programme de delai de ___ milli sec. ; ; para. d'entree : aucun ; para. de sortie: aucun ; reg. affectes : CC A CRB #$FF DDRB #$04 CRB A sauve reg. A acces a DDRB (CRB2=0) defini tout le portB en sortie. DELAI A #$00 sauve reg.A initialise le compteur decremente le compteur si > 0, aller a DEL1 recupere reg.A retour PSHS LDA DEL1 DECA BNE PULS RTS ;---------------------------------------------END Programmer les entrées/sorties DEL1 A page 3-16 acces au portB (CRB2=1) recupere reg.A retour OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs 3.11 Exercices # 1 - Énumérez les registres internes du PIA accessibles à l’usager et décrivez leur rôle. _____________________________________________________________________ _____________________________________________________________________ _____________________________________________________________________ # 2 - Sur quelles lignes se propagent les données entre a) le microprocesseur et le PIA ? réponse: _______________________ b) entre le PIA et les périphériques ? réponse: ____________________________ # 3 - Quelles sont les lignes, parmi les suivantes, qui ne peuvent pas être programmées en sortie sur le PIA? PA0 à PA7, PB0 à PB7, CA1, CA2, CB1, CB2 réponse: _____________________________ # 4 - Pour assigner les lignes PB0 à PB3 en entrée et les lignes PB4 à PB7 en sortie, quel code doit être écrit dans le registre de direction DDRB ? réponse: ______________________________ # 5 - Un boîtier de PIA occupe les adresses de $1400 à $1403. Quel registre interne est choisi dans les conditions suivantes: a) à l’adresse $1400 si CRA = $04 ? réponse: __________ b) à l’adresse $1401 ? réponse: __________ c) à l’adresse $1402 si CRB = $00 ? réponse: __________ d) à l’adresse $1403 ? réponse: __________ Programmer les entrées/sorties page 3-17 OFPPT/TECCART Résumé de Théorie Introduction aux Microprocesseurs # 6 - Concevez l’ordinogramme d’un sous-programme qui initialise le PIA pour obtenir PA0 à PA3 en sortie, PA4 à PA7 en entrée et le port B en sortie. # 7 - Concevez un programme en langage assembleur qui génère une rampe de tension qui part à 7.5 volts et descend jusqu’à 0 volt par saut de ½ volt. Le programme boucle sur lui-même et regénère la forme d’onde continuellement. La sortie du programme se fait avec la touche reset. # 8 - Dessinez le circuit nécessaire pour contrôler, à partir de la ligne PB7 du port B du PIA, un petit moteur fonctionnant avec une tension de 12 volt DC. La charge doit être contrôlée de manière on/off. # 9 - Quel composant électronique permettrait une isolation électrique entre un circuit de commande alimenté à +5v DC et un circuit de puissance utilisant une tension de 120v AC? réponse: _____________________________ # 10 - Écrivez un programme en langage assembleur qui commande une lampe selon le niveau d’éclairage ambiant. Si le niveau d’éclairage est faible, la lampe doit s’allumer; par contre, si le niveau d’éclairage est fort, la lampe doit s’éteindre. Voici le schéma bloc du système. Comparateur Capteur: Photorésistance Sortie: trop bas = 0 correcte = 1 PA6 PIA 6821 PB3 Microprocesseur 6809 Calibration du seuil d'éclairage Énoncés Niveau L'éclairage ambiant est bon PA6 = 1 L'éclairage est trop bas PA6 = 0 La lampe est éteinte PB3 = 1 La lampe est allumée PB3 = 0 Programmer les entrées/sorties page 3-18 Interface de puissance LAMPE OFPPT/TECCART