Le microcontrôleur MC9S12

Hugues ANGELIS

page 2

 

Les registres du CPU12X

Le cœur du MC9S12XS128 est basé sur le cœur CPU12Xv1 de Freescale. Cette version ne dispose pas d’un double niveau d’exécution (mode User et Superuser), ni des instructions de logique floue.

Il dispose de 2 accumulateurs de 8 bits (les accumulateurs A et B), auxquels on peut accéder en 16 bits, en utilisant l’accumulateur D. Il dispose en outre de 2 registres d’index de 16 bits permettant des déplacements en mémoire (d’une distance maximum de 64Ko), pour des branchements ou pour récupérer des données. Contrairement aux accumulateurs qui peuvent contenir des données ou des adresses, les registres d’index ne contiennent que des déplacements d’adresse.

On trouve naturellement, un pointeur de pile et un compteur ordinal, eux aussi sur 16 bits.

Enfin, le microcontrôleur dispose d’un registre d’état sur 16 bits disposant de 8 flags d’état et de 3 bits de priorité d’interruption :

·           C : Carry / Borrow (retenue)

·           V : oVerflow (débordement du complément à 2)

·           Z : Zero (résultat nul ou comparaison égale)

·           N : Negative (résultat négatif)

·           I : Interrupt disable (masque les interruptions si à 1)

·           H : Half carry (retenue en BCD, c-à-d après 9)

·           X : XIRQ disable (masque l’interruption XIRQ si à 1)

·           S : Stop disable (masque l’instruction STOP si à 1)

·           IPL : Interrupt Priority Level (niveau de priorité de l’interruption en cours, 000 si pas d’interruption, 111 niveau le plus prioritaire)

Les interruptions du CPU12X

Lors d’une interruption, le CPU12X se comporte globalement comme il a été décrit dans le chapitre sur les interruptions, toutefois, les opérations qu’il exécute ne le sont pas tout à fait dans le même ordre.

Il commence le traitement de l’interruption en vidant immédiatement le pipeline d’exécution, puis en effectuant la recherche du vecteur. Une fois le vecteur identifié, le CPU va empiler les informations du contexte dans la pile et enfin lancer l’exécution de l’ISR.

La table des vecteurs d’interruption du MC9S12XS128 contient 120 vecteurs d’interruption (mais seules les fonctions réellement disponibles dans le composant sont  implémentées), gérés par un contrôleur d’interruption.

Vecteur Fonction Vecteur Fonction Vecteur Fonction

0

RESET

15

Timer 7

38

Réception bus CAN

1

Moniteur d’horloge

16

Timer Overflow

39

Transmission CAN

2

Watchdog

17

PA Overflow

56

Port P

3

Erreur d’instruction

18

Front actif sur PA

57

Arrêt PWM

4

Debug (SWI)

19

SPI (bus SPI)

63

Undervoltage

5

XIRQ

20

SCI0 (liaison série)

64

Interruption interne

6

IRQ

21

SCI1 (liaison série)

65

Haute temperature

7

Real Time Timer

22

ATD (Conv. A/N)

66

Timer interne 0

8

Timer 0

24

Port J

67

Timer interne 1

9

Timer 1

28

PLL verrouillée

68

Timer interne 2

10

Timer 2

29

Self Clock Mode

69

Timer interne 3

11

Timer 3

34

Erreur Mem. Flash

96

Comp. analogique

12

Timer 4

35

Accès Mem. Flash

118

Interruption système

13

Timer 5

36

Activité bus CAN

119

Interruption parasite

14

Timer 6

37

Erreur bus CAN

   

Entre interruptions (même si le niveau de priorité n’a pas été modifié, et donc est restée identique pour toutes), le numéro de vecteur donne l’ordre de priorité. Plus le numéro de vecteur est faible, plus l’interruption est prioritaire. Autrement dit, une interruption de vecteur 0 l’emporte sur toutes les autres interruptions, même si on n’a pas modifié la priorité de base et donné le même niveau aux 2 interruptions, donc même si elles ont théoriquement "la même priorité".

Les informations qui forment le contexte sont elles aussi un peu différentes du modèle général. Le faible nombre de registres impose de façon quasi obligatoire la sauvegarde complète de tous les registres dans la pile. On trouve donc dans la pile les informations suivantes :

Emplacement
Mémoire

Elément du contexte

SP + 8

Adresse de retour (PC)

SP + 6

Registre Y

SP + 4

Registre X

SP + 2

Accumulateur D (B = MSB, A = LSB)

SP

CCR

 

 

page précédente (1)

Retour à l'entrée du site

page suivante (3)