Description



Voici le menu de la description du 68HC11 :




I) Présentation

Le 68 HC 11 est composé d'un nombre important d'éléments, qui ne vont pas tous retenir notre attention, en effet, nous nous orienterons plus vers l'aspect pratique de la chose, avec des exemples, des schémas, chronogrammes ...

Ce microcontroleur est équipe d'une unité centrale, de mémoire ROM, RAM, de ports sériels et parallèles, d'un Timer, de chiens de garde, d'horloge, un convertisseur Analogique vers Numérique (CAN) et tout cela dans le même boitier.

Il est fabriqué dans une technologie appelée HCMOS, il ne consomme donc que peu de courant (15 à 30 mA) Il existe une grande variété de 68 HC 11, voici un petit récapitulatif des différentes versions DISPONIBLES DANS LE COMMERCE COURANT :

RéférenceROMRAMEEPROMTimerE/S circuit seulE/S étenduSérie BoitierVitesse Bus
68HC11A1non256o512ooui3822oui52 PLCC3MHz
68HC811E2non256o2kooui3832oui52 PLCC2MHz
68HC711E9non512o512ooui3822oui52 PLCC3MHz
68HC11F1non1ko512ooui030oui68 PLCC4MHz

Il faut donc en choisir un parmi tous ceux qui nous sont proposés par Motorola comme support d'étude.

Le 68 HC811 E2 me semble intéressant, voici ses caractéristiques :

256 Octets de RAM permettant de stocker les variables du programme

2k d'EEPROM permettant de stocker le programme pour libèrer la RAM

Un Timer pour compter du temps, générer des temporisations précises ...

38 Entrées/Sorties reparties sur 5 ports lorsque l'on foctionne en circuit seul

32 Entrées/Sorties reparties sur 5 ports lorsque l'on foctionne en mode étendu

Une interface serie configurable en SPI ou SCI

Un Convertisseur Analogique Numérique (CAN) 8 bits à 8 éntrées multiplexées

Disponible en boitier PLCC52

Possibilité de l'équiper d'un Quartz de 8MHz soit une fréquence de Bus de 2 MHz

Voici la composition interne du 68HC11 :




Il est possible de télécharger la documentation de ce microcontroleur en cliquant
ICI ou en se rendant dans la rubrique TELECHARGEMENT .


II) Les modes de fonctionnement du 68HC11



Le 68 HC 11 est prévu pour fonctionner sous 4 modes qui sont :
  • 1) Mode circuit seul (Single Chip).
          Démarrage en ROM ou EEPROM.
  • 2) Mode étendu (ou multiplexé).
          Adressage sur 16 bits (64ko),possiblité d'ajouter des circuites d'interface.
  • 3) Mode Spécial Test.
          C'est un mode de fonctionnement réservé aux tests en usine, lors de la fabrication.
  • 4) Mode Spécial Bootstrap.
          Le programme est téléchargé en RAM via l'inteface série (SCI) puis éxécuté.


Le mode de fonctionnement doit être choisi grace aux broches MODA et MODB, voici comment procèder :


MODA MODB Mode de fonctionnement
1 0 mode circuit seul
1 1 mode étendu
0 0 mode spécial bootstrap
0 1 mode spécial test

III) Etat du microcontroleur au démarrage



Lorsque le signal RESET Barre (actif à 0) passe à 0, alors il y a :

Démarrage de l'horloge.
Initialisation des registres du microcontroleur, mais pas ceux de l'unité centrale.
La RAM qui commence en $0000.
Les registes qui commencent et $1000.

Lorsque le signal RESET Barre (actif à 0) passe à 1, alors il y a :

Le chargement du PC avec le vecteur reset.
Exécution du programme.

Test des broches MODA et MODB, 2 cas se présentent :
  • Mode Etendu, alors, le PORTB et le PORTC deviennent les BUS (Adresses et Données),STR est affecté à R/W barre et AS ???????????.


  • Mode Circuit seul ou Bootstrap, les PORTB et PORTD sont configurés en sortie, le PORTC est configuré en entrée, le PORTA est configuré comme suit : les ligne 0,1,2,7 en entrées et 3,4,5,6 en sorties haute impédance.

IV) Les registres du 68HC11



Il s'agit d'une zone de 64 octets (déplaçables) dans l'espace adressable du 68HC11 de $1000 à $ 103F.

