Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 19

Les Interruptions Matérielles et Logicielles

du 68HC11

Les interruptions : Introduction

Les interruptions sont des événements qui provoquent l’arrêt d’un programme en
cours de traitement et le passage à un autre programme.

Les domaines d’utilisation d’un processus d’interruption sont assez vastes, nous
retiendrons par exemple les interruptions de programme (instruction ou adresse
incorrecte, division par zéro…) ; les interruptions d’entrée-sortie (besoin d’échange
d’informations entre le micro et les périphériques (clavier, écran de visualisation,
capteurs…).

1
NOTION DE PILE

A la réception d’une demande d’interruption, le contenu des


registres internes du micro est préservé dans des emplacements
mémoire appelés pile.

Après l’exécution du programme d’interruption, il y aura


restitution du contenu des registres. C’est-à-dire transfert des
données des emplacements mémoire vers les registres internes.

2
STRUCTURE DE LA PILE :

Une pile est donc une zone mémoire utilisée pour stocker temporairement une ou
plusieurs informations. Elle est quelquefois appelée LIFO (Last In, First Out ). Cette
appellation est justifiée par le fait que le dernier événement stocké dans la pile sera le
premier ressortie.

3
RÉALISATION D’UNE PILE
Deux techniques sont utilisées pur réaliser une pile : la pile en matériel ou la pile en logiciel.
 Le pile en matériel :

Est constituer par un ensemble de registres internes au micro. L’avantage est bien sûr une grande
rapidité dans l’utilisation des ces registre, le désavantage ets leur capacité limitée.
 La pile dite programmée :

Elle consiste simplement en une zone réservée dans la mémoire vive du système la position de
cette pile dans la mémoire est choisie par le programmeur. Pour définir l’adresse de la pile, il
existe à l’intérieur du micro un compteur spécial appelé pointeur de pile (stack pointer : SP).

dans tout programme utilisant la pile, ou prévoyant une interruption, il faut commencer par
initialiser le pointeur de pile : indiquer l’adresse du sommet de la pile. Lors d’une opération de
chargement, il y a transfert du données vers la pile puis décrémentation de SP ( il se déplace
4
vers les adresses décroissantes).
DIFFÉRENTS TYPES D’INTERRUPTION :
Interruptions prioritaires :

Il existe dans certains micro, une entrée d’interruption prioritaire. Dés qu’une
demande d’interruption est faite sur cette borne, l’unité de commande termine
d’exécuter son instruction en cours, puis automatiquement transfert dans la pile les
information à sauvegarder.

5
INTERRUPTION MASQUABLE PAR
PROGRAMME :

Tous les micro possèdent une entrée d’interruption masquable. Cette interruption
n’aura lieu que si une bascule interne au micro, positionnable par des instructions.
Cette bascule porte le nom de masque d’interruption et peut se trouver dans le
registre d’état ou indépendant de ce registre.

6
INTERRUPTION LOGICIELLE :

Parmi les instructions dont sont dotées les microprocesseurs, certaines d’entre elles
provoquent une interruption. Ces instructions par programme sont, en général, non
masquables. Le retour au programme initial s’effectue par l’instruction RTI.

7
INTERRUPTIONS VECTORISÉES :

On dit que les interruptions sont vectorisées. Lorsqu’une interruption provoque un


branchement à l’adresse du programme de traitement de celle-ci. Il s’agit dans ce cas
d’un adressage indirect. Par conséquent, la vectorisation consiste à donner les adresses
qui apparaissent sur le bus d’adresse après chaque type d’interruption.

8
PROPRIÉTÉS DES INTERRUPTIONS :

Pour illustrer ce principe, imaginons q’une interruption soit en cours de traitement


quand une autre interruption, d’un ordre plus urgent survient. La première interruption
sera alors stoppée pour faire place à la seconde. Celle-ci traitée, en reviendra à la
première interruption, puis enfin au programme normal.

9
MODE DE TRANSFERT PAR INTERRUPTION
Une ligne spéciale dite d’interruption est mise en œuvre .le périphérique d’entrée/sortie
prendra l’initiative de demande de l’interruption. Le processeur doit alors accepter
l’interruption au bon moment, l’identifier puis la traiter.

Mémoires

Microprocesseur

INT
Interface d’E/S
C’est une ligne physique
existante

Mode de transfert par interruption


Programme Principal

Demande d’interruption

Reprise du programme
Programme interrompu interrompu

Fin

transfert en mode interruptible


DÉROULEMENT D'UNE INTERRUPTION.
En présence d'une interruption :
• Le μC termine l'exécution de l'instruction en cours.
• Il sauvegarde ensuite le contexte dans la pile, c'est à dire qu'il met dans la pile le contenu
de tous registres dans l'ordre suivant :
Il ne faut pas oublier d'initialiser le pointeur de pile SP sur
une adresse en RAM ou le micro pourra sauvegarder ses
registres. Exemple:
SP pointe le bas de la zone des256 octets de RAM interne:
LDS #$00FF
Il faudra initialiser le vecteur d'interruption en écrivant à
l'adresse du vecteur l'adresse du programme correspondant.
Exemple:
SPIRQ est l'étiquette du sous programme à exécuter si un
niveau bas apparaît sur l'entrée IRQ.
ORG $FFF2
FDB SPIRQ

A chaque interruption il y aura 9


octets à sauvegardés dans la RAM.
 Il met le bit I ou X du CCR a 1 pour empêcher la prise en compte d'une autre
interruption.
• Il charge le compteur programme PC avec le vecteur correspondant à l'interruption.
• Il exécute le programme d'interruption.
• Lorsqu'il rencontre l'instruction RTI, il restitue le contexte en dépilant le contenu de tous les
registres.
• Il reprend le programme où il avait été interrompu.
Les Interruptions du 68HC11

Le μC dispose de 20 sources d'interruptions.


• Les Interruptions externes, action sur les broches IRQ et XIRQ.
• L'instruction SWI (SOFTWARE INTERRUPT). Elle sert en général à un programme
moniteur pour visualiser les registres du μC. Elle ne peut être inhibée.
• 14 interruptions générées par les fonctionnalités internes (SPI, SCI et TIMER), elles
peuvent être inhibées par le bit I du CCR.
• 3 Interruptions d'initialisation POR, COP et RESET.
• 1 Interruption de code instruction illégal.
L'interruption Défaut d’horloge.
Un circuit interne au μC surveille le bon fonctionnement du circuit d’horloge. En cas
de fréquence insuffisante, une interruption « Clock Monitor Fail » est générée. Le bit
CME (Clock Monitor Enable) du registre OPTION permet de masquer cette
interruption.
L'interruption COP : Computer Operating Properly.
Ce « chien de garde » n’est autre qu’un compteur devant être réinitialisé régulièrement
par logiciel. En cas d’initialisation non réalisée à temps, une interruption « COP
Watchdog Time-Out » est générée. Le bit NOCOP du registre CONFIG permet de
masquer cette interruption.
RESET externe

L'interruption externe XIRQ.


Elle est la plus prioritaire des interruptions.
Le bit X du registre CCR permet le masquage de cette interruption.
L'interruption externe IRQ.
Elle peut être sensible à un front descendant ou à un niveau bas suivant la valeur du bit
IRQE du registre OPTION :
- Si le bit IRQE = 0 alors sensible à un niveau bas.
- Si le bit IRQE = 1 alors sensible à un front descendant.
Le bit I du registre CCR permet le masquage de cette interruption.

L'interruption Illegal Opcode.


Lors de la lecture d’un code opératoire incorrect (logiciel fonctionnant incorrectement), une
interruption « Illegal Opcode » est générée.

Instruction STOP
Lorsqu’elle est autorisée (S=0) arr^rte l’horloge interne et par conséquent tout programme en
cours d’exécution
Si S=1, elle sera considérée comme une instruction de type NOP
Instruction WAI
Cette instruction lorsqu’elle est programmée sauvegarde en premier lieu les registres
internes du 68HC11 (A, B, X, Y, CCR) dans la pile puis elle se met en attente d’une
interruption de type IRQ, XIRQ ou une interruption interne.
VECTEURS des INTERRUPTIONS
Exemple : Initialisation de IRQ en mode BOOT:
ORG $FFF2
FDB ETIQ-SPIRQ
DIRECTIVES ASSEMBLEUR
ORG : Fixe l'origine des adresses pour l'assemblage.
Ex: ORG $B600
FCB : Réserve une adresse mémoire et l'initialise à une valeur.
Ex : ORG $xxxx
FCB $7E ;La valeur $7E sera écrite à l'adresse $xxxx
FDB : Réserve deux adresses (un mot ) et les initialise.
Ex : ORG $xxxx
FDB ETIQ ;La valeur de ETIQ est écrite à l'adresse $xxxx. Comme ETIQ est une
adresse sur 16 bits son MSB sera mis en $xxxx et son LSB en $xxxx + 1

FCC : Réserve plusieurs adresses et les initialise avec le code ASCII des caractères du texte.
Ex : ORG $xxxx
FCC "TEXTE’’ Le code ASCII de T sera mis à l'adresse $xxxx puis celle de E en
$xxxx +1
RMB : Réserve des adresses mémoires mais sans les initialiser à une valeur particulière.
Ex: ORG $xxxx
RMB $06 Les 6 cases mémoires à partir de l'adresse $xxxx sont réservées.

EQU : Affecte une valeur permanente à une étiquette.


Ex: PORTB EQU $04
TD 4
Exercice 1:
On désire utiliser la ligne d’interruption IRQ pour effectuer l’opération d’addition entre deux
éléments logés aux adresses respectives n1 ($0200) et n2 ($0201). Le résultat sera stocké à
l’adresse ($0202) .

Exercice 2:
En utilisant les lignes d’interruptions IRQ et XIRQ, établir un programme qui incrémente le
contenu de l’adresse ($0600) à l’activation de la ligne IRQ et le décrémente à l’activation de
la ligne XIRQ.

Vous aimerez peut-être aussi