Академический Документы
Профессиональный Документы
Культура Документы
Quand un organe d’entrée-sortie a besoin d’un service, il envoie une impulsion sur la
ligne d’interruption du microprocesseur. Ce dernier termine l’instruction en cours, ensuite
il se branche à un sous-programme d’interruption. Ceci entraîne la sauvegarde de l’état
partiel ou total du µp.
Pour faciliter la compréhension d’une interruption d’un µp, imaginez à titre
d’exemple qu’au cours du travail, vous êtes appelé au téléphone ; vous répondez au
téléphone en consultant éventuellement d’autres dossiers, puis vous revenez reprendre
votre tâche exactement au point où vous l’aviez laissée.
Une interruption peut survenir à n’importe quel instant par rapport au déroulement
du programme. On dit qu’elle asynchrone au programme.
Interruptions matérielles
Le 6809 possède trois interruptions matérielles exécutables (NMI, IRQ,FIRQ)
pendant le déroulement d’un programme plus une entrée d’initialisation (RESET) qui est
traitée comme l’interruption la plus prioritaire du système.
Reset
L’interruption NMI ne peut pas être masquée par le programmeur. Elle est employée
en cas d’urgence comme par exemple, une défaillance d’alimentation (sauvegarde dans une
mémoire CMOS alimentée par pile). Cette interruption est la plus prioritaire des
interruptions matérielles du 6809. Un front descendant sur l’entrée NMI provoque une
séquence d’interruption non masquable. La figure n° montre les différentes phases de cette
séquence.
L’adresse de départ du sous-programme de traitement de NMI doit être logé aux adresses
mémoires FFFC :FFFD (octet haut dans FFFC, octet bas dans FFFD)
Lors d’une reconnaissance de NMI, l’état complet du µp est sauvegardé dans la pile
système à l’exception du pointeur S. L’instruction de retour d’interruption (RTI) doit être
exécutée à la fin du sous-programme de traitement. Cette instruction extrait le registre
NMI ↓
1→E
Espace Contenu de
1→ I
Mémoire S
1→F
CC ssss - C
A ssss - B
0 → BA
1 → BS B ssss -A
DP ssss - 9
X-haut ssss - 8
X-bas ssss - 7
Recherche du vecteur NMI
contenu dans FFFD : FFFC Y-haut ssss - 6
Y-bas ssss - 5
U-haut ssss - 4
U-bas ssss - 3
0 → BS
PC-haut ssss - 2
PC-bas ssss - 1
ssss
Exécution du sous programme de
NMI
L’interruption IRQ est une interruption masquable. Quand une IRQ survient et que le bit I
est à zéro (interruption IRQ non massquée), tous les registres internes (excepté S) sont
empilés dans la pile système. L’adresse de départ du sous-programme de traitement de IRQ
est cherchée aux emplacements mémoires FFF8 :FFF9 (octet haut dans FFF8, octet bas
dans FFF9).
Le sous-programme de traitement se termine par l’instruction RTI qui dépile le registre
d’état de la pile système. Si le bit E est égal à 1, l’état complet du µp est alors dépilé; dans
le cas contraire, seuls le PC et le registre d’état sont dépilés.
La figure n° montre le séquencement des opérations internes du 6809 lors d’une détection
d’un niveau bas sur l’entrée IRQ.
I=0
oui
Continue l’exécution
1→E du programme en
cours
1→ I CC ssss - C
A ssss - B
B ssss -A
DP ssss - 9
0 → BA
1 → BS X-haut ssss - 8
X-bas ssss - 7
Y-haut ssss - 6
Recherche du vecteur IRQ Y-bas ssss - 5
contenu dans FFF8 : FFF9 U-haut ssss - 4
U-bas ssss - 3
PC-haut ssss - 2
0 → BS PC-bas ssss - 1
ssss
Exécution du sous-programme de
IRQ
Le fonctionnement de l’interruption FIRQ est identique à celui de IRQ sauf qu’elle plus
rapide car elle ne sauvegarde que 3 octets : PC (deux octets) et CCR (1 octet) au lieu de 12.
D’où un gain de temps de neuf cycles d’horloge (1 cycle d’horloge par cycle sauvegardé).
L’interruption FIRQ est plus prioritaire que IRQ. Quand une FIRQ survient et que le bit F
est à zéro (interruption FIRQ non massquée), seuls PC et CCR sont empilés dans la pile
système. L’adresse de départ du sous-programme de traitement de FIRQ est cherchée aux
emplacements mémoires FFF6 :FFF7 (octet haut dans FFF6, octet bas dans FFF7).
L’instruction RTI restaure le registre d’état et le PC du programme interrompu.
La figure n° montre le séquencement des opérations internes du 6809 lors d’une détection
d’un niveau bas sur l’entrée FIRQ.
F=0
oui
Continue l’exécution
0→E du programme en
cours
1→ I 1→ F CC ssss - 3
PC-haut ssss - 2
PC-bas ssss - 1
ssss
0 → BA
1 → BS
0 → BS
Exécution du sous-programme de
FIRQ
Interruptions logicielles
Mise à part les interruptions matérielles, le 6809 possède des interruptions
logicielles qui viennent du programme lui même. Ces interruptions servent à arrêter le
programme, exécuter le programme instruction par instruction, lecture ou écriture sur un
organe périphérique ………
Le 6809 possède 3 interruptions logicielles : SWI, SWI2, SWI3
L’interruption SWI provoque l’arrêt due l’exécution d’un programme. La figure n° montre
le séquencement des opérations internes du 6809 lors de l’exécution de l’instruction SWI.
1→E
Espace Contenu de
1→ I
1→F Mémoire S
CC ssss - C
A ssss - B
0 → BA
1 → BS B ssss -A
DP ssss - 9
X-haut ssss - 8
X-bas ssss - 7
Recherche du vecteur NMI
contenu dans FFFA : FFFB Y-haut ssss - 6
Y-bas ssss - 5
U-haut ssss - 4
U-bas ssss - 3
0 → BS
PC-haut ssss - 2
PC-bas ssss - 1
ssss
Exécution du sous programme de
SWI
Les interruptions SWI2/SWI3 sont les moins prioritaires. Elles ont un fonctionnement
identique à SWI. La figure n° montre le séquencement des opérations internes du 6809 lors
de l’exécution de l’instruction SWI.
SWI2 SWI3
1→E
Espace Contenu de
1→ I
Mémoire S
1→F
CC ssss - C
A ssss - B
0 → BA
1 → BS B ssss -A
DP ssss - 9
X-haut ssss - 8
X-bas ssss - 7
Y-haut ssss - 6
Recherche du Recherche du
vecteur SWI2 vecteur SWI3
Y-bas ssss - 5
contenu dans contenu dans U-haut ssss - 4
FFF5 : FFF4 FFF3 : FFF2
U-bas ssss - 3
PC-haut ssss - 2
PC-bas ssss - 1
ssss
0 → BS