SPECIFICITES
Le SX est lun des microcontrôleur 8 bit le plus rapide
au monde, il peut fonctionner jusqu'à 100 MHz.
a) Périphérique
virtuel :
En combinant la puissance de traitement avec la mémoire
programmable intégrée sur la puce, Scenix a été un des
premiers constructeurs à permettre létablissement de périphériques
virtuels utilisant des microcontrôleurs 8 bit, ce qui élimine
le problème de limitation de bus. La série SX inclue un mode dinstruction
de type RISC ( Reduced Instruction Set Computer ).
b) Mémoires
internes au microcontrôleur :
Il possède deux mémoires différentes :
- 2048 * 12 bits EEPROM / flash program memory.
- 136 * 8 bits SRAM.
On peut introduire une fonction « Trigger de Schmitt »
en entrée sur les ports B et C.
c) Les ports et
la fonction comparateur :
La fonction comparateur analogique est accessible
sur le port B : RB1 et RB2 sont les entrées du comparateur,
et RB0 en est la sorite. Les résultats possibles sont « 1 »
ou « 0 » .
Le port B peut être utiliser en MIWU ( Multi
Input Wakeup ).
Le Mode Register permet de définir le mode de
fonctionnement souhaité.
d) Les registres :
Les registres du CPU incluent un registre de travail 8 bits :
Working Register (W). Il sert souvent de pseudo accumulateur. Un
ensemble de « 31 file registers » servent daccumulateurprimaire.
Les 8 premiers registres de fichiers incluent :
- le Real Time Clock/Counter Register (RTCC).
- les 8 bits de poids faible du Program Counter (PC) qui en
comporte 12.
- le registre Status de 8 bits.
- les trois registres de contrôle de port pour les ports
A, B, et C.
- le registre de sélection de fichier FSR (File Select
Register) .
Le composant SX possède trois registres FUSE, FUSEX, DEVICE
qui contrôlent les fonctions telles que fonctionner le SX en
mode turbo, étendre lopération de la pile, ou augmenter
la vitesse de loscillateur interne. Ces trois registres
sont accessibles uniquement en Mode de programmation des
instructions mémoires. Aucune modifications de ces registres nest
donc autorisées pendant le fonctionnement dun programme.
Registres de fonctions spécifiques :
Le CPU utilise un ensemble de registres de fonctions spécifiques
pour contrôler les opérations du composant. Les 5 bit de poids
faible du registre de sélection de fichier FSR sélectionnent un
des 31 registres du mode dadressage indirect. Lappel
du registre de fichier situé à ladresse 00h de nimporte
quelle instruction de fichier sélectionne ladressage
indirect, quutilise le registre FSR. Il faut noter que le
registre de fichier à ladresse 00h nest pas un
registre physiquement implanté. Le CPU contient également une
pile (Stack) de 11 bits constituée de 8 niveaux pour les
connexions de sous-programmes.
e) Les timers Le
SX a deux différents timers :
- Le « Real-Time Clock/Counter »,
(RTCC).
- Le « Watchdog timer », (WDT).
Le « Real-Time
Clock/Counter », (RTCC) :
- Il peut sevir à compter le temps qui sécoule, ou
bien compter des évènements extérieurs (une broche dentrée
reçoit les signaux extérieurs). Un débordement de ce
compteur provoque une interruption.
- Le RTCC possède également un registre 8 bits, qui
compte donc jusquà 256. A ce registre peut être
ajouter un autre registre, permettant ainsi de compter
jusquà 65 536. Ce registre complémentaire peut être
utilisé soit par le WDT, soit par le RTCC, mais il ne
peut travaillé pour les deux à la fois. Avec le RTCC,
ce registre sert à compter les cycles dinstructions
ou les événements extérieurs. La transition spécifiée
dun de ses bits est utilisée pour déclencher lincrémentation
du registre RTCC. La période pour laquelle le RTCC est
incrémenté est défini par les bits PS2, PS1 et PS0 du
registre OPTION. Pour compter jusquà 65 536 il
suffira de faire en sorte, grâce à ces trois bits, dincrémenter
le RTCC uniquement lorsque le registre complémentaire
atteindra 256.
- Le RTCC est donc cadencé soit au rythme de lhorloge,
soit au rythme des pulses reçus sur sa broche dentrée
(signaux externes). Ce choix est fait à partir du
registre OPTION, au niveau du bit RTS .
1 = incrémenté par la broche dentrée.
0 = incrémenté par lhorloge (cycles dinstructions).
- Dans le même registre OPTION, on pourra grâce au bit
RTE_ES décidé si le RTCC sera incrémenté sur front
montant ou descendant.
1 = incrémenté sur front montant.
0 = incrémenté sur front descendant.
- Le bit RTE_IE du registre OPTION rend les interruptions
possibles (interrupt enable). Cette interruption aura
lieu quand le compteur RTCC passera de FFh à 00h.
- Pour faire du RTCC un timer, il faut le configurer pour
être incrémenté par lhorloge. Le bit RTS du
registre OPTION doit être à 0. La précision du timer dépendra
donc de la précision de lhorloge. Pour ralentir la
cadence, on va utiliser le registre complémentaire, qui
est sélectionné pour le RTCC à laide du bit PSA
(Prescaler Assignment) du registre OPTION. On choisi
ensuite la période comme indiqué précédemment avec
les trois bits PS2, PS1, PS0. Ce mode permet de prévoir
une interruption au bout de n cycles dinstructions
(65 536 >=n>=1).
- Pour faire du RTCC un compteur dévénements, il
faut le configurer pour recevoir des signaux externes sur
sa broche dentée : le bit RTS du registre
OPTION devra être à 1. Il faut ensuite utiliser dans le
même registre le bit RTE_ES afin de définir si lincrémentation
aura lieu sur front montant ou descendant. Le registre
complémentaire servira ici encore, sil est sélectionné,
à ralentir le RTCC, comme expliqué précédemment avec
les bits PS2, PS1, PS0.
- Il faut cependant se méfier dune chose : le
circuit RTCC ne compte pas plus dun événement par
instruction de cycles.
- Pour les interruptions du RTCC, il faut, lorsque lon
programme le matériel mettre à 0 le bit OPTION_X du
registre FUSE word, afin dautoriser les opérations
sur les bits RTW et RTE_IE du registre OPTION. Ensuite
seulement, on met le bit RTE_IE (enable interrupt) à 0.
Le seul problème, est quil nexiste pas de flag
permettant de savoir sil vient dy avoir une
interruption. Pour déterminer si le RTCC est la cause de linterruption,
il faudra sassurer, que ladresse quil contient
est proche de 00h, puisque chaque interruption est générée
lors du passage de FFh à 00h.
Le «
Watchdog timer », (WDT) :
- Ce compteur confère un chemin de sortie au système en
cas de boucles infinies et dautres erreurs de
programmes. De même que pour le RTCC, le WDT est un
registre 8 bits, et génère une interruption lors du
passage de FFh à 00h. Le WDT est validé ou non par le
bit WDTE (Watchdog Timer Enable) du registre FUSE word.
Par défaut, le WDT est validé.
- Lors dun passage de FFh à 00h, un reset est généré
sur le système, et le flag TO (TimeOut), du registre
STATUS est mis à 0, pour signaler ce passage. Ce reset
peut être programmé à laide du registre complémentaire,
solicité grâce au bit PSA du registre OPTION.On inscrit
dans ce registre complémentaire le nombre de débordements
(passage de FFh à 00h) avant un reset, à laide
des bits PS2, PS1, PS0 du registre OPTION.
Le tableau suivant rend compte des différents réglages de
ces trois bits et de leur influence sur la périodicité du reset :
| PS2 : PS0 ( avec PSA = 1 ) |
Watchdog Timer Output
Divide-By-Factor |
Watchdog Timeout
Period |
| 000 |
1 |
0.018 sec |
| 001 |
2 |
0.037 sec |
| 010 |
4 |
0.073 sec |
| 011 |
8 |
0.15 sec |
| 100 |
16 |
0.29 sec |
| 101 |
32 |
0.59 sec |
| 110 |
64 |
1.17 sec |
| 111 |
128 |
2.34 sec |
- Pour éviter davoir un reset tous les 256 cycles,
on utilise la commande « CLR !WDT ». On
remet WDT à 0, ainsi que le registre complémentaire.
Les flags TO et PD sont mis à 1 (registre STATUS). Nous
avons vu que le flag TO rendait compte dun débordement
du WDT, en revanche, le flag PD, sert à signaler le
Power Down mode, ou mode veille. Pour une fréquence de
14 KHz, on a une période de 714 microsecondes, cest
à dire que lon passe de 00h à FFh en 18
millisecondes. Il faudra donc exécuter cette commande au
moins toutes les 18 millisecondes, si lon veut éviter
ce reset automatique. En revanche, si la partie software
contient une boucle infinie, cette instruction, ne pourra
être exécuter avant lkes 18 millisecondes, ce qui entraînera
un passage de FFh à 00h, et donc un reset général du
système. Cest lutilité dun tel timer.
- Ce registre est cadencé par un oscillateur indépendant
de loscillateur RC qui cadence le reste, ce qui
permet au WDT de continuer à opérer, même en mode
veille. Le WDT réveille donc lors de son débordement le
système. Si lutilisateur na pas besoin de ce
timer, il suffit de le désélectionner en mettant à 0
le bit WDTE du registre FUSE word, obtenant ainsi une
consommation minimale du système en mode veille.
Remarques :
- Lors dune interruption, le CPU sauve
automatiquement le contexte dans lequel le système se
trouve. Il sauvegarde donc les 11 bits du program
counter, ainsi que les registres W, STATUS et FSR. Le
programme saute à ladresse 000h où la routine dinterruption
devrait se situer. Si le matériel est configuré pour
accepter différentes interruptions, la lecture des
registres WKKPND_B ou RTCC détermine la cause de cette
interruption. Une fois linterruption terminée par
un reti ou un retiw, le CPU restore automatiquement le
contenu du program counter et les registres W, STATUS,
FSR. La différence entre reti et retiw est la suivante :
Reti est un simple retour dinterruption, comme expliqué
ci-dessus, alors que retiw effectue avant de restaurer les
registres une soustraction de W à RTCC, ce qui permet à RTCC de
retrouver la valeur quil contenait avant linterruption.
- Le port B a 8 broches dinterruptions.
f) Autres :
Interruption :
Aucune interruption nest prioritaire par rapport à une
autre. Les interruptions sont traitées séquentiellement.
Celles-ci peuvent être générer par lhorloge interne
ou bien par une patte externe. La SX garantit une réponse de 3
cycles (60 ns) pour une interruption interne et 5 cycles (2 de
plus pour la synchronisation) par une entrée (soit au total
100ns)
Horloge :
La vitesse de lhorloge peut être réglée par un
diviseur de fréquence. On obtient une vitesse dhorloge réglable
de 455 KHz jusquà 100 MHz.
Le SX peut être configuré dans un des modes dhorloge
suivants:
- un circuit oscillant externe.
- un signal externe dhorloge.
Chaque type dhorloge a ses avantages. Le choix de lhorloge
dépend de la vitesse et de la précision requises, ainsi que du
coût .
Les deux branches utilisées pour gérer lhorloge sont
OSC1 et OSC2. On programme lhorloge en mémoire à ladresse
FFFH, grâce à un registre 12 bits (le FUSE register) qui permet
de sélectionner les différents modes dhorloge.
Les oscillateurs :
- le RC oscillateur interne : cest loption la
moins coûteuse, permettant des applications assez
lentes. OSC1 et OSC2 sont déconnectées. La fréquence
possible va de 31.25 kHZ à 4 Mhz.
- le RC oscillateur externe : ça marche pour toutes les fréquences;
les applications ne doivent pas être dune grande
précision. OSC1 est lentrée de lhorloge et
OSC2 la sortie.
- l External Crystal Resonator qui est plus cher que
les deux autres mais plus précis et plus rapide.
(horloge en temps réel par exemple) LP XT HS
Il existe deux options :
- le mode compatible qui permet dexécuter
une instruction en un temps t en quatre temps dhorloge.
La compatibilité avec les microcontrôleurs PIC16C5x est
assurée.
- le mode turbo dont lutilisation réduit le
coût de loscillateur et les interférences électromagnétiques.
Le temps dexécution dune instruction ne nécessite
quun temps dhorloge.
Reset :
Le composant peut être réinitialisé de plusieurs façons :
- mise en marche initiale du SX.
- réveil du mode « Power Down ».
- panne partielle (Brown out).
- arrêt du chien de garde (WATCHDOG).
- assertion du signal dentrée MCLR (Master Clear
Reset).
Remarque :
le Power Down permet de réduire la consommation de puissance
à bas niveau pendant les périodes dinactivité (équivalent
au Sleep).
Brown out detector :
Il réinitialise le composant lorsque la tension dalimentation
est trop basse.