Exercice : Fenêtre de données en RAM On a pré calculé un table de
Transcription
Exercice : Fenêtre de données en RAM On a pré calculé un table de
Exercice : Fenêtre de données en RAM On a pré calculé un table de sinus de 64 valeurs reparties de 0 à π . On souhaite qu'elle soit accessible en 4 mémoire de données. - Proposer un emplacement de cette table en mémoire programme. - Indiquer la valeur du registre DRWR pour accéder à cette table. π π - Indiquer l'adresse en RAM des valeurs de 0 ; ; 4 6 Réponses : On peut choisir la dernière page de l'espace utilisateur, 0f9fh soit l'adresse 3999 qui se trouve dans la 62ème page. La page choisie peut donc être la 61ème. Il faut donc donner la valeur 61 au registre DRWR : DRWR = 03dh π 0 se trouve à l'adresse 040h (première adresse de la fenêtre de donnée en RAM) à l'adresse 07fh 4 π est la 43ème donnée soit l'adresse 01 101011 soit 06bh. 6 Exercice : Registres des ports d'E/S Compléter ce tableau à partir du schéma précédent DDRX ORX DRX Description Entrée avec polarisation, sans interruption (état à l'initialisation) Entrée sans polarisation Entrée avec polarisation et interruption Entrée analogique Sortie à drain ouvert Sortie Push-pull Exercice : Configuration des registres DDRX, DRX, ORX. On souhaite configurer les ports d’entrées sorties du ST6260 de la façon suivante : Port A : PA0 à PA3 Sorties Push Pull. Port B : PB0 à PB2: entrées sans polarisation. Port C : PC2 entrée analogique PC3 entrée avec polarisation et interruption. - Donner la valeur des registres DRX ; ORX ; DDRX correspondant à cette configuration. - Proposer un algorithme de programmation de ces registres. DDRA = 0000 1111b = 0Fh ; ORA = 0000 1111b = 0Fh DDRB = 0000 0000b = 00h ; ORB = 0000 0000b = 00h ; DRB = 0000 0111b = 07h DDRC = 0000 0000b = 00h ; ORC = 0000 1100b = 0Ch ; DRC = 0000 0100b = 08h Port A : DDRA puis ORA Port B : DDRB puis ORB puis DRB Port C : DDRC = 00h puis DRC = 08h puis ORC = 0Ch ST62 : Exercices pa LPR VOILLAUME Exercice : Temporisateur On souhaite générer des interruptions périodiques (passage à zéro du temporisateur). Quelles sont les fréquences possibles ? f osc ÷ 1; 2 ; 4;8 ;16 ;32 ; 64 ;128 = 12 × 256 Le Timer 1 possède un prédiviseur par 1 ; 2 ; 4 ; 8 ; 16 ; 32 ; 64 ; 128. C’est un compteur 8 bits Quelles est la longueur maximum de l’impulsion que l’on peut générer ? T = 0,768 ms Quelle est la résolution minimum de la mesure d’une impulsion ? R = 1,5 µs Exercice : Configuration du temporisateur à rechargement automatique. On souhaite générer un signal PWM de fréquence 5 kHz avec un ST6260 cadencé à 8 MHz. - Donner la valeur des registres et proposer un organigramme d'utilisation du temporisateur. Réponse : Il est nécessaire de choisir ARRC le plus petit possible afin d'avoir la meilleure résolution sur le rapport cyclique. Début/fin Dans un premier temps on choisit ARRC = 0 ce qui nous donne la fréquence du compteur ARTC. diviseur = 8.10 6 =6,3 255.5.10 3 On doit donc choisir un ratio entier supérieur parmi les combinaisons du prédiviseur. Soit 8. Cela nous donne les valeurs de PS2 ; PS1 ; PS0 (0 0 1) L'horloge choisie sera l'horloge de l'oscillateur soit CC1 = 0 ; CC0 = 0 Soit la valeur du registre ARSC1 = 01100000b On choisit le mode Rechargement Automatique, toutes les interruptions seront interdites et le temporisateur bloqué pour le début. La sortie PWM sera activée. Soit ARMC = 00100000b Configurer PB7 en sortie ARMC <- 00100000b ARSC1 <- 01100000b ARRC <- 37h Reste à choisir la valeur de ARRC. ARTC est cadencé à 1 MHz une période dure donc 200 coups soit ARTC = 255 –200 = 55 = 37h La valeur du rapport cyclique sera placée dans ARCP avec ARCP ≥ 55 et ARCP − ARLR α= 255 − ARLR Activer TCLD ARCP <- ???? ST62 : Exercices pa LPR VOILLAUME Activer TEN La résolution de la MLI est de 0,5% Une foi le temporisateur activé, il n'y a que le registre ARCP à modifier afin de donner une nouvelle valeur de α. Le Timer à rechargement automatique (ARTIMER) est capable de générer un signal carré de rapport cyclique variable. α peut prendre 256 valeurs. Quelle est la fréquence maximale du signal ? F = 31,25 kHz Exercice : CAN Donner l’algorithme de l’utilisation du CAN sans interruption. Activer le CAN (forcer à 1 le bit PDS de ADCR) Lancer la conversion (forcer à 1 le bit STA de ADCR) non Conversion terminée ? (eoc de ADCR = 1 ?) Oui Lire le résultat (ADR) ST62 : Exercices pa LPR VOILLAUME Exercice : Chien de garde. Combien de cycle mini et maxi peut-on régler avec le chien de garde ? De 12×256 à 12×64×256 Exercice : Horloges Quelle est la durée d’un cycle du CPU du ST62 (fosc = 8 MHz) ? T = 1,625 µs Une instruction du cpu dure en général 4 cycles Quelle est la durée moyenne d’une instruction ? Tinstruction = 6,5 µs Combien le CPU effectue-t-il d’instructions par seconde ? N = 0,15 MIPS Exercice : Registre IOR. A partir du schéma des interruptions : Quelles sont les interruptions que l’on peut bloquer avec le bit GEN ? - Toutes les interruptions sauf l’entrée NMI A quoi correspond PBE ? - Pour masquer les interruptions du port A, B ou C (registre ORX) A quoi sert le bit LES ? - LES = 0 Æ déclenchement sur front descendant - LES = 1 Æ déclenchement sur le niveau logique 0 A quoi sert le bit ESB ? - ESB = 0 Æ déclenchement sur front descendant - ESB = 1 Æ déclenchement sur front montant ST62 : Exercices pa LPR VOILLAUME Exercice : Organigramme des interruptions. Dans l’organigramme : - repasser en bleu le fonctionnement normal du CPU, - repasser en rouge la demande d’interruption, - repasser en vert la sortie d’interruption. - Que se passe-t-il si le CPU reçoit une instruction RETI alors qu’il est en mode normal ? Le CPU continu son travail (exécution de l'instruction suivante). - Que se passe-t-il si la pile est vide bien que le CPU soit en mode NMI (quand cela peut-il se produire ?) ? Le CPU sort du mode NMI et exécute l'instruction suivante. Cela se produit lors du RESET (Le CPU bascule en mode NMI et vide la pile). ST62 : Exercices pa LPR VOILLAUME Exercice ALU du ST62 : Faire l'inventaire des opérations effectuées par l'ALU du ST62. ET ; Complément ; addition soustraction ; incrémenter ; décrémenter ;Rotation et décalage vers la gauche ; comparer. Exercice : CAN sans interruption. Reprendre l’algorithme de l’utilisation du CAN sans interruption et écrire le programme. .VERS "ST6260" .ROMSIZE 4 .INPUT "6260_REG.ASM" ; ; ; ; le microcontrôleur est un ST6260 La mémoire programme fait 4 ko insertion des déclarations de registre du ST6260 ; Initialisation des vecteurs d’interruption .ORG JP 0ffeh debut .ORG 880h debut LD DDRA, 00000000b LD DRA , 00000001b LD ORA, 00000001b RETI SET NOP PDS, ADCR conv SET STA, attend JRR LD A, : : JP conv ADCR EOC, ADCR ; PA0 en entrée analogique attend ; ; ; ; ; ; activation du cna au moins une instruction avant de lancer la conversion Lancer la conversion Attendre la fin de la conversion lire le résultat de la conversion ; Exploitation de la conversion Exercice : Temporisation Le langage machine est parfois trop rapide, on est alors obligé d'insérer une boucle de retard permettant de ralentir le programme. L'algorithme est le suivant : ST62 : Exercices pa LPR VOILLAUME V <- 255 V <- V-1 non V=0? Ecrire le programme correspondant à cette boucle Boucle LDI DEC JRNZ V, 255 V boucle Exprimer le temps de cette boucle en fonction de la valeur initiale du registre V. En déduire les temps mini et maxi de ce retard. Le ST6260 est cadencé à 8 MHz. Mini : 10 cycles Æ 10 × 12 /8000000 secondes Maxi : (4 + 6×256) Æ (10 + 6×256)×12/8000000 On peut avoir besoin de retards plus importants, dans ce cas, il faut imbriquer deux boucles. Ecrire l'algorithme et le programme de ces deux boucles imbriquées. ST62 : Exercices pa LPR VOILLAUME W <- 255 V <- 255 V <- V-1 non non V=0? oui W <- W - 1 W=0? oui Bcl2 Bcl1 LDI LDI DEC JRNZ DEC JRNZ W, V, V bcl1 W Bcl2 255 255 ST62 : Exercices pa LPR VOILLAUME Exercice : CAN avec interruption. Ecrire le programme utilisant le CAN avec interruption .VERS "ST6260" .ROMSIZE 4 .INPUT "6260_REG.ASM" .ORG JP .org jp ; Initialisation des vecteurs d’interruption 0ffeh debut 0ff0h int_can .ORG 880h debut LD DDRA, 00000000b LD DRA , 00000001b LD ORA, 00000001b SET PDS, ADCR Set eai, ADCR Set gen, ior RETI NOP conversion conv SET WAIT ; le microcontrôleur est un ST6260 ; La mémoire programme fait 4 ko ; insertion des déclarations de registre du ST6260 ; PA0 en entrée analogique ; ; ; ; activation du cna autorisation des interruptions du can autorisation de toutes les interruptions fin du mode NMI après le RESET ; au moins une instruction avant de lancer la STA, A DCR : Int_can res eai, Ld a, reti ; Lancer la conversion ; Exploitation de la conversion adcr adcr ; masquer les interruptions CNA ; prendre le resultat ST62 : Exercices pa LPR VOILLAUME