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

Documents pareils