Il y a plusieurs catégories registres :

  • 1) Les registres de l'Unité Centrale :

    Le 68HC11 dispose, en interne de :

    • 2 accumulateurs A et B sur 8 bits chacuns, qui peuvent au besoin être réunis pour former l'accumulateur D (Double), sur 16 bits.
      Ces accumulateurs sont employés en permanence pour effectuer des transferts, des opérations logiques, arithmétiques ...

    • 2 deux registres d'index 16 bits X et Y, il est donc possible d'adresser 64 ko de memoire avec le 68HC11.
      Tout comme A et B, ils peuvent être employés pour stocker temporairement des données ou effectuer des oppérations.

    • Un registre appellé SP (Stack Pointer), c'est le pointeur de pile S, qui en permanance pointe sur la prochaine case mémoire RAM libre . L'usage de la pile sera détaillé plus loin.

    • Un registre PC (Program Counter), sur 16 bits, pointe sur la prochaine instruction à executer du programme, il est utilisé lorsque l'on effectue un saut ou un branchement.

    • Un Registre CCR (Condition Code Register), nous renseigne en permanance sur l'état du dernier octet manipulé, ce qui est très commode pour les branchements conditionels.

    Voici sa constitution :

       S      X      H      I      N      Z      V      C   


    • Le bit C (CARRY) passe à 1 si l'oppération à générée un retenue, ou si l'utilisteur l'y a forcée. Ce bit est également utilisé dans certaines instruction de rotation ou décalage.

    • Le bit V (oVerflow) passe à 1 lorsque l'opération génére un débordement.

    • Le bit Z (Zero) passe à 1 lorsque le dernier octet manipulé est nul. Ce bit est testé par des instructins de branchement conditionels.

    • Le bit N (Negativ) passe à 1 lorsque le dernier octet manipulé est négatif, ce qi correspond à dire que son bit de poids fort est à 1 (binaire signé).

    • le bit H (Half carry) passe à 1 si une opération arithmétique entre les bits 3 et 4, lorsque l'on foctionne en 2 quartes ( 4 bits), en BCD .

    • Le bit I (mask Interupt) doit etre placé à 1 pour interdire les interruptions sur IRQ barre, son usage n'est pas simple, se reporter à la description des interruption.

    • Le bit X (mask Xinterupt) doit etre placé à 1 pour interdire les interruptions sur XIRQ barre, son usage n'est pas simple, se reporter à la description des interruption.

    • Le bit S (Stop) mis à 1 permet de désactiver l'insctuction STOP qui arrète l'horloge du microcontroleur et peut génerer de nombreux problemes, ce qui justifie l'usage de ce bit S.


    Si certains bits du CCR sont positionnés automatiquement par le microcontroleur lors du déroulement du programme, rien ne vous interdit d'agir directement sur certains d'eutre eux grace à des insctruction spécifiques, ce que rends de nombreux services dans des cas particuliers.

    V) Reset


    Le RESET est une procédure qui permet le démarrage du système à la mise sous tension, ou un redémarrage à la suite d'un incident.

    Voici ce qui se passe lors du démarrage du 68 HC 11 :

    Mise sous tension

    Activation de l'horloge

    délai de 4064 cycles d'horloge

    Chargement des vecteurs de Reset dans le PC

    Mise à 1 des bits X,I et S du CCR

    Initiation ds registres (+SP)

    Démarrage du programme utilisateur


    Les 4 sources de Reset


    Le RESET intervient :
    • 1) A la mise sous tension POR (Power On Reset).

    • 2) Par la broche RST barre, comme au POR mais sans delai.

    • 3) Par la surveillance d'horloge CM (Clock Monitor), si la période de l'horloge E (Fquartz / 4) est supérieur à 5µs, Vecteur $FFFA et $FFFB.

    • 4) Par le chien de garde COP (Computer Operating Properly), qui vérifie le bon déroulement du programme, Vecteurs $FFFC et $FFFD.

    VI) Les Interruptions


    Une interruption est un procédure qui va intérompre le déroulement normal du programme pour éffectuer un traitement prioritaire.

    Certaines d'entre elles sont masquables et d'autes non.

    Une interruption peu avoir plusieurs origines :

    • Matérielle :

      • Reset
      • XIRQ
      • IRQ
    • Interne : générée par les périfériques internes au 68 HC 11.

    • Logicièle : instruction SWI



    Voici comment se comporte le 68 HC 11 lors d'une interruption :

    L'instruction en cours est completement terminée.

    Sauvegarde des registres de l' UC (Unité Centrale) dans la pile.

    Le masque d'interruption passe à 1.

    Cargement du vecteur dans le PC.

    Traitement du sous programme d'interruption.

    Le traitement se termine par l'instruction RTI.

    Les Interruptions sont classées selon une hiérarchie, les voici rangées de la plus prioritaire à la moins prioritaire :

      Dans les non masquables :
    • POR, Reset externe.
    • CM.
    • COP.
    • XIRQ.
    • Code illégal.
    • SWI.


      Dans les masquables :
    • Débordement Timer.
    • Débordement accumulateur d'impulsions.
    • Détection de front actif de l'accumulateur d'impulsion.
    • Fin de la transmission synchrone.
    • Fin de la transmission asynchrone.
    • IRQ.
    • Horloge Temps Réel (RTI)
    • IC1  \
    • IC2   }=>Entrées de capture du TIMER
    • IC3  /
    • OC1 \
    • OC2   \
    • OC3    }=>Sorties de comparisons du TIMER
    • OC4  /


    Cet ordre de priorité peut être modifié grace au registre HPRIO.


    Les Vecteurs d'interruption sont appellés Pseudo-Vecteurs dans le cas du fonctionnement en mode bootstrap, ils sont récapitulés dans ce tableau :

    Adresse en mode normalAdresse en mode bootstapVecteur
    $FFD6,$FFD7$00C4,$00C5,$00C6SCI
    $FFD8,$FFD9$00C7,$00C8,$00C9Fin transmission sur la SPI
    $FFDA,$FFDB$00CA,$00CB,$00CCFront actif sur accu d'impulsion
    $FFDC,$FFDD$00CD,$00CE,$00CFDébordement sur accu d'impulsion
    $FFDE,$FFDF$00D0,$00D1,$00D2Débordement TIMER
    $FFE0,$FFE1$00D3,$00D4,$00D5TOC5
    $FFE2,$FFE3$00D6,$00D7,$00D8TOC4
    $FFE4,$FFE5$00D9,$00DA,$00DBTOC3
    $FFE6,$FFE7$00DC,$00DD,$00DETOC2
    $FFE8,$FFE9$00DF,$00E0,$00E1TOC1
    $FFEA,$FFEB$00E2,$00E3,$00E4TIC3
    $FFEC,$FFED$00E5,$00E6,$00E7TIC2
    $FFEE,$FFEF$00E8,$00E9,$00EATIC1
    $FFF0,$FFF1$00EB,$00EC,$00EDItéruption temps réel
    $FFF2,$FFF3$00EE,$00EF,$00F0IRQ barre
    $FFF4,$FFF5$00F1,$00F2,$00F3XIRQ barre
    $FFF6,$FFF7$00F4,$00F5,$00F6SWI
    $FFF8,$FFF9$00F7,$00F8,$00F9Code Op illégal
    $FFFA,$FFFB$00FA,$00FB,$00FCCOP chien de garde
    $FFFC,$FFFD$00FD,$00FE,$00FFSurveillance de l'horloge
    $FFFE,$FFFF$BF40,$BF41,$BF42Reset barre


    Remarque Importante:

    Les Pseudo-Vecteurs d'interuption sont sur 3 octets, le premier doit contenir le code hexadicimal de l'instruction à éffectuer (ex : $7E pour le JMP).
    Les 2 autres doivent contenir l'adresse ou est implanté la routine d'interruption ecrite par l'utilisateur.

    VII) Le Timer



    Voici la description du Timer du MC68HC11 :



    Le Timer du MC68HC11 est un bloc du microcontroleur spécialisé dans la mesure et la génération de temporisation. Son usage n'est pas très simple lorsque l'on débute, mais grace à des exemples, il est possible de comprendre son fonctionnement.

    Pour le décrire, il est possible d'isoler 4 blocs qui sont :

    • 1) Le Timer à usage général
    • 2) Le générateur d'intéruptions temps réel
    • 3) Le Chien de garde (COP)
    • 4) L'accumulateur d'impulsions

    VII) Les Brochages



    Voici les principaux brochages du MC68HC11 selon les boitier :