STAGE NOVEMBRE 2000 MICROCONTRÔLEUR ST62E65 - Un timer autorechargeable 8 bits, - Une interface série synchrone, - 3 ports d’entrées / sorties (2 de 8 bits, 1 de 5 bits), - Un chien de garde numérique, - Un circuit de RESET et d’interruption. PRÉSENTATION DU MICROCONTRÔLEUR ST62E65 2- ESPACE MÉMOIRE. 1- DESCRIPTION. Le ST62E65 de chez Thomson est un microcontrôleur 8 bits intégrant un bon nombre de périphériques lui permettant de réaliser des traitements numériques assez complexes. Il se présente dans un boîtier CDIP 28 broches. TEST / VPP NMI La taille du bus des données est de 8 bits, celle du bus des adresses est de 12 bits. Les données peuvent donc aller de la valeur 0 à la valeur 255 (FF en hexadécimal). L’espace adressable est donc de 4 Ko (4096 octets). ESPACE PROGRAMME TEST I NTERRUPTIONS C. A.N. 8 P ORT A BITS 0000h DONNÉE MÉMOIRE PROGRAMME EEPROM 4 KO FENÊTRE EN EPROM 64 O P ORT C RAM 128 OCTETS TIMER N°2 A UTORECHAR . EEPROM 128 OCTETS TIMER N°1 0080h PC0 / A IN PC1 / TIM1 / A IN PC2/ S IN /AIN PC3 / S OUT / A IN PC4 / S CK / AIN 23 22 3 PC 1 NIVEAU 2 NIVEAU 3 NIVEAU 4 NIVEAU 5 NIVEAU 6 PILE PILE PILE PILE PILE C.P.U. 8 BITS ALIMENTATION VDD VSS DE GARDE OSCILLATEUR O SCIN O SCOUT 11 RESET RESET OSCIN OSCOUT NMI RST VPP/TEST VDD PA0/AIN PA1/AIN PA2/AIN PA3/AIN PA4/AIN PA5/AIN PA6/AIN PA7/AIN PB0 PB1 PB2 PB3 PB4 PB5 ARTIMIN/PB6 ARTINOUT/PB7 10 13 14 15 16 17 18 19 1 2 4 5 6 7 8 9 28 PC0/AIN Il est constitué de : 27 PC1/SCK/AIN 26 PC2/SOUT/AIN - Une CPU 8 bits, 25 PC3/SIN/AIN 12 24 - 4 Ko d’EPROM, GND PC4/TIM1/AIN - 128 octets de RAM, ST62E65B - 128 octets d’EEPROM, - Une pile à 6 niveaux, - Un convertisseur Analogique Numérique 8 bits à approximation successive, - Un timer 8 bits, PADIOLLEAU JEAN-LUC 080h U1 S.P.I. PILE NIVEAU 040h Mémoire programme EPROM 20 21 CHIEN 000h RÉSERVÉ PB0..PB5 PB6 / ARTIM IN PB7 / ARTIM OUT P ORT B MÉMOIRE DE ESPACE DONNEE PA0..PA7 / A IN Pages RAM / EEPROM Fenêtre en EPROM Registre X Registre Y Registre V Registre W 084h RAM 0C0h 0FF0h 0FFFh Vecteur de RESET et d'interruptions 0FFh Registres des périphériques Accu. A L’espace de données est figé à 256 octets et est complètement séparé de l’espace adressable de la mémoire programme. Ceci signifie que, mis à part la lecture des instructions, les opérations de lecture de la mémoire programme se font par l’intermédiaire d’une “fenêtre” dans la mémoire de donnée (de 040h à 7Fh). La sélection de la zone d’EPROM accessible via cette fenêtre est définie grâce au registre DRWR situé à l’adresse 0C9h de l’espace de donnée. Les adresse de données comprises entre 000h et 040h permettent d’accéder a 2 pages d’EEPROM et une page de RAM (1 page = 64 octets). La sélection de pages PAGE B-1 STAGE NOVEMBRE 2000 MICROCONTRÔLEUR ST62E65 s’effectue par une opération d’écriture dans le registre DRBR situé à l’adresse 0E8h. Voici les codes à placer dans ce registre pour obtenir la page souhaitée : DRBR (0E8H) 00h 01h 02h 10h Autres PAGE SÉLECTIONNÉE Aucune EEPROM page 0 EEPROM page 1 RAM page2 Déconseillé Ø REGISTRES AUXILIAIRES : “V” ET “W” : Ils ont pour rôles de compléter l’accumulateur pour ce qui concerne les traitements un peu plus complexes. Leur taille est de 8 bits. Ø REGISTRES POINTEURS D’INDEX : “X” ET “Y” : L’ESPACE MÉMOIRE DE DONNÉE CONTIENT AUSSI LES REGISTRES DE LA CPU. 3- LE MICROPROCESSEUR (CPU). Ces deux pointeurs d’utilisation parfaitement identiques sont utilisés dans les modes d’adressage indexé, afin de positionner une valeur quelconque sur le bus d’adresses. Le contenu de ces registres permet de pointer des données. Leur taille est de 8 bits. STRUCTURE INTERNE DE LA C.P.U. 8 Bits Bus des données Les calculs arithmétiques et les manipulations de données se font grâce à l’accumulateurs. Dans la plupart des opérations, une des opérande ainsi que le résultat sont contenus dans l’accumulateur. Sa taille est de 8 bits. Les possibilités de décrémentation et d’incrémentation permettent une gestion efficace des données rangées sous forme de table. Instruction m ém oire program m e Ø REGISTRE COMPTEUR PROGRAMME : PC REGIS TRES AUX IL L IAIRES V et W ACCUM UL AT EUR A REG IS T RE D'INDEX X et Y Le contenu de ce registre détermine l’adresse de l’instruction que doit exécuter le processeur. Il pointe en permanence l’adresse de la prochaine instruction à exécuter. Sa taille est 12 bits. Ø REGISTRES DE PILE : INDICAT EUR Z et C La pile est utilisé par le microprocesseur pour gérer la sauvegarde du compteur programme pendant l’exécution de programmes d’interruptions ou de sous-programmes. Cette opération permet de récupérer l’adresse d'origine lorsque le sous programme est terminé. UNITE ARIT HM ET IQUE ET L OGIQUE INDICATEUR: “Z” ET “C”. DECODAGE ET S EQUENCEM ENT DES INS T RUCTIONS P IL E 6 NIV EAUX CO M P T EUR P ROGRAM M E Horloge Interruptions et Reset Adresses Program m e Adresses Données Le microprocesseur du ST6 est constitué d’un décodeur d’instructions, d’un compteur programme, d’une pile 6 niveaux d’un accumulateur, de 2 registres auxilliaires, de 2 registres d’index et d’une unité arithmétique et logique (ALU). Ø ACCUMULATEUR “A” : PADIOLLEAU JEAN-LUC Ces indicateurs sont des bits qui ont pour rôles de spécifier certaines informations en ce qui concerne la dernière opération : ú Le bit “Z” est actif lorsque la dernière opération effectué a pour résultat 0 ; ú Le bit “C” est actif lorsque la dernière opération effectué a engendré un retenue. Il existe une paire d’indicateur “Z” et “C” pour les trois modes de fonctionnement du ST6 : ú Mode “NORMAL” ; ú Mode “NMI” ; ú Mode “INT”. PAGE B-2 STAGE NOVEMBRE 2000 MICROCONTRÔLEUR ST62E65 4- LE RESET ET LES INTERRUPTIONS Le ST6 possède deux modes d’interruptions matérielles : ú NMI (No Maskable Interrupt) : interruption non - masquable déclenchée par la broches 23 ; ú IRQ (Interrupt Request) : interruption masquable déclenchée par un des périphériques intégrés. Quelque soit la source d’interruption, le ST6265 réalise la séquence suivante : ú le programme principal est interrompu ; ú sauvegarde le contenu du PC dans la pile ; ú exécution d’une séquence spécifique, reflet du type de traitement d’interruption ; ú la prise en compte d’une interruption ne se fait jamais pendant l’exécution d’une instruction. En ce qui concerne les interruptions masquables, un registre d’option IOR (adresse 0C8h) permet de définir comment s’effectuera la prise en compte des interruptions requises par les différents périphériques. BIT LES ESB GEN X LES ESB GEN X X RÔLE Détermine si l’interruption requise par les broches des ports A et B est déclenchée par un front descendant ou un front montant Détermine si l’interruption requise par les broches du port C et du SPI est déclenchée par un niveau bas ou un front descendant Active ou désactive les interruptions masquables X X “1” “0” Front montant Font descendant Niveau bas Front descendant Actives Inactives En plus des deux interruptions définies précédemment, le ST6 possède un mode d’initialisation RESET. Ce mode est activé soit par la broche 22 (active au niveau bas), soit par le chien de garde (compteur à 0). Voici les adresses, en fonction de la source, vers lesquelles pointe le PC lors d’une demande d’interruption ou de RESET. PADIOLLEAU JEAN-LUC SOURCE D’INTERRUPTION FF0h FF1h FF2h FF3h FF4h FF5h FF6h FF7h FF8h FF9h FFAh FFBh FFCh FFDh FFEh FFFh Temporisateur (TIMER)r et C.A.N. (ADC) Temporisateur autorechargeable (AR TIMER) PORT C et Interfaface série synchrone (SPI) N° DU VECTEUR D’INTERRUPTION Vecteur n°4 Vecteur n°3 Vecteur n°2 PORTS A et B Vecteur n°1 Réservé X Réservé X Broche NMI Vecteur n°0 RESET X Dans les 2 octets de mémoire programme associés à chaque interruption et au RESET, on place une instruction de saut vers la procédure relative au traitement de la requête. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IOR (0C8h) ADRESSES 5- LE JEU D’INSTRUCTION DU ST6. Le jeu d’instructions du ST6 est très performant malgré que le nombre d’instructions soit limité . Il permet plusieurs modes d’adressages qui seront détaillés par la suite. Dans la réalité chaque instruction correspond à un ou plusieurs octets stockés dans la mémoire programme mais l’écriture de programmes utilisant ces instructions se fait en langage assembleur, plus compréhensible par l’homme. Chaque instruction répond au modèle suivant : Langage machine 08E1 17 FF Langage assembleur LABEL LDI A,0FFh Opérandes Code opération Adresse Opérandes Code opération PAGE B-3 STAGE NOVEMBRE 2000 Ø Instructions de transfert des données. Ces instructions permettent le chargement et la sauvegarde des registres internes du microprocesseur. INSTRUCTION FONCTION LD Chargement des registres du microcontrôleur Ø Les instructions arithmétiques. Les instructions suivantes permettent les fonctions arithmétiques classiques. INSTRUCTION FONCTION ADD Addition du contenu mémoire à l’accumulateur SUB Soustraction du contenu mémoire à l’accumulateur Ø Les instructions de rotations et décalage La rotation ou le décalage permettent de décaler, vers la gauche un mot binaire, bit à bit. INSTRUCTION FONCTION RLC Rotation à gauche des bits d’une mémoire avec affectation “C” SLA Décalage à gauche de l’accumulateur Ø Les instructions logiques Il s’agit seulement des opérations logiques “ET” et “NON”. INSTRUCTION FONCTION AND “ET LOGIQUE ” entre mémoire et registre interne COM Complément logique du contenu mémoire ou de l’accumulateur Ø Instruction de comparaison Cette instruction est utilisée pour réaliser des comparaisons. A l’issue de ces opérations les indicateurs “Z” et “C” sont positionnés. INSTRUCTION FONCTION CP Comparaison du contenu d’une mémoire avec l’accumulateur Ø Les instructions d’incrémentation / décrémentation et de mise à 0. Ces instructions ont la particularité de n’agir que sur une seule opérande. INSTRUCTION FONCTION CLR Remise à zéro du contenu mémoire ou de l’accumulateur DEC Décrémentation du contenu mémoire ou de l’accumulateur INC Incrémentation du contenu mémoire ou de l’accumulateur PADIOLLEAU JEAN-LUC MICROCONTRÔLEUR ST62E65 NOP Pas d’opération Ø Instructions de tests et de branchements conditionnels. Ces instructions permettent de réaliser des branchements conditionnels, à partir de tests effectués sur les indicateurs ou le bit d’une mémoire. Le branchement correspond à un décalage d’une quantité défini dans le programme, et ce depuis la position de l’instruction en cours. Ce décalage peut être positif ou négatif, codé sur 3 bits (on parlera de branchement court) ou sur 5 bits (branchement long). INSTRUCTION JRC JRZ JRNC JRNZ JRS JRR FONCTION Branchement si le bit “C” de retenue est à 1 Branchement si le bit “Z” de zéro est à 1 Branchement si le bit “C” de retenue n’est pas à 1 Branchement si le bit “Z” de zéro n’est pas à 1 Branchement si le bit de rang “b” d’une mémoire est à 1 Branchement si le bit de rang “b” d’une mémoire n’est pas à 1 Ø Instructions de saut inconditionnels et d’appel de sous programmes. Les instructions suivantes entraînent des ruptures de séquence, sans conditions préalables. Il faut néanmoins distinguer les instructions de saut qui n’affectent en rien la pile, aux instructions propres aux sous programmes qui affectent la pile (Sauvegarde du PC). INSTRUCTION JP CALL RET RETI FONCTION Saut à l’adresse indiqué. (Le PC prend la valeur indiqué) Appel du sous - programme indiqué Retour de sous - programme Retour de sous - programme de traitement d’interruption Ø Les instructon de positonnement de bits Il s’agit de positionner à “0” ou à “1” le bit du rang et du registre spécifiés. INSTRUCTION FONCTION SET Positionne à “1” le bit du rang et du registre spécifiés. RES Positionne à “0” le bit du rang et du registre spécifiés. Voir document sur le jeu d’instructions du ST6. PAGE B-4 STAGE NOVEMBRE 2000 6- LES MODES D’ADRESSAGES DU ST6. Les modes d’adressages sont les différents moyens permettant d’accéder à une opérande en vue de tester ou de modifier le contenu d’un registre ou d’une mémoire. Ø Mode d’adressage inhérent ou implicite. L’adressage inhérent concerne les instructions qui ne comportent pas d’opérande, cette dernière étant implicite. Un telle instruction est codée sur 1 octet. Exemple : DEC A → soustrait 1 à l’accumulateur. Ø Mode d’adressage immédiat. Dans ce mode d’adressage, le code opératoire 8 bits est directement suivi de la valeur prise en compte par l’instruction. Ce type d’adressage permet de charger les registres internes du microprocesseur avec la valeur de l’opérande. La lettre “i” signifie immédiat dans la syntaxe assembleur. Exemple : LDI A,43 → Charge l’accumulateur avec la valeur décimal 43. Ø Mode d’adressage direct. Ce mode d’adressage nécessite 2 octets pour avoir accès à l’ensemble de l’espace mémoire de donnée du microprocesseur. Le premier octet définit le code opératoire, le second représente les huit bits de l’adresses. Exemple : ADD A,43h → additionne l’accumulateur avec le contenu de la mémoire ayant l’adresse hexadécimal 43. Ø Mode d’adressage direct court. Ce mode d’adressage ne nécessite qu’un octet mais ne permet que d’accéder aux registres X, Y, V et W ayant respectivement les adresses 80h, 81h, 82h et 83h hexadécimales. Exemple : DEC Y → soustrait 1 au contenu du registre Y. Ø Mode d’adressage étendu. Ce mode d’adressage est destiné à adresser la mémoire programme dans sa globalité. Il ne s’adresse qu’aux instructions de saut ou d'appel de sous programme. Il nécessite 2 octets : 4 bits pour le code instruction et 12 bits pour l’adresse. Exemple : JP 0C2A → Charge le compteur programme avec l’adresse hexadécimale 0C2A afin de faire un saut. PADIOLLEAU JEAN-LUC MICROCONTRÔLEUR ST62E65 Ø Mode d’adressage relatif court. Ce mode d’adressage est réservé pour les instructions de branchement conditionnel. L’instruction de branchement opérant en adressage relatif court fait appel à un format de un octets seulement. Les 3 derniers bits détermine le code opératoire qui spécifie le type de branchement en même temps que le test correspondant. Les 7 premiers bits spécifie la valeur du déplacement qui peut être positif ou négatif (de -16 à +15 par rapport à la valeur du PC à la fin du traitement de l’instruction). Exemple : JRZ -12 → Effectue un branchement de 12 octets en arrière dans la mémoire programme si le bit indicateur “Z” est à 1. Ø Mode d’adressage relatif long Ce mode d’adressage est toujours réservé aux 2 opérations de test avec branchement conditionnel (JRS et JRR). Ces instructions sont codées sur 3 octets, le premier détermine le code opératoire ainsi que le n° du bit à tester, le 2e spécifie la mémoire à tester et le 3e octet donne la valeur signée du déplacement (de -128 à +127). Exemple : JRS 3,A,+9 → Effectue un branchement de 9 octets en avant dans la mémoire programme si le bit de rang 3 de l’accumulateur est à 1. Ø Mode d’adressage indexé ou indirect. Ce mode d’adressage s’applique aux registres d’index X et Y. Ces derniers contiennent une adresse mémoire dans laquelle est placée l’opérande. Une telle instruction est codée sur 1 octet : le premier bit spécifie le registre d’index, les 7 derniers le code de l’opération. On peut accéder en un temps record à une suite de donnée placée en mémoire. ADD A,(X) → Additionne à l’accumulateur le contenu de Exemple : l'adresse pointée par X. 7- EDITION ET ASSEMBLAGE D’UN PROGRAMME. La saisie d’un programme (en assembleur) se fait grâce à éditeur de texte ayant de préférence une indication ligne colonne et l’auto-indentation. On peut utiliser celui du MS-DOS : “EDIT.COM”. L’enregistrement se fait généralement avec l’extension “.asm” ou “.st6”. PAGE B-5 STAGE NOVEMBRE 2000 MICROCONTRÔLEUR ST62E65 SGS Thomson fournit gratuitement un logiciel d’assemblage fonctionnant sous DOS “AST6.EXE”. La ligne de commande à saisir est : AST6 Nom_de_Fichier.asm -L -S L’option -L permet de généré un fichier listing et l’option -S permet de fournir un fichier de symboles définissant les équivalences d’adresses des registres. La notation des nombres (codé sur 8 bits pour les données et 12 bits pour les adresses) peut se faire en binaire (b), en hexadécimal (h) ou en décimal. Exemple : 110 en décimal s’écrit 110 en base 10, 6Eh en hexadécimal et 01101110b en binaire. L’écriture de programme est constituée d’instructions supplémentaires appelées “directives d’assemblages” servant à faciliter l’utilisation du langages assembleur mais n’ayant aucune traduction en langage machine. Les directives d’assemblages sont décalées d’au moins un espace du bord gauche de la zone d’édition et sont précédées d’un point. Celles les plus couramment employées sont les suivantes : DIRECTIVE .TITLE .VERS .ROMSIZE .INPUT .EQU .DEF .ORG .BYTE .WORD .ASCII DÉSIGNATION Indique le titre du projet de programmation Indique la version du ST6 utilisé Indique la taille de la mémoire programme en Ko Permet d’inclure un autre fichier assembleur Permet de définr une variable Permet de définir une constante Permet d’indiquer l’adresse de l’instruction suivante Permet de placer une suite d’octets en mémoire EPROM Permet de plcaer un suite de mots de 16 bits en EPROM Permet de placer une suite symboles ascii en EPROM 8- CARACTÉRISTIQUES ÉLECTRIQUES. Paramètre Tension d’alimentation Fréquence de l’oscillateur Tension de programmation de l’EPROM Température de fonctionnement PADIOLLEAU JEAN-LUC Symb. Min Valeur Typ. 3 5 VDD Fosc 0 VPP - - TA -40 - Max 6 8 Unité V MHz V 85 °C Largeur d’impulsion du Reset Cycles écriture / effacement EEPROM Durée d’effacement de l’EPROM aux UV Puissance d’effacement aux UV TWR 100 - - 300 000 - - 15 - - 12 000 - - ns Cycles 20 mn µW/cm 2 9- REGISTRES DES PÉRIPHÉRIQUES. ADRESSE 0C0h 0C1h 0C2h 0C4h 0C5h 0C6h 0C8h* 0C9h 0CAh et 0CBh 0CCh 0CDh 0CEh 0D0h 0D1h 0D2h 0D3h 0D4h 0D5h 0D6h 0D7h 0D8h 0D9h 0DAh 0DBh 0DCh* 0DDh 0DEh et 0DFh 0E0h NOM DRA DRB DRC DDRA DDRB DDRC IOR DRWR ORA ORB ORC ADR ADCR PSC TCR TSCR ARMC ARSC0 ARSC1 WDR ARRC ARCP ARLR OSCR MISCR SPIDSR DESCRIPTION Registre de donnée du port A Registre de donnée du port B Registre de donnée du port C Registre de direction du port A Registre de direction du port B Registre de direction du port C Registre d’option des interruptions masquables Registre de fenêtre de donnée en EPROM Réservés Registre d’option du port A Registre d’option du port B Registre d’option du port C Registre de donnée du CAN Registre de contrôle du CAN Registre de prédivision du Timer Registre de comptage du Timer Registre de contrôle et de status du Timer Registre de mode du AR Timer Registre n°0 de contrôle et de status du AR Timer Registre n°1 de contrôle et de status du AR Timer Registre du chien de garde Registre de capture / rechargement du AR Timer Registre de comparaison du AR Timer Registre de chargement du ARTimer Registre de contrôle de l’oscillateur Registre de contrôle varié Réservés Registre de donnée du SPI PAGE B-6 STAGE NOVEMBRE 2000 0E1h 0E2h 0E3h à 0E7h 0E8h* 0EAh 0EBh à 0FEh SPIDIV SPIMOD DRBR EECTL MICROCONTRÔLEUR ST62E65 Registre de division du SPI Registre de contrôle et de mode du SPI Réservés Registre de sélection de pages RAM / EEPROM Registre de contrôle de l’EEPROM Réservé * Accessible uniquement en lecture PADIOLLEAU JEAN-LUC PAGE B-7