Programmation en Langage C sur kit 68332


Sommaire


La gestion des interruptions sur kit 68332

Sur le kit 68332, les demandes d'interruptions des peripheriques arrivent sur les signaux IRQ7\ à IRQ1\.  La demande ne sera acceptée par le CPU32 (processeur) qu'après l'exécution de l'instruction en cours et si le niveau de priorité de la demande est strictement supérieur au masque d'interruption du registre SR. Une interruption de niveau 7 ne peut être masquée: elle sera toujours acceptée par le microprocesseur quelle que soit la valeur du masque d'interruption.

 Lors de la reconnaissance d'interruption, une copie interne du SR est effectuée, le processeur passe en mode superviseur le masque d'interruption est mis au niveau de l'interruption prise en compte (le processeur ne pourra alors être interrompu que par une interruption de niveau supérieur). Le processeur attend le numéro de vecteur du circuit qui vient de l'interrompre en effectuant une lecture:

Si le peripherique ne peut pas fournir de numéro de vecteur, une logique externe doit  activer le signal AVEC\ processeur pour que celui-ci génère en interne un numéro de vecteur: c'est l'auto vectorisation. Sur kit 68332 l'interruption provenant du PTM genere un auto vecteur de niveau 4:

Si aucun des signaux DTACKx\ ou  AVEC\ ne s'activent la logique interne de controle active le signal BERR\ pour débloquer le processeur et que celui-ci génère le vecteur d'interruption parasite.

Lorsque le numéro de vecteur est obtenu, le processeur sauve les registres PC et SR sur la pile superviseur (SSP). La valeur du PC empilée à l'adresse de l'instruction qui aurait été exécutée en l'absence d'interruption. Le processeur recherche alors dans la table des vecteurs  l'adresse du programme de traitement de l'interruption et l'exécute. L'adresse de début de la table des vecteurs d'interruptions est contenue dans le registre VBR (Vecteur Base Register).


Extrait de la TABLE DES VECTEURS

Numéro de vecteur VBR + Offset Utilisation
Déc. Hexa.
0 0 000 Initialisation du SSP après un RESET
- 4 004 Initialisation du PC après un RESET
2 8 008 Erreur bus
3 12 00C Erreur d'adresse
4 16 010 Instruction illégale
5 20 014 Division par zéro
6 24 018 Instruction CHK
7 28 01C Instruction TRAPV
8 32 020 Violation de privilège
9 36 024 Trace 
10 40 028 Émulateur ligne 1010
11 44 02C Émulateur ligne 1111
12-14 48 030 réserve 
15 60 03C Interruption non initialisée 
16-23 64-95 04C-05F réservé
24 96 060  Interruption parasite
26 100 064 Auto-Vecteur d'interruption Niveau 1
26 104 068 Auto-Vecteur d'interruption Niveau 2
27 108 06C Auto-Vecteur d'interruption Niveau 3
28 112 070 Auto-Vecteur d'interruption Niveau 4
29 116 074 Auto-Vecteur d'interruption Niveau 5
30 120 078 Auto-Vecteur d'interruption Niveau 6
31 124 07C Auto-Vecteur d'interruption Niveau 7
32-47 128-191 080-0BF Vecteurs d'instruction TRAP
48-63 192-255 0C0-0FF Réservé 
64-255 256-1023 100-3FF Vecteurs d'interruption utilisateur