INSFP SBA
Transcription
INSFP SBA
INSFP SBA MICROPROCESSUER MOTOROLA 6809 CHAP:04 LES INTERRUPTIONS DU 6809 DE MOTOROLA I. DEFINITION Une interruption est une procédure qui permet de suspendre l'exécution d'un programme au profit d'un autre, avec la possibilité de reprendre l'exécution du programme initial là où il avait été suspendu. II. INTERRUPTIONS "MATERIELLES" Le microprocesseur est capable de répondre à des sollicitations extérieures. Ainsi il peut traiter des informations en "temps réel". Pour cela, le microprocesseur est "couplé" au monde extérieur par des lignes sur lesquelles s'effectue, de façon indéterministe, un échange de messages sous forme de signaux logiques ! A partir des sollicitations extérieures, le microprocesseur doit changer "d'état" en fonction des priorités relatives de l'opération en cours et de celle qui est demandée. Selon le cas, il interrompt ou non le déroulement "normal" du programme. Contrainte : Si la demande est prise en compte, le microprocesseur doit être capable de traiter rapidement cette demande externe. Le microprocesseur 6809 possède pour cela quatre lignes, baptisées "entrée d'interruption" matérielles qui sont par ordre de priorité : RESET : Ré-initialisation du microprocesseur. NMI : Non Masquable Interrupt.(Interruption non masquable) FIRQ : FastInterruptRequest. (Requête d'interruption rapide) IRQ : InterruptRequest.(Requête d'interruption) Ces entrées sont actives sous un niveau "bas". Mr : HALAILI.MED Page 1 INSFP SBA MICROPROCESSUER MOTOROLA 6809 II.1.ROLE DU REGISTRE DE CODE CONDITION : Registre CCR A. Fonction du flag I :(CCRb4) :IRQ. Masque concernant l'interruption IRQ. Tableau Etat du flag I IRQ I=1 Interdit I=0 Autorisée Lorsque ce flag est mis à 1, le microprocesseur ne prend pas en compte les demandes d'interruption arrivant sur la ligne IRQ. Avec ce type d'interruption, le contexte total du microprocesseur (12 octets) est sauvegardé sur la pile S. B. Fonction du flag F :(CCRb6) : FIRQ. Masque concernant l'interruption FIRQ. Tableau Etat du flag F FIRQ F=1 Interdit F=0 Autorisée Lorsque ce flag est mis à 1, le microprocesseur ne prend pas en compte les demandes d'interruption arrivant sur la ligne FIRQ. Ici, le contexte partiel du microprocesseur (3 octets) est sauvegardé sur la pile S. (seuls les contenus des registres PC et CCR sont concernés.) Méthode de changement de l'état des flags I et F. On peut forcer l'état des deux bits à l'aide des instructions suivantes : ANDCC d'une part et ORCC d'autre part ! Mr : HALAILI.MED Page 2 INSFP SBA MICROPROCESSUER MOTOROLA 6809 Tableau Instruction Etat du flag Interruption ANDCC #$EF I=CCRb4=0 Autorisée ORCC #$10 I=CCRb4=1 Interdit ANDCC #$BF F=CCRb6=0 Autorisée ORCC #$40 F=CCRb6=1 Interdit A. Fonction du flag E :(CCRb7) : NMI Ce flag est positionné par le microprocesseur afin d'indiquer letype de sauvegarde devant être réalisée (partielle ou complète). Il fait office en quelque sorte de mémoire interne. Tableau Etat du flag F Etat de la sauvegarde E=1 complète E=0 partielle Ce flag est utilisé (sous forme de test), systématiquement lors de l'instruction RTI, par le microprocesseur, pour déterminer quelle action à mener afin de revenir proprement dans le programme suspendu (nombre de registres à dépilés). II.2.UTILISATION DES INTERRUPTIONS MATERIELLES : Chaque vecteur d’interruption occupe 2 cases mémoire consécutives. priorité Interruption Mr : HALAILI.MED Vecteur 1 RESET $FFFE - $FFFF 2 NMI $FFFC - $FFFD 3 SWI $FFFA - $FFFB 4 IRQ $FFF8 - $FFF9 5 FIRQ $FFF6 - $FFF7 6 SWI 2 $FFF4 - $FFF5 6 SWI 3 $FFF2 - $FFF3 Page 3 INSFP SBA MICROPROCESSUER MOTOROLA 6809 Ces adresses se trouvent dans la zone occupée par le moniteur. L’utilisateur ne pourra donc pas écrire dans ces vecteurs. Ils sont translatés (déplacés) aux adresses suivantes : Interruption Translation MP MC6809 Translation MP MC6809B NMI $0F60 -$0F61 $3FFC -$3FFD SWI 3 $0F62 -$0F63 $3FF2 -$3FF3 SWI 2 $0F64 -$0F65 $3FF4 -$3FF5 FIRQ $0F66 -$0F67 $3FF6 -$3FF7 IRQ $0F68 -$0F69 $3FF8-$3FF9 L’utilisateur devra charger ces vecteurs par l’adresse de début du sous-programme d’interruption. EXEMPLE 01 : Supposons qu’on veuille mettre un sous-programme d’interruption NMI à l’adresse $0400. Il faudra alors procéder de la façon suivante : LDX #$0400 STX $0F60 (Ecriture de 04 à l’adresse 0F60 et de 00 à l’adresse 0F61). Le microprocesseur étant en train d’effectuer un programme quelconque, si on appuie sur la touche NMI, il ira se brancher à l’adresse $0400 et exécutera le sousprogramme d’interruption qu’on aura mis auparavant à cette adresse. Ce programme d’interruption doit se terminer par l’instruction RTI. Cette interruption étant non masquable, on n’a pas à se préoccuper, ici, de son autorisation ni de l’état du masque des interruptions. Par contre, si on utilise l’interruption masquable, il faudra, dans le programme, les autoriser ; si non le microprocesseur n’en tiendra pas compte. Mr : HALAILI.MED Page 4 INSFP SBA MICROPROCESSUER MOTOROLA 6809 EXEMPLE 02 ;$FFFC db $80 ;$FFFD db $FF debut: $800 lda #$10 adda #$20 sta $0ffd end ORG $80ff debut: $80FF lda #$10 adda #$20 sta $0ffc end III. INTERRUPTIONS "LOGICIELLES" : Hormis les demandes d'interruptions matérielles, il existed'autres causes d'interruption de programme. Ce sont lesinterruptions "soft"(logicielles). Elles se traduisent par des instructions à partentière que l'on place dans les programmes. Remarque :La sauvegarde du contexte est totale. On en dénombre trois, qui sont : SWI (SoftWare Interrupt) SWI2 (SoftWare Interrupt n°2) SWI3 (SoftWareInterrupt n°3) 1. Les interruptions de synchronisation Pour finir, le microprocesseur peut se mettre en attented'évènements extérieurs afin de synchroniser son évolution sur l'apparition de ces derniers. Il y a une "pré-sauvegarde" complète du contexte. Pour cela, on trouve les instructions suivantes : CWAI (attente d'interruption). SYNC (attente de synchronisation). Mr : HALAILI.MED Page 5 INSFP SBA MICROPROCESSUER MOTOROLA 6809 Remarques importantes : Les lignes NMI, FIRQ, IRQ et RESET ainsi que l'instruction SWI positionnent automatiquement le flag CCRb4 à 1 (masquage de l'IRQ). Les lignes NMI, FIRQ et RESET ainsi que l'instruction SWI positionnent automatiquement le flag CCRb6 à 1 (masquage de la FIRQ). Rien n'empêche de repositionner à 0 deces flags si on le souhaite! Les bits I et F étant positionnés à 1 lors de l'exécution d'unprogramme d'interruption, il est possible, néanmoins d'autoriserla prise en compte de nouvelles interruptions en lesrepositionnant à O. Exemple : Mr : HALAILI.MED Page 6 INSFP SBA MICROPROCESSUER MOTOROLA 6809 2. Tableau récapitulatif : Niveaux de priorité Vecteur Nature de l'interruption Entrée Sauvegarde sur la pile Masquage réalisée 1 RESET $FFFE $FFFF Initialisation Aucune NMI I=F=1 2 NMI $FFFC $FFFD Non masquable Totale E=1 I=F=1 $FFFA $FFFB Logicielle Totale E=1 I=F=1 3 Instruction SWI 4 FIRQ $FFF6 $FFF7 Rapide et masquable Partielle E=0 I=1 5 IRQ $FFF8 $FFF9 Masquable Totale E=1 Aucun 6 SWI2 $FFF4 $FFF5 Logicielle Totale E=1 Aucun 6 SWI3 $FFF2 $FFF3 Logicielle Totale E=1 Aucun Mr : HALAILI.MED Page 7 INSFP SBA MICROPROCESSUER MOTOROLA 6809 3. Instructions d'interruption : Instruction Interruption concernée Fonction Sauvegarde Dépilement CWAI NMI, FIRQ et IRQ Attente d'interruption Totale E=1 SYNC NMI, FIRQ et IRQ Synchronisation Aucune externe RTI Mr : HALAILI.MED Total si E=1 Partiel si E=0 Page 8