Vous êtes sur la page 1sur 69

DSP et temps réel

__________ DSP ORIENTÉS APPLICATIONS INDUSTRIELLES


Chapitre 3
Les Périphériques de l’ADMC401

CD\DSP\Cours\Chap3 M. Correvon
T A B L E D E S M A T I E R E S
PAGE

3. PÉRIPHÉRIQUES DE L’ADMC401...........................................................................................................................1
3.1 INTRODUCTION ...........................................................................................................................................................1
3.2 CONVERTISSEURS ANALOGIQUE – NUMÉRIQUE .......................................................................................................3
3.2.1 Description générale.............................................................................................................................. 3
3.2.2 Commande de conversion. .................................................................................................................... 6
3.2.3 Horloge propre au bloc ADC. ............................................................................................................... 6
3.2.4 Configuration d’un canal analogique. ................................................................................................... 6
3.2.5 Format des données (acquisition) et détection de dépassement de capacité.......................................... 8
3.2.6 Commande des modes de travail de l’ADC. ......................................................................................... 9
3.2.6.1 Acquisitions simultanées................................................................................................................... 9
3.2.6.2 Acquisitions séquentielles ............................................................................................................... 10
3.2.6.3 Mode de calibration de l’offset ....................................................................................................... 11
3.2.6.4 Mode de calibration du gain............................................................................................................ 11
3.2.7 Conversion continue rapide................................................................................................................. 11
3.2.8 Optimisation des performances de l’ADC. ......................................................................................... 12
3.2.9 Activation des interruptions liées au modulateur PWM...................................................................... 12
3.3 MODULATEURS PWM .............................................................................................................................................13
3.3.1 Description générale............................................................................................................................ 13
3.3.2 Unité de génération des signaux PWM pour 3 branches..................................................................... 15
3.3.2.1 Fréquence de pulsation : registre de contrôle PWMTM.................................................................. 16
3.3.2.2 Temps d’antichevauchement : registre de contrôle PWMDT ......................................................... 17
3.3.2.3 Mode de mise à jour des sorties : registres de contrôle MODECTRL et SYSSTAT ...................... 17
3.3.2.4 Largeur du signal de synchronisation : registre de contrôle PWMSYNCWT................................. 19
3.3.2.5 Rapports cycliques liés aux registres PWMCHA, PWMCHB et PWMCHC.................................. 20
3.3.2.6 Comportement de l’unité de génération des signaux PWM en saturation....................................... 23
3.3.2.7 Impulsions minimums des paires de signaux de sortie : registre de contrôle PWMPD .................. 24
3.3.2.8 Résolution des signaux PWM ......................................................................................................... 24
3.3.3 Unité de contrôle des signaux PWM de sortie .................................................................................... 25
3.3.3.1 Inversion des signaux complémentaires de l’unité de génération des signaux PWM ..................... 26
3.3.3.2 Activation et désactivation des signaux PWM ................................................................................ 26
3.3.3.3 Contrôle des moteurs DC sans collecteur........................................................................................ 26
3.3.3.4 Contrôle des moteurs à réluctances variables, mode SR ................................................................. 27
3.3.4 Unité de contrôle des signaux de Gate ................................................................................................ 28
3.3.4.1 Modulation avec porteuse haute fréquence ..................................................................................... 28
3.3.4.2 Contrôle de polarité des signaux de sortie....................................................................................... 29
3.3.5 Unité de déclenchement du bloc PWM ............................................................................................... 29
3.3.6 Limite des caractéristiques externes du bloc PWM............................................................................. 30
3.3.7 Activation des interuption liés au modulateur PWM. ......................................................................... 30
3.4 INTERFACE POUR CODEUR INCRÉMENTAL ...............................................................................................................31
3.4.1 Description générale............................................................................................................................ 31
3.4.1.1 Interface encodeur ........................................................................................................................... 31
3.4.1.2 Timer............................................................................................................................................... 33
3.4.1.3 Compteur d’événement ................................................................................................................... 33
3.4.2 Structure de l’étage d’entrée de l’interface encodeur .......................................................................... 33
3.4.2.1 Introduction ..................................................................................................................................... 33
3.4.2.2 Etage de synchronisation et filtrage numérique .............................................................................. 33
3.4.2.3 Définition du sens de déplacement.................................................................................................. 36
3.4.2.4 Mode quadrature ou train d’impulsions et sens de déplacement ..................................................... 37
3.4.2.5 Mode de mise à jour du compteur/décompteur ............................................................................... 38
3.4.2.6 Validation des marques de référence ou de synchronisation........................................................... 38
3.4.2.7 Mode de reconnaissance unique des marques de référence............................................................. 41
3.4.2.8 Détection d’erreurs de comptage/décomptage ................................................................................ 41
3.4.2.9 Etat des entrées de l’interface encodeur .......................................................................................... 42
3.4.2.10 Registres dédicacés au bloc d’interface....................................................................................... 42
3.4.3 Timer................................................................................................................................................... 43
3.4.3.1 Architecture du Timer ..................................................................................................................... 43
3.4.3.2 Opérations du Timer........................................................................................................................ 44
3.4.3.3 Registres de contrôle pour le timer.................................................................................................. 44
3.4.4 Compteur et chronométrie d’événements............................................................................................ 45
3.4.4.1 Descriptions..................................................................................................................................... 45
3.4.4.2 Mémorisation des données produites par le bloc de compteur et chronométrie.............................. 46
3.4.4.3 Registre d’état du compteur et chronométrie d’événement............................................................. 47
3.4.4.4 Registres dédicacés au bloc compteur et chronométrie d’événements............................................ 47
3.4.5 Activation des interruptions liées à l’interface pour codeur incrémental. ........................................... 48
3.5 ENTRÉES /SORTIES DIGITALES PROGRAMMABLES ...................................................................................................48
3.5.1 Introduction ......................................................................................................................................... 48
3.5.2 Configuration des PIO......................................................................................................................... 49
3.5.3 Lecture/écriture des lignes PIO ........................................................................................................... 49
3.5.4 Génération d’interruption par les lignes PIO....................................................................................... 49
3.5.5 Lignes PIO utilisées pour l’activation/désactivation les sorties du modulateur PWM........................ 52
3.6 CHRONOMÉTRIE D’ÉVÉNEMENTS SÉQUENTIELS......................................................................................................53
3.6.1 Généralités .......................................................................................................................................... 53
3.6.2 Définition des événements .................................................................................................................. 53
3.6.3 Génération d’interruption.................................................................................................................... 55
3.6.4 Mode de travail ................................................................................................................................... 55
3.6.5 Activation de l’interruption ETU. ....................................................................................................... 56
3.7 MODULATEURS PWM AUXILIAIRES........................................................................................................................57
3.7.1.1 Registres dédicacés au bloc modulateurs PWM auxiliaires ............................................................ 59
3.8 TIMER ALLOUÉ À LA FONCTION WATCHDOG ..........................................................................................................60
3.8.1 Description .......................................................................................................................................... 60
3.8.1.1 Registres de contrôle du Watchdog timer ....................................................................................... 60
3.9 CONTRÔLEUR D’INTERRUPTIONS PROGRAMMABLE PIC.........................................................................................61
3.9.1 Description .......................................................................................................................................... 61
3.10 SYNTHÈSE DES REGISTRES D’ÉTAT, DE CONTRÔLE ET DE DONNÉES DES PÉRIPHÉRIQUES..................................63

Bibliographie
LES PERIPHERIQUES DE L’ADMC401 Page 1

3. PÉRIPHÉRIQUES DE L’ADMC401

3.1 INTRODUCTION
Comme pour un microcontrôleur, l’ADMC401 possède en plus du cœur DSP un certain
nombre de périphériques spécialement sélectionnés pour le contrôle de moteur. La plupart
des applications liées aux contrôles de systèmes électromécaniques, demande le contrôle de
codeurs optiques ou magnétiques, la mesure de grandeurs électriques (courant, tension, …),
le contrôle de variateur de courant (électronique de commutation), … Ces périphériques, une
fois initialisés ne « consomment » pas de temps de calcul supplémentaire, ils sont autonomes.
La Figure 3-1, illustre l’existence des périphériques suivants :
− un timer de surveillance (Watchdog) permettant d’éviter au programme de se
retrouver dans un boucle infinie (erreur de programmation) ou dans un état indéterminé
(EMC). En effet ce timer doit être régénéré à un ou plusieurs emplacements du
programme sans quoi une interruption sera générée ;
− une initialisation à l’enclenchement (Power On Reset) garantissant des états, sur les
sorties des bus DMA et DMD et sur les signaux des divers périphériques, compatibles
avec des applications temps réelles ;
− un contrôleur d’interruptions (Interrupt Controller) assurant la gestion des
interruptions provenant de divers sources (PI0, PWM contrôleur, …) ;
− une interface pour encodeur incrémentaux, (Encoder Interface) réalisant le
comptage / décomptage de signaux logiques en quadrature tels que fournis par les
codeurs optiques, magnétiques, sonde de Hall, …) ;
− la saisie d’évènements séquentiels (Event Capture Unit) permettant de connaître la
distance entre deux flancs d’un même signal ou entre des signaux distincts. On peut
facilement réaliser une mesure de fréquence par comptage sur temps fixe ou
chronométrie ;
− des entrées / sorties digitales (12) programmables (Digital I/O Unit) permettant entre
autres de générer des interruptions individuelles (4) ou groupées ;
− deux canaux auxiliaires PWM (2 Channel Auxiliary PWM Timer) fournissant deux
signaux digitaux de fréquence et de rapport cyclique variable. Ces signaux peuvent être
utilisés pour le contrôle des alimentations à découpage comme par exemple le contrôle
du facteur de puissance ;
− huit canaux de conversion Analogique / Numérique (8 Channel 12 bits AD
Converter) pour l’acquisition de grandeurs électriques analogiques comme les signaux
sin – cos d’un codeur optique, les courants et tensions d’un variateur de courant, la
température, …Les grandeurs sont codées sur 12 bits ;
− une source de tension de référence de précision (Precision Voltage Reference)
utilisable comme référence de tension pour la conversion analogique – numérique. La
précision et la stabilité de cette source sont compatibles avec les exigences de la
conversion sur 12 bits ;
− un contrôleur PWM (16 bits PWM Generation) permettant la commande d’un
convertisseur de fréquence avec circuit intermédiaire en U. Six canaux produisent les
commandes nécessaires. La polarité, la fréquence, le rapport cyclique, le temps

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 2

d’antichevauchement, … sont paramétrables. Ces sorties sont également configurables


pour des commandes à transformateurs d’impulsions.
Une description détaillée de chaque périphérique est disponible dans le chapitre 3.

EVENT DIGITAL
WATCH DOG POWER ON INTERRUPT ENCODER
CAPTURE I/O
TIMER RESET CONTROLLER INTERFACE
UNIT UNIT

DMA

16 Bits
DMD 14 Bits

2 CHANNEL PRECISION 16 BITS MOTOR CONTROL


8 CHANNEL
AUXILIARY VOLTAGE PWM PERIPHERALS
12-BITS ADC
UNIT REFERENCE GENERATION

Figure 3-1 : Schéma bloc fonctionnel (partie périphérique)

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 3

3.2 CONVERTISSEURS ANALOGIQUE – NUMÉRIQUE

3.2.1 Description générale


L’ADMC401 contient un convertisseur 12 bits de type FLASH pipeline. Un multiplexeur
analogique permet la conversion séquentielle ou simultanée de 8 entrées analogiques. Le bloc
de conversion travaille à une fréquence d’horloge quatre fois plus petite que la fréquence de
base liée à une instruction fondamentale. A 26MHz, le temps de conversion de l’ensemble
des canaux est inférieur à 2us. La plage de conversion est comprise entre 0V≤VIN≤4V. Les
canaux d’entrée sont séparés en deux groupes, soit {VIN0, …, VIN3} et {VIN4, …, VIN7}. Deux
entrées supplémentaires ASHAN et BSHAN permettent un décalage des tensions d’entrées
par rapport à la plage de conversion.

SHA A
ASHAN

VIN0 ADC0[15...0]
VIN1 M ADC1[15...0]
VIN2 U ADC2[15...0]
VIN3 X
ADC3[15...0]
DATA
ADC4[15...0]
M 12-BITS
GAIN
U PIPELINE ADC5[15...0]
X FLASH ADC ADC6[15...0]
VIN4 ADC7[15...0]
M
VIN5 U ADCXTRA[15...0]
Out of Range
VIN6 X ADCOTR[7...0]
End of Conversion
VIN7 ADCSTAT[4...0]
Control signal
ADCCTRL[4...0]
BSHAN
SHA B

PWMSYNC
CONVST MULTIPLEXER, SHA & ADC CONTROL
CLKOUT

PWMSYNC ( From 16-bits PWM generation unit )

CAPT
CAPB VOLTAGE
VREF REFERENCE INTERNAL
REFERENCE
REFCOM GENERATION
& CONTROL SIGNAL
SENSE
CML

Figure 3-2 : Schéma bloc fonctionnel de l’interface ADC

L’architecture de base du bloc de conversion est basée sur un convertisseur pipeline de quatre
étages, avec en entrée deux échantillonneurs bloqueurs (SAmple and Hold) à large bande et
un multiplexeur. Chaque SHA est lui-même connecté à un multiplexeur dont les entrées ne
sont rien d’autre que les quatre canaux analogiques d’un groupe.
Grâce à la structure de l’ADC, le temps réel de conversion est de 3½ cycles de la fréquence
de l’horloge du bloc ADC.
L’ADC peut travailler selon deux modes de conversion, soit

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 4

− Acquisitions simultanées (simultaneous sampling)


− Acquisitions séquentielles (sequential sampling)
Le mode de travail est défini par deux bits du registre ADCCTRL[4,3]. Dans le mode
d’acquisition simultanée, deux canaux (un de chaque groupe) sont échantillonnés en même
temps. On a donc les paires {VIN0, VIN4}, {VIN1, VIN5},{VIN2, VIN6},{VIN3, VIN7}. Dans le
mode séquentiel, les canaux sont échantillonnés les uns après les autres, soit {VIN0, VIN1,
VIN2, VIN3, VIN4, VIN5, VIN6, VIN7}. Dans ce mode les entrées sont échantillonnées à chaque
période de l’horloge ADC (soit toutes les quatre périodes de CLKOUT). L’ordre de
conversion peut être initié soit de manière interne par le signal de synchronisation
PWMSYNC du module PWM, ou de manière externe par la broche CONVST (CONVersion
Start). Dans le mode par défaut, l’ordre de conversion provoque l’échantillonnage simultané
des deux premières entrées analogiques VIN0 et VIN4 dans deux échantillonneurs bloqueurs
(Sample and Hold) SHA et SHB. A la période suivante de l’horloge, La sortie de SHA est
multiplexée sur l’entrée du convertisseur pipeline 12 bits, puis c’est le tour de SHB. Les
entrées VIN2 et VIN5 sont alors immédiatement échantillonnées.
Ce processus séquentiel se déroule jusqu’à ce que le quatrième couple soit converti. Une fois
une entrée convertie, sa grandeur numérique de conversion de 12 bits est écrite en
complément à 2 dans un registre dédicacé de 16 bits en alignant les MSB (alignement
gauche). Les divers registres destinés à la conversion analogique – numérique se trouvent
dans la mémoire RAM de données interne au cœur du DSP. Le registre ADC0 (adresse
0x2030) mémorise la grandeur numérique de VIN0, et ainsi de suite.
Label Registres en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADC0 : 0 0 0 0 DM(0x2030)
ADC1 : 0 0 0 0 DM(0x2031)
ADC2 : 0 0 0 0 DM(0x2032)
ADC3 : 0 0 0 0 DM(0x2033)
ADC4 : 0 0 0 0 DM(0x2034)
ADC5 : 0 0 0 0 DM(0x2035)
ADC6 : 0 0 0 0 DM(0x2036)
ADC7 : 0 0 0 0 DM(0x2037)
ADCXTRA : 0 0 0 0 DM(0x203B)

MSB LSB
ADC DATA

Figure 3-3 : Registres des valeurs converties dans la RAM de données interne

A la fin de conversion d’un couple de d’entrée VINx, VINx+4, le bit N°x du registre de contrôle
ADCSTAT est mis à « 1 ». Le résultat de cette structure pipeline fait que le temps global de
conversion de l’ensemble des canaux est inférieur à 2us (avec FCLKOUT=26MHz). Une
interruption est générée lorsque la conversion des huit canaux est terminée (ADC End-of-
Conversion Interrupt : 0x0030). Si le résultat de la conversion d’un canal particulier doit être
connue avant, le registre de contrôle ADCSTAT peut être interrogé pour définir si la
conversion d’un couple de canaux particulier est terminée.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 5

Label Registre en lecture seule Allocation


ADCSTAT : 0 0 0 0 0 0 0 0 0 0 0 DM(0x2039)
0 : Acquisition valide
ADCXTRA OTR
1 : Acquisition non valide

ADC0 & ADC4


0 : Données non valides ADC1 & ADC5
1 : Données valides ADC2 & ADC6
ADC3 & ADC7

Figure 3-4 : Registre de validation et de fin de conversion

Cette caractéristique n’est pas valable pour le mode séquentiel.


Une fois que la conversion des huit canaux est effectuée et que les registres ADCx ont été
mis à jour, le convertisseur ADC retourne automatique dans un mode de conversion continu
(conversion à la cadence de l’horloge ADC) du canal correspondant à l’entrée analogique
VIN0 (Single channel mode). Le résultat numérique de la conversion est placé dans un registre
de contrôle supplémentaire ADCXTRA (voir Figure 3-3). Cette caractéristique permet de
surveiller de manière continue l’évolution du signal analogique de l’entrée VIN0.
Le bloc ADC a la possibilité de travailler dans deux modes supplémentaires afin de permettre
une calibration de l’offset et du gain interne au convertisseur.
Dans le mode de calibration de l’offset, toutes les entrées analogiques (VIN0, VIN1, …,
VIN7,GAIN, ASHAN et BSHAN) sont déconnectée du bloc de conversion. Les deux entrées
de chaque échantillonneur bloqueur (SHA A et SAH B) sont connectées à la tension de
référence VREF. Le résultat d’une séquence de conversion permet alors de déterminer l’offset
issu des échantillonneurs bloqueurs et du convertisseur AD lui-même.
Dans le mode de calibration du gain, une conversion du signal analogique de l’entrée GAIN
est effectuée au travers de chaque échantillonneur bloqueur. Si la tension sur cette entrée est
bien définie, il est alors possible de connaître le gain réel de chaque chaîne de conversion.
Le registre de contrôle ADCOTR permet de vérifier que la grandeur numérique de
conversion de chaque canal correspond à une entrée analogique dont le niveau se trouve dans
la plage de conversion imposée.
Label Registre en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADCOTR : 0 0 0 0 0 0 0 0 DM(0x203C)
ADC7 OTR
ADC6 OTR
ADC5 OTR
0 : Acquisition valide ADC4 OTR
1 : Acquisition non valide ADC3 OTR
ADC2 OTR
ADC1 OTR
ADC0 OTR

Figure 3-5 : Registre de validation des valeurs converties

Chaque entrée est représentée par un bit du registre ADCOTR. La mise à « 1 » d’un bit
indique que l’entrée correspondante est hors de la plage de conversion (OuT of Range). Pour

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 6

le mode continu (registre ADCXTRA), le bit de contrôle de la validité de la plage de


conversion se trouve dans le registre ADCSTAT (voir Figure 3-4).

3.2.2 Commande de conversion.


La commande de conversion du bloc ADC de l’ADMC401 peut-être soit le signal de
synchronisation PWMSYNC du module PWM, soit le signal connecté à la broche CONVST.
C’est le bit ADCCTRL[0] qui permet de choisir lequel de ces deux signaux est actif.
− ADCCTRL[0]= « 0 » : PWMSYNC (actif au flanc montant)
Dans ce cas, une séquence de conversion à lieu par période de pulsation du générateur
PWM. Au début de chaque période lorsque le PWM est en mode de mise à jour
simple (Single Update). Au début et au milieu de chaque période lorsque le PWM est
en mode de mise à jour double (Double Update).
Lorsque le signal interne PWMSYNC est utilisé pour la conversion, il faut, pour
assurer une synchronisation correcte de l’acquisition des grandeurs analogiques ou en
d’autres mots pour éviter du jitter, que le contenu du registre de contrôle PWMTM
contienne une grandeur multiple de quatre (les deux bits de poids les plus faibles de
PWMTM mis à « 0 »)
− ADCCRTL[0]= « 1 » : CONVST (actif au flanc montant)
Dans ce cas, une séquence de conversion est démarrée au flanc montant du signal
connecté à la broche CONVST. En connectant une ligne du port PI/0 par exemple, il
est possible de déclencher une séquence de conversion de manière software. Pour ce
faire, il suffit d’écrire une séquence « 0 » puis « 1 » du bit correspondant dans le
registre PI0DATA.
Suite à un RESET, le bit ADCCTRL[0] est mis à « 0 », rendant actif le mode de
contrôle de conversion du bloc ADC par le signal PWMSYNC.

3.2.3 Horloge propre au bloc ADC.


Le convertisseur AD de type pipeline à quatre étages est contrôlé par une horloge dérivée de
l’horloge CLKOUT définissant le temps de cycle des instructions. La relation entre les
horloges n’est pas modifiable. Le rythme de travail du bloc ADC est complètement contrôlé
par son horloge interne qui détermine aussi bien le temps de conversion que le délai entre
l’échantillonnage successif d’une paire d’entrées analogiques.

tCKLADC =4⋅tCKLOUT =2⋅tCKLIN 3.1

Avec un oscillateur ou un cristal de 13MHz (FCLKOUT=26MHz) la période de l’horloge


interne au bloc ADC est de tCLKADC=154ns.

3.2.4 Configuration d’un canal analogique.


La Figure 3-6 illustre la structure d’un canal analogique, dans cet exemple VIN0, du bloc
ADC de l’ADMC401. Cette structure est applicable pour l’ensemble des huit canaux. Le
multiplexeur interne permet de passer d’une structure à une autre et donc de connecter
chaque entrée analogique au convertisseur AD. Un amplificateur différentiel intégrant une
fonction d’échantillonneur – bloqueur à son entrée (+) connectée aux entrées analogiques
VIN0 à VIN3 selon l’état du multiplexeur, alors que son entrée (-) est connectée au signal
ASHAN.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 7

La même structure permet de convertir les signaux VIN4 à VIN7 après soustraction de du
signal connecté à l’entrée BSHAN.
Une tension de référence, pouvant être interne ou externe permet de définir les limites de la
plage de conversion.

−VREF < VCORE < +VREF 3.2

+VREF

VIN0
V CORE 12 bits

A/D CORE

ASHAN

-VREF

Figure 3-6 : Circuit équivalent d’un canal analogique

La contrainte sur la plage de tension des entrées peut être définie comme :
AVSS −0.3V <VINx < AVDD+0.3V
3.3
AVSS −0.3V <V{A/ B}SHAN < AVDD+0.3V

avec pour valeurs nominales :


AVSS = AGND=0V
3.4
AVDD=VDD=+5V
Il existe plusieurs possibilités de configuration des entrées. Nous choisirons celle proposée
par Analog Device, soit ASHAN BSHAN connectés à VREF, les entrées VINx doivent donc
varier entre :

0 < VINx < 2VREF 3.5

et

VCORE =VINx −V{A/ B}SHAN 3.6

L’amplificateur opérationnel utilisé sur les entrées VINx doit répondre à des critères
particuliers. En effet, les entrées ont leur capacité contre la masse AGND qui varie
brusquement lors de la commutation des canaux par le multiplexeur. La condition donnée par
le fabricant est le temps de recouvrement de la tension à ±1mV de l’amplificateur doit être
inférieur à 70ns pour une capacité contre AGND de 6pF avec une variation de ±4pF. Cette
condition est difficile à estimer par simple lecture des caractéristiques des composants. Si la
condition d’unipolarité des signaux d’entrée VINx n’est pas applicable, un décalage de
tension peut être obtenu en ajoutant un étage d’entrée.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 8

2VREF
VREF
V DD
0V
RS
VIN0

V EE ADMC401
RS
ASHAN

VREF

10uF 0.1uF
SENSE

Figure 3-7 : Configuration d’une entrée analogique

3.2.5 Format des données (acquisition) et détection de dépassement de capacité.


Les valeurs numériques de conversion des signaux analogiques d’entrées VIN0 à VIN7 sont
mémorisés dans la mémoire de données DM interne (0x0030 – 0x003B) sous le nom de
registre ADC (ADC0 – ADC7, ADCXTRA). Ces grandeurs sont formatées en complément à
deux et sont alignés à gauche (grandeurs de 12 bits dans registre de 16 bits).
Le Tableau 3-1 ci-dessous montre le format utilisé.
Valeur numérique
VINx [V] V{A/B}SHAN [V] VCORE [V] OTR
Hex Binaire
≥2⋅VREF VREF ≥VREF 0x7FF0 0111 1111 1111 0000 1
2⋅VREF −1LSB VREF VREF −1LSB 0x7FF0 0111 1111 1111 0000 0
2⋅VREF −2LSB VREF VREF −2LSB 0x7FE0 0111 1111 1110 0000 0
VREF +1LSB VREF +1LSB 0x0010 0000 0000 0001 0000 0
VREF VREF 0 0x0000 0000 0000 0000 0000 0
VREF −1LSB VREF 1LSB 0xFFF0 1111 1111 1111 0000 0
0V +1LSB VREF −VREF +1LSB 0x8010 1000 0000 0001 0000 0
0V VREF −VREF 0x8000 1000 0000 0000 0000 0
<0V VREF <−VREF 0x8000 1000 0000 0000 0000 1

Tableau 3-1 : Format de conversion

En plus des 12 bits de conversion, le bloc ADC donne un bit supplémentaire par registre
ADC afin de permettre la gestion des grandeurs hors plage de conversion.
Suite à une séquence de conversion d’une grandeur analogique quelconque VINx, le bit
ADCOTR[x] et le MSB de la valeur numérique convertie permettent de savoir si la
conversion est correcte ou en dépassement de capacité supérieure ou inférieure.
Le Tableau 3-2 donne toutes les possibilités pouvant apparaître.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 9

OTR MSB Condition


0 0 Dans la plage (in range): VREF ≤VINx ≤2⋅VREF −1LSB
0 1 Dans la plage (in range) : 0≤VINx ≤VREF −1LSB
1 0 Dépassement supérieur (overrange) : VINx ≥2⋅VREF
1 1 Dépassement inférieur (underrange) : VINx <0

Tableau 3-2 : Table de vérité de validation

3.2.6 Commande des modes de travail de l’ADC.


Le bloc de conversion AD peut être configuré en quatre modes distincts. Ces divers modes
sont sélectionnés à l’aide des bits ADCCRTL[3, 4]. Suite à une RESET, les bits
ADCCRTL[3, 4] sont mis à « 0 » et par conséquent, le mode par défaut se trouve être le
mode d’acquisition simultanée (Simultaneous Sampling Mode). Les différents modes sont :
− Acquisitions simultanées (Simultaneous Sampling Mode)
− Acquisitions séquentielles (Sequential Sampling Mode)
− Calibration de l’offset (Offset Calibration Mode)
− Calibration du gain (Calibration du gain)
La Figure 3-8 illustre le registre de contrôle ADCCRTL.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADCCTRL : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2038)

00 : acquisitions simultanées
01 : acquisitions séquentielles
ADC MODE
10 : calibrage de l’offset
11 : calibrage du Gain

1 : Commande par CONVST


Start Conversion
0 : Commande par PWMSYNC

Figure 3-8 : Registre de mode et de commande d’acquisition

3.2.6.1 Acquisitions simultanées


Ce mode est obtenu pour les bits ADCCTRL[3]= « 0 » et ADCCTRL[4]= « 0 » du registre
de contrôle ADCCTRL. Dans ce mode, les huit entrées analogiques sont converties par
couple. Les entrées VIN0,VIN1,VIN2,VIN3 sont connectées à l’échantillonneur bloqueur
SHA A alors que les entrées VIN4, VIN5, VIN6, VIN7 sont connectées à l’échantillonneur
bloqueur SHA B. Les deux échantillonneurs bloqueurs utilisent dans ce mode le même signal
de commande rendu actif par le flanc montant du signal ordonnant le démarrage d’une
conversion. Le temps de conversion d’une entrée est de 3 cycle d’horloge ADC auquel il faut
ajouter ½ cycle pour validé la sortie du convertisseur AD. Le démarrage de chaque
conversion est décalé d’une période d’horloge tCLKADC. Le processus se poursuit jusqu’à ce
que l’ensemble des entrées soit converti.
Dans le cas de la conversion simultanée, les bits ADCSTAT[0, 1, 2, 3] passent à « 1 » dès
que la conversion est achevée pour respectivement {VIN0, VIN1}, {VIN2, VIN3}, {VIN4,

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 10

VIN5}, {VIN6, VIN7}. Lorsque le signal de commande d’une conversion est actif (flanc
montant), les bits ADCSTAT[0, 1, 2, 3] sont mis à « 0 ».
De plus lorsque l’entrée VIN7 est convertie et sauvée dans le registre ADC7, une interruption
de fin de conversion est générée (ADC End-OF-Conversion). Cette interruption peut être
masquée en mettant le bit PICMASK[0].
CLKADC

t
CONVERT START
t CLKADC

S&H {VIN0, VIN4} CONVERT VIN0


CONVERT VIN4
CONVERT VIN1
CONVERT VIN5
S&H {VIN1, VIN5} CONVERT VIN2
CONVERT VIN6
S&H {VIN2, VIN6} CONVERT VIN3
CONVERT VIN7
S&H {VIN3, VIN7}

Figure 3-9 : Chronogramme de la conversion simultanée

Le pire cas pour le temps global de conversion, défini entre le flanc montant du signal de
commande de conversion et le flanc montant du signal d’interruption de fin de conversion (8
canaux convertis vaut :

tCONV = 49 ⋅ tCLKOUT 3.7

Le temps de conversion vaut donc 1.88us pour une fréquence d’horloge de l’oscillateur ou du
cristal externe de 13MHz (FCLKOUT=26MHz). Dans ce mode, le temps entre la conversion de
deux paires de signaux {VINx, VINx+4} et { VINx+1, VINx+5} est de 8tCKLOUT, soit
308ns@26MHz.

3.2.6.2 Acquisitions séquentielles


Ce mode est obtenu pour les bits ADCCTRL[3] = « 1 » et ADCCTRL[4] = « 0 ». Dans ce
mode, les huit entrées analogiques sont converties les unes après les autres {VIN0, VIN1,
VIN2, …VIN7}. Le temps global de conversion est identique au mode de conversions
simultanées.
Cependant, dans ce mode la conversion de chaque canal dure 4tCKLOUT (154ns@13MHz ).
Les bits ADCSTAT[0, 1, 2, 3] passent tous à « 1 » à la fin de la conversion des 8 canaux.
Une interruption de fin de conversion est générée (ADC End-OF-Conversion) lorsque la
valeur convertie du dernier canal est sauvée dans le registre ADC7.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 11

CLKADC

t
CONVERT START
t CLKADC

S&H {VIN0} CONVERT VIN0


CONVERT VIN1
CONVERT VIN2
S&H {VIN1} CONVERT VIN3
S&H {VIN2} CONVERT VIN4
S&H {VIN3} CONVERT VIN5
S&H {VIN4} CONVERT VIN6
S&H {VIN5} CONVERT VIN7
S&H {VIN6}
S&H {VIN7}

Figure 3-10 : Chronogramme de la conversion séquentielle

3.2.6.3 Mode de calibration de l’offset


Dans le but de maintenir une précision en rapport avec la résolution du convertisseur AD, il
peut s’avérer nécessaire de compenser l’offset interne à la chaîne de conversion. En forçant le
bit ADCCTRL[4] à « 1 » et le bit ADCCTRL[3] à « 0 » du registre de contrôle ADCCTRL,
le mode sélectionné correspond à celui de la calibration de l’offset.
Lorsque ce mode est actif, toutes les entrées analogiques (Vinx, ASHAN, BSHAN) sont
déconnectées. Les entrées différentielles des échantillonneurs bloqueurs SHA A et SHA B
sont reliées à la source de référence VREF. Une séquence de conversion correspondant au
mode de conversions simultanées est alors réalisée. Les registres ADCx, ADCSTAT,
ADCOTR sont mis à jour comme pour une conversion simultanée classique. Une
interruption (End-Of-Conversion) est également générée. Les registres ADCx contiennent
des valeurs correspondant aux offsets de chaque canal. L’utilisateur peut alors décider de la
manière à utiliser ces grandeurs.

3.2.6.4 Mode de calibration du gain


En forçant le bit ADCCTRL[4] à « 0 » et le bit ADCCTRL[3] à « 1 », le mode sélectionné
correspond à celui de la calibration du gain. Dans ce mode, l’entrée analogique GAIN est
connectée, par le multiplexeur sur les entrées différentielles (+) de chaque échantillonneur –
bloqueur. Lorsqu’une commande de conversion est initiée, une séquence de conversions
simultanées est lancée. Les registres ADCx vont alors contenir les valeurs de conversions de
l’entrée GAIN. En choisissant divers niveaux de tension pour l’entrée GAIN, il va être
possible de déterminer le gain de conversion de chaque canal. L’utilisateur peut alors décider
de la manière à utiliser ces grandeurs.

3.2.7 Conversion continue rapide.


A la fin d’une séquence de conversion, le bloc ADC se retrouve automatiquement dans le
mode d’acquisition continue d’un canal (Single Channel mode). Dans ce mode le
multiplexeur est dans un état tel que l’entrée VIN0 se trouve à l’entrée de bloc de conversion

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 12

AD. Le résultat de chaque conversion est mémorisé dans le registre ADCXTRA. Ce registre
est mis à jour tout les tCKLADC ou 4tCKLOUT, soit 154ns @ 26MHz. Cette caractéristique
permet de suivre de manière continue l’évolution d’une grandeur analogique. Le bit
ADCSTAT[4] permet de s’assurer que le signal placé sur VIN0 se trouve bien dans la plage
de conversion. Aucun autre bit d’état n’est modifié et aucune interruption n’est générée. Lors
d’une séquence de conversion, le registre ADCXTRA n’est pas mis à jour.

3.2.8 Optimisation des performances de l’ADC.


Pour obtenir des performances optimales, le signal d’entrée doit avoir une excursion
correspondant à la plage de conversion complète. De plus les entrées analogiques VINx,
ASHAN, BSHAN doivent provenir de sources (amplificateurs opérationnels) présentant des
impédances très faibles et aussi proche que possible les unes des autres (matching). Cette
impédance doit être résistive à des fréquences voisines de la fréquence d’échantillonnage du
multiplexeur. En effet lors de la commutation des divers canaux du multiplexeur, une
brusque variation de capacité provoque une chute de tension à la sortie des sources. Le temps
de recouvrement de la tension doit donc être très court si on veut éviter des effets
indésirables. L’effet de la commutation peut être atténué en plaçant une résistance de l’ordre
de 20Ω en série avec la source. Le constructeur propose divers amplificateurs opérationnels
susceptibles de remplir correctement cette tâche.
Pour les applications demandant une immunité aux bruits supplémentaires, il est recommandé
d’ajouter une capacité sur les entrées analogiques. Les contraintes sur la valeur de ces
capacités sont telles quelle doit être la plus grande possible sans toutefois descendre la
fréquence de coupure du réseau RC à une fréquence incompatible avec l’application. Une trop
grande valeur de ces capacités peut également provoquer des instabilités au niveau de la
source comme par exemple une augmentation dramatique du temps d’établissement de la
tension lors d’une variation de l’entrée analogique.

3.2.9 Activation des interruptions liées au modulateur PWM.


Le registre PICMASK permet d’activer/désactiver les interruptions liées bloc du modulateur
PWM.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PICMASK : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x201D)
ADC End of Conversion Interrupt

Figure 3-11 : Registre d’activation/désactivation des interruptions PWMTRIP et PWMSYNC

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 13

3.3 MODULATEURS PWM

3.3.1 Description générale


Le bloc Générateur PWM (PWM generator bloc) peut, par la grande flexibilité de sa
programmation, être utilisé dans un grand nombre d’applications liées au contrôle de
transducteurs électromagnétiques. Moteurs triphasés, biphasés et monophasés peuvent être
contrôlés de façon standard. On peut citer les moteurs asynchrone (AC induction), les
moteurs synchrones à aimants permanents (AC brushless), les moteurs DC sans collecteur
(DC Brushless), les moteurs pas-a-pas (steppers), etc …Un mode est également prévu pour le
contrôle des moteurs réluctants (switched reluctant).
Le générateur PWM contrôle trois paires de signaux PWM disponibles sur six pins
configurées en sorties. Ces six sorties permettent le contrôle de trois branches d’un
convertisseur de fréquence par exemple. AH, BH, CH correspondent à la commande des trois
contacteurs statiques supérieurs de chaque branche alors que AL, BL, CL correspondent aux
commandes des éléments inférieurs des mêmes branches. La polarité, c’est-à-dire le niveau
logique actif de ces signaux est commandable par une broche configurée en entrée
PWMPOL. Plusieurs paramètres propres aux applications utilisant la commutation
électronique peuvent être programmés :
− la fréquence de pulsation (registre de contrôle PWMTM) ;
− le temps d’antichevauchement (registre de contrôle PWMDT) ;
− les largeurs d’impulsions minimums (registre de contrôle PWMPD) ;
− la modulation des signaux de commande par un signal de fréquence élevé (registre de
contrôle PWMGATE) ceci afin de garantir une séparation galvanique entre
l’électronique de commande et l’électronique de puissance par des transformateurs
d’impulsions ;
− activation /désactivation (enable/disable) des sorties (registre de contrôle PWMSEG).
Chaque sortie peut être activée ou désactivée indépendamment des autres ;
− croissement des signaux de contrôle d’une même branche (registre de contrôle
PWMSEG). Trois bits de contrôle du registre PWMSEG permettent d’intervertir les
signaux de commande d’une même branche pour des applications spécifiques
(AH↔AL, BH↔BL, CH↔CL) ;
− contrôle du rapport cyclique de commutation de chaque branche (registres de contrôle
PWCHA, PWCHB, PWMCHC).
Toutes les sorties du bloc PWM sont capables de fournir / absorber le courant nécessaire pour
le contrôle d’optocoupleurs.
Le générateur PWM est prévu pour travailler dans deux modes distincts
− Mise à jour simple (Single Update Mode)
Dans ce mode, le rapport cyclique de commutation de chaque branche ne peut être
mis à jour qu’une fois par période de pulsation. Les commandes sont symétriques par
rapport au milieu de la période de pulsation du modulateur PWM.
− Mise à jour double (Double Update Mode)
Dans ce mode, la mise à jour du rapport cyclique est faite deux fois par période
PWM. Une fois lorsque le compteur/décompteur est au minimum (0), une fois
lorsqu’il est au maximum (valeur dépendant de la fréquence de pulsation désirée.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 14

Dans ce mode, il est possible de produire une asymétrie par rapport au signal de
synchronisation et par conséquent une réduction des harmoniques du courant de ligne
pour un convertisseur de fréquence. Cette technique permet également de réduire le
temps mort équivalent du modulateur PWM et par conséquent d’améliorer la
dynamique du système lorsque celui ci est intégré dans un asservissement
Le mode de mise à jour est commandé par un bit du registre de contrôle MODECTRL.
Le générateur PWM génère également un signal de synchronisation PWNSYNC. En mode
de mise à jour simple (Single Update Mode), ce signal est synchronisé avec la position 0 du
compteur/décompteur. En mode de mise à jour double (Double Update Mode), le signal
PWMSYNC est synchronisé avec les deux valeurs extrêmes du compteur/décompteur. La
largeur de PWMSYNC peut être programmée au moyen du registre de contrôle
PWMSYNCWT.
Les signaux PWM générés (AH, AL, BH, BL, CH, CL) peuvent être désactivés de plusieurs
manière. Pour des raisons de sécurité, une commande de désactivation rapide doit pouvoir se
faire de façon asynchrone (hardware). En effet une perte de l’horloge ou une erreur software
ne doivent en aucun cas empêcher la coupure rapide d’un convertisseur de puissance. Trois
voies de désactivation sont possibles :
− Hardward
‰ Broche (entrée) de contrôle PWMTRIP
Cette entrée est complètement dédicacée à ce contrôle particulier. Lorsque
PWMTRIP est à l’état logique « 0 », les six sorties (AH, AL, BH, BL, CH, CL)
sont instantanément mises dans l’état OFF (état logique déterminé par le
registre de contrôle PWMPOL). De plus une interruption (IRQ2) est générée
(PWM Trip Interrupt : (0x0058)).
‰ Broche (entrée/sortie programmable) de contrôle PIO0 – PIO11.
Chaque ligne du port d’entrée sortie programmable (PIO0 – PIO11) peut être
configurées pour une commande de désactivation asynchrone des signaux
PWM. Le mécanisme de désactivation des sorties du générateur PWM est
identique à celui généré par le signal PWMTRIP. Les entrées programmables
peuvent également induire une interruption (IRQ2), (PIO0 : 0x0048, PIO1 :
0x004C, PIO2 : 0x0050, PIO3 : 0x0054, PIO4-PIO11 : 0x003C,)
− Software
‰ En forçant le bit PWMSWT[0] à « 1 », il est possible de désactiver les sorties
du générateur PWM.
Le registre de contrôle SYSSTAT donne un certain nombre d’information sur l’état du
générateur PWM. Comme l’état du signal PWMTRIP, la polarité des sorties ainsi la phase du
compteur/décompteur en mode de double mise à jour.
La Figure 3-12 montre la structure du schéma bloc du générateur PWM. La génération des
six signaux de sortie AH, AL, BH, BL, CH, CL est contrôlée par quatre blocs principaux :
− L’unité de génération des signaux PWM (Three phase PWM timing unit)
Cette unité la génération de trois paires de signaux complémentaire avec intégration
de temps d’antichevauchement basé sur un signal PWM de référence triangulaire

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 15

− L’unité de control des signaux de sortie (Output control unit)


Cette unité permet l’activation/désactivation des six signaux de sortie de l’unité de
génération des signaux PWM.
− L’unité de contrôle des signaux de gate (Gate Drive unit)
Cette unité intègre le contrôle de la polarisation des signaux de sortie en fonction de
l’état de la broche PWMPOL ainsi que de la modulation des signaux par une poreuse
haute fréquence pour la commande e transformateur d’impulsion.
− L’unité de sécurité (PWM shutdown controller unit)
Cette unité gère les diverses entrées pour la désactivation hardware et software des
sorties du générateur PWM. Un contrôle précis des exigences temporelles de l’unité
de génération des signaux PWM est également intégré dans cette unité.
CLKOUT est l’horloge de base du bloc générateur PWM
PWMTM[15...0] PWMCHA[15...0]
PWMDT[15...0] PWMCHB[15...0]
PWMPD[15...0] PWMCHC[15...0]
PWMSYNCW[7...0] PWMSEG[8...0] PWMGATE[9...0]
MODECRTL[6]

AH
THREE-PHASE OUTPUT GATE AL
PWM TIMING CONTROL DRIVE BH
UNIT UNIT UNIT BL

CH
CLK SYNC SR RESET SYNC CLK POL CL

CLOCKOUT PWMPOL
CLOCKOUT
PWMSYNC
PWMSYNC PWMSR

PWMTRIP
PWMTRIP
OR PIO0
PIOPWM PIO1
DETECT
PIO11

PWMSWT[0] PIOPWM[11...0]
PWM SHUTDOWM CONTROLLER

Figure 3-12 : Schéma bloc du générateur PWM

3.3.2 Unité de génération des signaux PWM pour 3 branches


L’unité de générations des signaux PWM, cœur du bloc générateur PWM, produit trois paires
de signaux modulés en largeur d’impulsions ayant une résolution de 16 bits. Cette unité a une
grande autonomie afin de limiter au maximum la charge du DSP. Les sorties de cette unité
sont actifs à l’état logique « 0 », c’est à dire qu’un « 0 » est interprété comme une commande
d’enclenchement du contacteur statique concerné. Quatre registres de contrôle permettent la
configuration des caractéristiques fondamentales de cette unité (PWMTM, PWMDT,
PWMPD et PWMSYNCWT). Il faut ajouter un registre de contrôle pour la sélection du
mode de simple ou double mise à jour (MODECTRL). A ces registres il faut ajouter trois

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 16

registres de 16 bits pour la définition du rapport cyclique de chaque paire complémentaire


(PWMCHA, PWMCHB, PWMCHC).

3.3.2.1 Fréquence de pulsation : registre de contrôle PWMTM


La fréquence de pulsation FPWM des signaux de sortie est donnée par le registre de contrôle
(16 bits) PWMTM. L’unité de temps correspond à la période de l’horloge CLKOUT, soit
38.5ns@26MHz. La valeur écrite dans le registre PWMTM correspond au nombre de
périodes d’horloge tCLKOUT sur la moitié de la période de pulsation. Il s’agit en fait du temps
nécessaire pour faire passer le compteur/décompteur de sa valeur minimale « 0 » à sa valeur
maximale contenue dans le registre PWMTM.
UP/DOWN COUNTER

[PWMTM]

t
[PWMTM]t CLKOUT
[PWMTM]t CLKOUT

1LSB

tCLKOUT

Figure 3-13 : Compteur/décompteur et fréquence de pulsation

La valeur du contenu du registre PWMTM est déterminée par la relation


FCLKOUT F
[PWMTM] = = CLKIN 3.8
2 ⋅ FPWM FPWM
1
Où FPWM = représente la fréquence de pulsation des signaux de sortie. On peut donc
TPWM
écrire pour la période de pulsation des signaux PWM
TPWM = 2 ⋅ [PWMTM] ⋅ tCLKOUT 3.9

La fréquence de pulsation minimum est limitée par la capacité du registre PWMTM dont la
valeur maximum vaut 0xFFFF → 65635.
6
FCLKOUT 26 ⋅ 10
FPWM = = = 198Hz @ 26MHz 3.10
2 ⋅ [PWMTM] 2 ⋅ 65'635
La résolution sur la période de pulsation est donnée par
2 2
∆TPWM = 2 ⋅ tCLKOUT = = = 77ns @ 26MHz 3.11
FCLKOUT 26 ⋅ 106

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 17

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMTM : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2008)

Figure 3-14 : Registre de contrôle de la fréquence de pulsation

3.3.2.2 Temps d’antichevauchement : registre de contrôle PWMDT


Un paramètre important, défini par la technologie utilisée pour les composants de puissance,
est le temps mort entre l’ouverture d’un contacteur statique et la fermeture du contacteur
statique situé dans même branche. Ce temps mort (dead time) ou temps d’antichevauchement
est nécessaire pour assurer le blocage d’un MOSFET ou un IGBT avant de commander la
fermeture du composant complémentaire. Ce temps doit être choisi le plus petit possible car
il est responsable de non-linéarités qui peuvent devenir importantes si le rapport entre la
période de pulsation et le temps mort est important.
Le temps d’antichevauchement est fixé par un registre de contrôle PWMDT d’une capacité
de 10 bits.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMDT : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2009)

Figure 3-15 : Registre de contrôle du temps d’antichevauchement

Ce temps est identique pour les trois paires de signaux de sortie. On a la relation suivante
entre le contenu du registre et le temps mort effectif
TA = 2 ⋅ [PWMDT] ⋅ tCLKOUT 3.12

La résolution sur le temps d’antichevauchement est la même que pour la période de


pulsation. Le temps d’antichevauchement est compris entre 0 et une valeur maximale définie
comme
1023
0 ≤ TA ≤ 2 ⋅ (210 − 1) ⋅ tCLKOUT = 2 = 78.8us @ 26MHz . 3.13
FCLKOUT

3.3.2.3 Mode de mise à jour des sorties : registres de contrôle MODECTRL et SYSSTAT
L’unité de génération des signaux PWM peut travailler dans deux modes distincts. La
sélection du mode se fait en forçant le bit MODECTRL[6].
Le premier mode (Single update mode) est activé en forçant à « 0 » le bit MODECTRL[6].
Ce mode permet la validation des registres de contrôle PWMTM, PWMDT, PWMPD,
PWMSYNCWT des registres de commande des rapports cycliques PWMCHA, PWMCHB
et PWMCHC et du registre PWMSEG se fait au flanc montant du signal PWMSYNC, signal
qui apparaît une fois par période de pulsation, soit lorsque le compteur/décompteur est dans
l’état correspondant à la valeur interne minimum, soit 0.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 18

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MODECTRL : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2015)
0 = Simple mise à jour
Mode de mise à jour
1= Double mise à jour

Figure 3-16 : Registre de contrôle de mode

La Figure 3-17 montre que les signaux de sortie de l’unité de génération des signaux PWM
sont tous symétriques par rapport au point milieu de la période de pulsation.
UP/D OWN COUNTER
[PWMTM]

t
PWMSYNC
([PWMSYNCWT]+1) t CLKOUT

[PWMTM] t CLKOUT [PWMTM] t CLKOUT


t

Figure 3-17 : Compteur/décompteur et signal PWMSYNC pour le mode « Single update »

Le second mode (Double update mode) est activé en forçant à « 1 » le bit MODECTRL[6].
UP/DOWN COUNTER
[PWMTM] 2

[PWMTM] 1

t
PWMSYNC
([PWMSYNCWT] 1 +1) t CLKOUT ([PWMSYNCWT] 2 +1) t CLKOUT

[PWMTM] 1 tCLKOUT [PWMTM] 2 tCLKOUT


t

Figure 3-18 : Compteur/décompteur signal PWMSYNC pour le mode « Double update »

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 19

Comme pour le mode précédent, la validation des registres de contrôle et de commande des
rapports cycliques se fait au flanc montant du signal PWMSYNC, signal qui apparaît deux
fois par période de pulsation, soit lorsque le compteur / décompteur est dans les états
correspondant aux valeurs internes extrêmes, soit 0 et [PWMTM].
On voit que, dans ce mode, il est possible rendre les sorties de l’unité de génération des
signaux PWM asymétriques par rapport au milieu de la période de pulsation.
Dans le cas de la double mise à jour, il est nécessaire de savoir en tout temps dans quelle
phase se trouve le compteur/décompteur (incrémentation ou décrémentation), Cette
information est fournie par le bit SYSSTAT[3]. En effet ce bit vaut « 0 » lorsque le système
se trouve dans la première phase (incrémentation) et « 1 » pour la seconde (décrémentation).
Ce bit va donc permettre de choisir un algorithme particulier afin de répondre aux exigences
de la commande proprement dite et de minimiser le taux d’harmonique dans le circuit
intermédiaire du convertisseur de fréquence.
Un autre avantage de la double mise à jour est la réduction du délai entre la validation des
rapports cycliques et leurs effets est divisé par deux. On peut donc ainsi soit améliorer la
dynamique de l’asservissement, soit diminuer la fréquence de pulsation par deux afin de
diminuer dans une même proportion les pertes de commutation dans les composants de
puissance.
Label Registre en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SYSSTAT : 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2016)
0 : 1ère phase (comptage)
Phase du PWM
1 : 2ème phase (décomptage)

0 : sortie active à l’état logique LO


état de la pin PWMPOL
1 : sortie active à l’état logique HI

0 : état logique LO
état de la pin PWMTRIP
1 : état logique HI

Figure 3-19 : Registre d’état des périphériques du DSP

3.3.2.4 Largeur du signal de synchronisation : registre de contrôle PWMSYNCWT


L’unité de génération des signaux PWM génère un signal de synchronisation PWMSYNC
sous la forme d’une impulsion par période de pulsation du PWM dans le mode « Single
update » et de deux impulsions dans le mode « Double update ». Cette impulsion est
disponible sur une broche configurée en sortie. La largeur de cette impulsion peut être fixée
grâce au registre de contrôle PWMSYNCWT d’une capacité de 8 bits en utilisant la relation
suivante :

TPWMSYNC = ([PWMSYNCWT] + 1) ⋅ tCLKOUT . 3.14

La plage de cette largeur d’impulsion vaut donc

tCLKOUT ≤ TPWMSYNC = 256 ⋅ tCLKOUT . 3.15

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 20

soit

38.5ns ≤ TPWMSYNC @ 26MHz = 9.85µs . 3.16

Après un reset, le registre PWMSYNCWT est initialisé à 0x27 soit 39 en décimal. La largeur
d’impulsion par défaut vaut donc 1.54us@26MHz.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMSYNCWT : 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 DM(0x2060)

Figure 3-20 : Registre de contrôle de la largeur d’impulsion de PWMSYNC

3.3.2.5 Rapports cycliques liés aux registres PWMCHA, PWMCHB et PWMCHC


Les rapports cycliques des signaux PWM de sortie (AH, AL, BH, BL,CH, CL) sont fixés à
l’aide des registres de contrôle PWMCHA pour {AH, AL}, PWMCHB pour {BH, BL} et
finalement, PWMCHC pour {CH, CL}.
Les registres de contrôle des rapports cycliques sont programmés en nombres entiers de
périodes d’horloge de base tCLKOUT.
Label Registres en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMCHA : DM(0x200C)
PWMCHB : DM(0x200D)
PWMCHC : DM(0x200E)

Figure 3-21 : Registres de contrôle des rapports cycliques pour les trois branches

Le temps pendant lequel le signal de la partie supérieure d’une branche est actif sur une
demi-période de pulsation (commande de fermeture du contacteur statique) provient d’un
ajustement de la valeur du registre de contrôle des rapports cycliques avec le temps
d’antichevauchement défini dans le registre de contrôle PWMDT.
Les signaux de sortie de l’unité de génération des signaux PWM sont tous actifs à l’état bas.
L’état actif étant défini par l’état fermé (ON) du contacteur statique commandé par le signal
PWM correspondant.

3.3.2.5.1 Cas de la mise à jour simple (Single update mode)


Sur la Figure 3-22 on peut remarquer que les signaux AH et AL sont symétriques par rapport
à au point milieu de la période de pulsation, puisque PWMCHA, PWMTM et PWMDT sont
utilisés pour définir le temps de l’état actif pour les deux demi-périodes. On voit clairement
que les deux signaux AH et AL sont modifiés de la même valeur [PWMDT] ⋅ tCLKOUT . Les
signaux représentés à la Figure 3-22 montrent entre autres le signal de synchronisation
PWMSYNC dont la largeur dépend du contenu du registre de contrôle PWNSYNCWT et
l’état du bit SYSSTAT[3] dont la valeur définit la première ou la seconde demi-période.
Le temps effectif pendant lequel le signal AH est actif est donné par la relation

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 21

TAH = 2 ⋅ ([PWMCHA] − [PWMDT]) ⋅ tCLKOUT . 3.17

Et pour le signal AL

TAL = 2 ⋅ ([PWMTM] − ([PWMCHA] + [PWMDT] )) ⋅ tCLKOUT . 3.18

Ces relations permettent d’écrire le rapport cyclique de chaque signal


TAH [PWMCHA] − [PWMDT]
DAH = = . 3.19
TPWM [PWMTM]

TAL [PWMTM] − [PWMCHA] − [PWMDT]


DAL = = . 3.20
TPWM [PWMTM]

Bien entendu la valeur minimum des temps TAH et TAL et par conséquent des rapports
cycliques DAH et DAL ne peut être inférieure à 0 et supérieure à TPWM respectivement 1.
[PWMCHA]t CLKOUT
[PWMCHA]t CLKOUT
AH

2[PWMDT]t 2[PWMDT]t
t
AL CLKOUT CLKOUT

t
PWMSYNC
([PWMSYNCWT]+1)t CLKOUT

t
SYSSTAT [3]

[PWMTM]t CLKOUT [PWMTM]t CLKOUT


t

Figure 3-22 : Signaux typiques des sorties AH et AL du bloc modulateur PWM en mode « single
update » avec l’entrée PWMPOL = « 0 » et PWMSEG=0x1FF

3.3.2.5.2 Cas de la mise à jour double (Double update mode)


La Figure 3-23 illustre un cas général correspondant au mode « Double update ». Ce cas, pas
forcement réaliste montre qu’il est possible de modifier :
− la demi-période de pulsation (TPWM) ;
− les rapports cycliques (DAH, DAL) ;
− le temps d’antichevauchement (TA) ;
− la largeur de l’impulsion du signal de synchronisation TPWMSYNC.
Pour la deuxième partie de la période du PWM. Il est bien entendu possible de garder les
mêmes valeurs pour les deux demi-périodes sans pour autant garantir le respect strict de la
symétrie des signaux de sortie par rapport au point milieu de la période PWM.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 22

On peut remarquer sur la Figure 3-23 la similitude de l’insertion de l’antichevauchement avec


le mode « Single update ».
En utilisant l’indice <1> pour la première partie de la période PWM et l’indice <2> pour la
seconde, on peut écrire les relations suivantes :
Période PWM TPWM

TPWM = ([ PWMCTM 1 ] + [ PWMCTM 2 ]) ⋅ tCLKOUT 3.21

− Temps effectif pendant lequel le signal AH est actif

TAH = (([ PWMCHA1 ] + [ PWMCHA2 ]) − ([ PWMDT1 ] + [ PWMDT2 ])) ⋅ tCLKOUT 3.22

− Temps effectif pendant lequel le signal AL est actif


TAL = (([ PWMTM 1 ] + [ PWMTM 2 ]) −
3.23
(([ PWMCHA1 ] + [ PWMCHA2 ]) + ([ PWMDT1 ] + [ PWMDT2 ]) )) ⋅ tCLKOUT
− Rapport cyclique DAH

DAH =
TAH
=
([PWMCHA1] + [PWMCHA2]) − ([PWMDT1] + [PWMDT2]) 3.24
TPWM [PWMTM1] + [PWMTM 2]

− Rapport cyclique DAL


TAL ([PWMCHA1] + [PWMCHA2]) + ([PWMDT1] + [PWMDT2])
DAL = =1− 3.25
TPWM [PWMTM1] + [PWMTM 2]
[PWMCHA] 1tCLKOUT [PWMCHA] 2tCLKOUT
AH

2[PWMDT] 1tCLKOUT 2[PWMDT] 2tCLKOUT


t
AL

t
PWMSYNC
([PWMSYNCWT] 2+1)t CLKOUT ([PWMSYNCWT] 2+1)t CLKOUT

t
SYSSTAT [3]

[PWMTM] 1tCLKOUT [PWMTM] 2tCLKOUT t

Figure 3-23 : Signaux typiques des sorties AH et AL du bloc modulateur PWM en mode « Double
update » avec l’entrée PWMPOL = « 0 » et PWMSEG=0x1FF

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 23

Comme pour le mode « Single update » la valeur minimum des temps TAH et TAL et par
conséquent des rapports cycliques DAH et DAL ne peut être inférieure à 0 et supérieure à TPWM
respectivement 1.
Les caractéristiques temporelles des signaux de sortie BH, BL, CH et CL se déterminent en
programmant les registres PWMCHB et PWMCHC de manière identique à ce qui a été
présenté ci-dessus.

3.3.2.6 Comportement de l’unité de génération des signaux PWM en saturation


L’unité de génération des signaux PWM produit des signaux actifs à l’état logique « 0 » dont
les rapports cycliques peuvent varier de 0% à 100%. Les deux zones frontières représentent
les limitations ou saturations des commandes. On parle de conduction complète (Full ON) si
c’est la commande supérieure d’une branche (AH, BH, CH) qui est active ou d’ouverture
complète (Full OFF) si c’est la commande inférieure d’une branche (AL, BL, CL) qui est
active.
[PWMCHA]t CLKOUT
AH FULL ON

t
AL 2[PWMDT]t CLKOUT

t
AH FULL OFF

t
AL 2[PWMDT]t CLKOUT

t
Dead time inserted
PWMSYNC

t
[PWMTM]t CLKOUT [PWMTM]t CLKOUT

Exemple de transition entre une modulation normal et


Figure 3-24 :
conduction (Full ON) ou une ouverture (Full OFF) complète

Entre ces deux extrêmes on parle de modulation normale (normal modulation).


− Conduction complète
Ce mode de fonctionnement est obtenu en gardant xH(1) à l’état logique « 0 » et
respectivement xL(1),à l’état logique « 1 » entre deux valeurs successives du signal
de synchronisation PWMSYNC. Pour obtenir ce mode il faut soit respecter les
relations définissant TxH et TxL, soit jouer sur les largeurs d’impulsions minimale de
xH(1) et xL(1).

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 24

− Ouverture complète
Ce mode de fonctionnement est obtenu en gardant xH(1) à l’état logique « 1 » et
respectivement xL(1),à l’état logique « 0 » entre deux valeurs successives du signal
de synchronisation PWMSYNC. Pour obtenir ce mode il faut soit respecter les
relations définissant TxH et TxL, soit jouer sur les largeurs d’impulsions minimale de
xH(1) et xL(1).
− Modulation normale
Dans ce mode de fonctionnement, les relations 3.17, 3.18, 3.22 et 3.23 sont
utilisables.
(1)
: x représente une des commandes de branches, soit A, B, et/ou C

La transition d’un état « Full ON » en un état « Full OFF », dans certaines situations,
nécessite un temps d’antichevauchement supplémentaire afin d’éviter le non-respect des
contraintes imposées par la technologie des composants de puissance utilisés. Quel que soit le
mode utilisé (« Single or Double update »), l’unité de génération des signaux PWM ajoute un
temps d’antichevauchement si c’est nécessaire.
L’adjonction un temps d’antichevauchement est en général nécessaire lorsqu’une transition à
lieu à la frontière ou à l’intérieur d’une impulsion du signal PWMSYNC.

3.3.2.7 Impulsions minimums des paires de signaux de sortie : registre de contrôle PWMPD
Les composants de puissances utilisés en électronique de commutation présentent des temps
de commutation à l’ouverture et à la fermeture non-négligeables. De plus la chaîne de
commande électronique entre la sortie du DSP et les composants de puissance demande un
certain délai de propagation qui peut être différent selon la polarité de la transition. Les
impulsions trop courtes ne permettent donc pas au composant de puissance de passer d’un
état conducteur à un état bloqué ou vice-versa. En limitant la valeur minimale des impulsions
de commande, on limite les pertes de commutation sans altérer le comportement du système.
Un registre de contrôle PWMPD d’une capacité de 10 bits est prévu pour définir une largeur
d’impulsion minimale sur tout les signaux PWM (AH, AL, BH, BL, CH et CL). Toute
impulsion inférieure à cette valeur est purement et simplement supprimée et le signal
complémentaire est maintenu.
Le temps minimum est défini par la relation

TMIN = [PWMPD] ⋅ tCLKOUT 3.26

La résolution ∆TMIN du temps minimum d’enclenchement vaut donc 38.5ns@26MHz

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMPD : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x200A)

Figure 3-25 : Registre de contrôle de la largeur minimum des impulsions

3.3.2.8 Résolution des signaux PWM


En mode « Single update » ce sont les mêmes valeurs contenues dans les registres de contrôle
PWMCHA, PWMCHB et PWMCHC qui sont utilisées pour les deux demi-périodes PWM.
La résolution sur les temps d’enclenchement vaut donc

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 25

∆TON = 2 ⋅ tCLKOUT 3.27

soit 77ns@26MHz.
Dans le mode « Double update », il est possible, en agissant sur les valeurs des registres de
contrôle PWMCHA, PWMCHB et PWMCHC de corriger d’un incrément le temps (tCLKOUT)
d’enclenchement.

∆TON = tCLKOUT 3.28

soit 38.5ns@26MHz
Le Tableau 3-3 illustre, pour une capacité maximum du nombre de bits du registre de
contrôle PWMTM, la fréquence minimum correspondante, la résolution du rapport cyclique
et du temps d’enclenchement, ceci pour les deux modes de mise à jour. Les valeurs sont
données pour une fréquence d’horloge CLKOUT de 26 MHz
PWMTM Single Update Double Update
Résolution FPWM Résolution FPWM Résolution
[bits] [KHz] D [%] ∆TON [ns] [KHz] D [%] ∆DTON [ns]
7 101.56 0.781 77 203.12 0.390 38.5
8 50.78 0.390 77 101.56 0.195 38.5
9 25.39 0.195 77 50.78 0.098 38.5
10 12.70 0.098 77 25.39 0.049 38.5
11 6.35 0.049 77 12.70 0.024 38.5
12 3.17 0.024 77 6.35 0.012 38.5
Tableau 3-3 : Fréquences PWM minimums, et résolutions correspondantes

3.3.3 Unité de contrôle des signaux PWM de sortie


L’unité de contrôle des signaux PWM (Output Control Unit) permet entre autres la
commande de moteur à commutation électronique (ECM : Electronically Commuted Motor).
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMSEG : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x200F)

AH↔AL AL AH BL BH CL CH
0 : Croisement désactivé
BH↔BL
1 : croisement activé 0 : signal activé
CH↔CL 1 : signal désactivé

Figure 3-26 : Registre de contrôle des croisements entre commande d’une même branche

La configuration des signaux PWM est obtenue par la programmation du registre de contrôle
PWMSEG.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 26

3.3.3.1 Inversion des signaux complémentaires de l’unité de génération des signaux PWM
La mise à « 1 » des bits PWMSEG[6, 7, 8] permet d’inverser les signaux complémentaires,
respectivement AH/AL, BH/BL, CH/CL. Après un RESET, les valeurs par défaut de ces trois
bits sont « 0 ».

3.3.3.2 Activation et désactivation des signaux PWM


Le registre de contrôle PWMSEG permet également d’activé (enable) ou de désactivé
(disable) chaque signal PWM. Ce sont les bits de contrôle N°5 (AL), N°4 (AH), N°3 (BL),
N°2 (BH), N°1 (CL), N°0 (CH). Lorsqu’un de ces bits est mis à « 1 », le signal correspondant
est désactivé (mis à « 1 ») quel que soit l’état des registres associés à l’unité de génération des
signaux PWM. Les signaux sont maintenus dans l’état « OFF » tant que les bits
correspondant du registre de contrôle PWMSEG sont à « 1 ». Le contenu de PWMSEG est
mis à jour au flanc montant du signal de synchronisation PWMSYNC, ce qui signifie que
l’activation ou la désactivation d’un signal n’est effectif qu’au début de chaque période PWM
pour le mode « Single update » et au début ou au milieu de chaque période PWM pour le
mode « Double update ».

3.3.3.3 Contrôle des moteurs DC sans collecteur


Le contrôle des moteurs DC sans collecteur (DC brushless motor) requiert une configuration
particulière des signaux PWM.
[PWMCHA]t CLKOUT [PWMCHA]t CLKOUT
=[PWMCHB]t CLKOUT =[PWMCHB]t CLKOUT
AH

2[PWMDT]t 2[PWMDT]t
t
AL CLKOUT CLKOUT

BH
t

t
BL

CH
t

t
CL

[PWMTM] 1 tCLKOUT [PWMTM] 2 tCLKOUT t

Figure 3-27 : AH, BL « ON », AL, BH, CH, CL « OFF »

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 27

En effet pour ce type de moteur une des branches doit être ouverte (non active (OFF)) et deux
branches doivent simultanément avec une partie haute (H) et une partie basse (L) active
(ON). La Figure 3-27 illustre le cas particulier ou les signaux AH et BL sont actifs (« 1 ») et
la branche C ouverte.
Pour réaliser la commande illustrée à la Figure 3-27, il faut que :
− PWMCHA=PWMCHB
− le registre PWMSEG ait
‰ à « 0 » les bits :
PWMSEG[8,6] : ({AH, AL}, {CH, CL} non croisés),
PWMSEG[4,3] : (AH, BL → « ON »)
‰ à « 1 » les bits
PWMSEG[7] : (BH ↔ BL : croisement),
PWMSEG[5,2,1,0] : (CH, CL, BH, AL → « OFF »),
soit [PWMSEG] = 0000000010100111=0x00A7

3.3.3.4 Contrôle des moteurs à réluctances variables, mode SR


L’unité de contrôle du générateur PWM permet le contrôle de moteurs à réluctances
variables. Ce mode est activé en forçant la broche PWMSR à « 0 ». Dans le mode,la partie
inférieurs des trois branches est à l’état « ON » permanent. Les registres PWMCHA,
PWMCHB et PWMCHC permettent le contrôle des rapports cycliques pour les composants
des parties supérieures des branches. En utilisant les commandes de croisement à l’aide du
registre PWMSEG[8,7,6], il est possible de d’avoir des états permanents sur les parties
supérieures des branches alors que les parties inférieures sont commandées avec des rapports
cycliques variables. Ce mode de commutation est nécessaire en raison de la configuration des
convertisseurs propre à la commande de moteurs à réluctances variables. La Figure 3-28
montre que, pour avoir un courant dans les bobinages, il que les transistors d’une même
branche soient conducteurs simultanément. L’utilisation de ce mode s’avère dangereux
(destructeur) si la charge n’est pas placée entre les parties supérieure et inférieure d’une
même branche

AH BH BH
Phase A

Phase B

Phase B

AL BL BL

Figure 3-28 : Configuration d’un convertisseur pour moteur à réluctances variables

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 28

3.3.4 Unité de contrôle des signaux de Gate


L’unité de contrôle des signaux de Gate (Gate drive unit) permet d’ajouter une porteuse haute
fréquence (high frequency carrier) afin de moduler le signal PWM de sortie dans sa partie
active. Cette particularité est intéressante si la séparation galvanique entre électronique de
commande et l’électronique de puissance est réalisée au moyen de transformateurs
d’impulsions. Le registre de contrôle PWMGATE permet le choix de la fréquence de
modulation.
Label Registre en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMGATE : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x200B)

0 : désactivé Modulation partie inférieure


1 : activé Modulation partie supérieure Fréquence de la modulation
GDCLK

Figure 3-29 : Registre de contrôle de la modulation des signaux de sortie

3.3.4.1 Modulation avec porteuse haute fréquence


Une porteuse peut être insérée soit pour l’ensemble des signaux AH, BH, CH (bits N°8 à
« 1 »), soit pour les signaux AL, BL, CL (bits N°9 à « 1 ») ou pour les deux.
La fréquence de commutation (frequency chopping) de la porteuse peut être définie à l’aide
des 8 bits PWMGATE[7 – 0]. La période de la porteuse est définie par la relation suivante :

TCHOP = 4 ⋅ (PWMGATE7 − 0] + 1) ⋅ tCLKOUT 3.29

Et par conséquent la fréquence de commutation est donnée par la relation


FCLKOUT
FCHOP = 3.30
4 ⋅ ([PWMGATE7 − 0] + 1)

Est une subdivision de l’horloge CLKOUT. Sachant que [PWMGATE7-0] peut varier de 0 à
255, on peut définir la plage de fréquence de commutation disponible.

25.4KHz ≤ FCHOP @ 26MHz ≤ 6.5MHz 3.31

[PWMCHA] 1 tCLKOUT [PWMCHA] 2tCLKOUT


AH

2[PWMDT] 1 tCLKOUT 2[PWMDT] 2 tCLKOUT


t
AL

4([GDCLK] 1 +1)tCLKOUT t

[PWMTM] 1 tCLKOUT [PWMTM] 2 tCLKOUT

Figure 3-30 : Exemple d’une modulation des signaux par une porteuse haute fréquence

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 29

Le registre PWMGATE doit être défini avant l’initialisation du bloc PWM.

3.3.4.2 Contrôle de polarité des signaux de sortie


Jusqu’à l’unité de contrôle des signaux de Gate, les signaux PWM sont considérés comme
actifs à l’état « 0 ». Par actif il est sous-entendu que le composant de puissance commandé est
en conduction. La polarité des signaux de sortie peut être choisie grâce à la broche d’entrée
PWMPOL. Si cette broche est connectée à la masse numérique (DGND), la polarité des
signaux est telle que c’est à l’état « 0 » qu’ils sont actifs Par contre si la broche PWMPOL
est connectée à l’alimentation numérique VDD, c’est l’état « 1 » qui doit être considéré
comme actif. Si cette entrée n’est pas connectée, une résistance interne (pull-up) imposera
l’état « 1 » comme actif.
L’état pris en considération pour la polarité des signaux de sortie peut être connu en lisant le
bit SYSSTAT[2] (voir Figure 3-19).

3.3.5 Unité de déclenchement du bloc PWM


Si un événement externe provoque une condition d’erreur reconnue par un signal
quelconque, il est possible de désactiver instantanément les sorties des signaux PWM (mise
dans l’état « OFF » en tenant compte de l’entrée PWMPOL). Ce signal, s’il est connecté à la
broche PWMTRIP , agit de manière asynchrone sur son flanc descendant (pas de liaison avec
l’horloge interne CLKOUT) et est indépendant de la partie software. Le signal PWMSYNC
est également désactivé et entraînant du même coup la désactivation des interruptions
associées à ce signal. L’entrée PWMTRIP possède une résistance interne (pull down) qui si
aucun signal lui est connecté, provoque une désactivation du bloc PWM. L’état de la broche
PWMTRIP peut être connu en lisant le bit SYSSTAT[0] (voir Figure 3-19).
Les 12 pins d’entrées/sorties programmables peuvent aussi être configurées pour désactiver
instantanément les signaux PWM de sortie (§3.5.5) et ainsi jouer le même rôle que l’entrée
PWMTRIP . Le registre de contrôle PIOPWM permet de configurer les pins devant remplir
la fonction de désactivation. En écrivant un « 1 » dans l’emplacement dédicacé au PIO
choisi, (bit PIOPWM[0] pour PIO0, bit PIOPWM[1] pour PIO1, …), on active la fonction
PWMTRIP pour ce PIO. Chaque entrée PIO possède une résistance interne (pull down) qui
si aucun signal lui est connecté, provoque une désactivation du bloc PWM si le bit du registre
de contrôle PIOPWM associé est à « 1 ». Suite à un RESET, l’ensemble des bits du registre
de contrôle PIOPWM sont à, « 1 ». Il est donc nécessaire d’initialiser ce registre avant
l’utilisation du bloc PWM.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PI011 PI010 PI09 PI08 PI07 PI06 PI05 PI04 PI03 PI02 PI01 PI00
PIOPWM : 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 DM(0x2042)
0 : commande PWM désactivée
1 : commande PWM activée

Figure 3-31 : Registre de contrôle d’activation de la fonction PWMTRIP pour les PIO

En plus des possibilités de désactivation hardware, il est possible de réaliser cette fonction en
forçant à « 1 » le bit PWMSWT[0].

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 30

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PWMSWT : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2061)

Figure 3-32 : Registre de contrôle de désactivation software du générateur PWM

L’effet est similaire à une commande hardware PWMTRIP ou PIOx . Une commande
hardware n’a par contre aucun effet sur le registre de contrôle PWMSWT. Il est donc
possible de savoir si la désactivation du bloc PWM a été crée par une commande hardware
ou software en lisant le bit PWMSWT[0]. Après lecture le bit PWMSWT[0] est
automatiquement forcé à « 0 ».
Quelle que soit la source de la commande de désactivation du bloc PWM, une interruption
spécifique aux périphériques de l’ADMC401 est activée « IRQ 2 : PWM Trip Interrupt »
dont le vecteur d’interruption est 0x0058. Le signal de synchronisation PWMSYNC est
maintenu à « 0 » alors que les compteurs et timers internes continuent à fonctionner.
La réactivation du bloc PWM ne peut se faire qu’en annulant la source de la désactivation
puis en écrivant de nouvelles valeurs dans les registres de contrôle PWMCHA, PWMCHB.
PWMCHC et PWMTM.

3.3.6 Limite des caractéristiques externes du bloc PWM


Le Tableau 3-4 résume les limites des caractéristiques externes du bloc PWM en admettant
une fréquence de l’horloge interne de FCLKOUT=26MHz.
Paramètres Condition de test Min. Typ. Max. Unités
Résolution du compteur/décompteur 16 [bits]
∆TON Résolution du temps d’enclenchement « Single update » 77 [ns]
« Double update » 38.5 [ns]
TA Temps d’antichevauchement 0 78.8 [us]
∆TA Résolution du temps d’antichevauchement 77 [ns]
TMIN Impulsions minimales des sorties PWM 0 39.4 [us]
∆TMIN Résolution de impulsion minimale 38.5 [ns]
FPWM Fréquence de pulsation Résolution 16 bits 198 [Hz]
Résolution 8 bits 102 [KHz]
TPWMSYNC Largeur de l’impulsion du signal PWMSYNC 38.5 9850 [ns]
∆TPWMSYNC Résolution de la largeur de PWMSYNC 38.5 [ns]
FCHOP Fréquence de modulation des commandes 25.4 6500 [KHz]

Tableau 3-4 : Limite des caractéristiques externe du bloc PWM

3.3.7 Activation des interuption liés au modulateur PWM.


Le registre PICMASK permet d’activer/désactiver l’interruption liée bloc de chronométrie
d’événements séquentiels.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PICMASK : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x201D)
PWMTRIP PWMSYNC

Figure 3-33 : Registre d’activation/désactivation des interruptions PWM

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 31

3.4 INTERFACE POUR CODEUR INCRÉMENTAL

3.4.1 Description générale


L’ADMC401 a, parmi ces périphériques, une interface performante pour encodeurs
incrémentaux (EIU : Encoder Interface Unit).
Ce type de périphérique est très souvent utilisé pour les applications ou des mesures de
vitesse et de position sont nécessaires. Il est constitué de trois blocs fonctionnels distincts,
soit :
− une interface encodeur (Encoder interface block) ;
− un compteur d’événement (Encoder event timer block) ;
− un timer (Encoder loop timer).
La Figure 3-50 illustre l’architecture de ce périphérique

ENCODER LOOP TIMER ENCODER EVENT TIMER BLOCK

CLOCK DIVIDER
TIMEOUT
EIUSCALE[7...0]
ENCODER EVENT EETDIV[15...0]
EIUTIMER[15...0] TIMER EETSTAT[0]
EIUPERIOD[15...0] EETT[15...0]
PULSE EETDELTAT[15...0]
DECIMATOR EETN[7...0]

DIRECTION QUADRATURE SIGNAL

A 16-BITS
EIA EETCNT[15...0]
QUADRATURE EUICNT[15...0]
B UP/DOWN
EIB EIUMAXCNT[15...0]
COUNTER EIUCNTRL[8...0]
PROGRAMABLE
EIUSTAT[7...0]
NOISE FILTERS
Z EISLATCH[15...0]
EIZ ENCODER EIZLATCH[15...0]
S COUNTER EIUFILTER[5...0]
EIS CONTROL

ENCODER INTERFACE BLOCK

Figure 3-34 : Configuration du périphérique pour encodeurs incrémentaux

3.4.1.1 Interface encodeur


Cette interface pour encodeur est constituée d’un compteur/décompteur d’une capacité de 16
bits avec entrées pour signaux en quadrature (sin – cos), un filtre numérique programmable
permettant de s’affranchir du bruit souvent présent sur les signaux codeurs (sin – cos – réf.) et
un contrôleur permettant la mémorisation et la mise à jour du compteur/décompteur. Quatre
entrées sont à disposition.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 32

Les pins EIA et EIB sont des entrées dédicacées aux signaux en quadrature des deux canaux
principaux de l’encodeur.
La broche EIZ est l’entrée en principe dédicacée au signal de référence, signal issu des
marques de référence placées sur la règle ou sur le disque incrémental. La broche EIS est une
entrée permettant une synchronisation entre la valeur contenue dans le compteur/décompteur
et d’autres grandeurs d’acquisition.
Ces deux entrées peuvent donc être utilisées pour mémoriser le contenu du compteur/
décompteur dans les registres EIZLATCH pour EIZ et EISLATCH pour EIS. En effet, il est
possible par programmation soit de mémoriser l’état du compteur/décompteur sur le flanc
montant des signaux présents sur les entrées EIZ et EIS, ou sur le flanc montant si le sens du
mouvement mesuré est positive et sur le flanc descendant si le sens du mouvement est
négative.
L’interface d’entrée de l’encodeur possède des filtres numériques programmables sur ses
quatre entrées EIA, EIB, EIS et EIZ. Ce filtrage rudimentaire permet d’éliminer certaines
impulsions parasites pouvant affecter le contenu du compteur/décompteur. L’interface
encodeur travaille à la fréquence d’horloge interne CLKOUT. Dans le cas idéal, la fréquence
maximum des signaux en quadrature EIA et EIB est de 4.33MHz@FCLKOUT=26MHz, ainsi la
fréquence de comptage /décomptage est de 17.3MHz.
EIA (Cos)

t
EIB (Sin)

t
EIS EIZ

t
Mémorisation Mémorisation
sur flanc montant sur flanc descendant
Déplacement positif de x Déplacement négatif de x

Figure 3-35 : Signaux en quadrature en sens du mouvement

La programmation du bloc de l’interface encodeur peut être réalisée de multiples façons :

1. le signal de référence, placé sur la broche EIZ, lorsqu’il est sujet à une transition active
(flanc montant ou descendant), met à zéro le compteur/décompteur ;
2. l’entrée EIZ n’est pas activée et la mise à « 0 » du compteur/décompteur à lieu en
fonction du sens de déplacement de la valeur maximum admissible contenue dans le
registre EIUMAXCNT ;
3. le compteur/décompteur est mis à « 0 » une seule fois lors de la première transition
active de l’entrée de référence EIZ.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 33

Ces trois modes sont définis par programmation des registres de contrôle EIUCTRL et
EIUSTAT.
L’interface encodeur permet également d’implanter une vérification de l’état du
compteur/décompteur. Il s’agit ici de vérifier, lors de l’apparition de l’impulsion
correspondant au signal de référence de l’encodeur, que l’état du compteur/décompteur est
bien à la valeur attendue. Les deux valeurs possibles sont « 0 » ou la valeur maximum
contenue dans EUIMAXCNT, ceci selon le sens de déplacement. Si une erreur est détectée,
une interruption est générée.

3.4.1.2 Timer
L’interface pour encodeur contient un timer de 16 bits dont la structure est identique à celui
contenu dans la partie DSP. Ce timer contient un registre de comptage, un registre de période
permettant la remise à « 0 » du timer qui travaille ainsi en boucle et un registre de facteur
d’échelle qui permet de diviser le signal d’horloge CLKOUT afin de fixer la référence temps
pour le registre de comptage. Lorsque le compteur a atteint sa valeur maximum, une
interruption est générée et un certain nombre de registres de l’interface encodeur sont
mémorisés afin de permettre une mesure précise de la position et, par chronométrie, un calcul
de la vitesse.

3.4.1.3 Compteur d’événement


L’interface encodeur contient également un bloc permettant de définir des intervalles de
temps entre l’apparition d’événements successifs. Il est par exemple possible de mesurer le
temps entre 1 et 255 impulsions (flancs) des signaux en quadrature de l’encodeur. Différentes
fonctions peuvent être utilisées pour la mesure de base vitesse.

3.4.2 Structure de l’étage d’entrée de l’interface encodeur

3.4.2.1 Introduction
L’interface encodeur est principalement constituée d’un compteur/décompteur de 16 bits
pour des signaux d’entrée en quadrature ou une entrée pour un train d’impulsions et la
seconde pour un signal indiquant le sens de déplacement. La valeur courante du
compteur/décompteur est accessible dans un registre de 16 bits EIUCNT. Un second registre
EIUMAXCNT permet dans certaines conditions de fixer la valeur maximum du
compteur/décompteur. Tant que ce registre n’est pas chargé, l’interface encodeur n’est pas
initialisé et le bit EIUSTAT[2] est à « 1 ». Le contenu de EIUMAXCNT permet une mise à
jour de l’état du compteur/décompteur. En effet selon le sens de déplacement le compteur/
décompteur est
− forcé à « 0 » lorsqu’il a atteint la valeur définie dans EIUMAXCNT (comptage) ;
− forcé à [EIUMAXCNT] lors d’un décomptage.
Le registre EIUMAXCNT permet également de déceler une erreur de comptage/décomptage.
Toutes ces opérations sont programmables par le registre de contrôle EIUCTRL

3.4.2.2 Etage de synchronisation et filtrage numérique


La Figure 3-36 représente le bloc fonctionnel de l’étage d’entrée de l’interface encodeur.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 34

Les trois signaux fondamentaux issus d’un encodeur standard (ChannelA → EIA, ChannelB
→ EIB, Reference → EIZ), auxquels il faut ajouter une entrée supplémentaire de
mémorisation (EIS) sont dans un premier temps synchronisés avec l’horloge interne de base
des périphériques (CLKOUT). Cette première étape permet d’éliminer la nature asynchrone
du monde analogique, soit l’encodeur lui-même.

EIAS A
EIA

EIBS B
EIB
INPUT THREE STAGE
SYNCHRONISATION DIGITAL FILTER
EIZS
EIZ STAGE Z
EISS
EIS S

CLKOUT
CLOCK CLKFILTER
DIVIDE

EIUFILTER[5...0]

Figure 3-36 : Etage de synchronisation et filtrage des entrées de l’interface encodeur

Suite à cette opération de synchronisation, les quatre signaux (EIAS, EIBS, EIZS et EISS)
sont appliqués à l’entrée d’un filtre numérique programmable qui valide l’état du signal si
celui-ci prend la même valeur durant trois cycles consécutifs de l’horloge interne
(CLKFILTER) du filtre numérique.

X1

Shift register Y
EIx
X2

M
CLKFILTER U
X
A

Figure 3-37 : Filtrage des entrées de l’interface encodeur

Si l’état du signal d’entrée EIx change à l’intérieur d’un intervalle de trois périodes de
l’horloge CLKFILTER , la sortie est maintenue à sa valeur précédente. La période de
CLKFILTER peut être programmée à l’aide des bits EIUFILTER[5 … 0]. Ces six bits sont
utilisés pour diviser la fréquence de l’horloge de base des périphériques (CLKOUT). Si la
valeur N est écrite dans EIUFILTER[5 … 0], la période de l’horloge interne du filtre prend la
valeur

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 35

tFILTER = (N + 1) ⋅ tCLKOUT 3.32

La structure rudimentaire du filtrage permet de garantir une largeur minimum d’impulsions


donnée par la relation

2(N + 1)tCLKOUT ≤ t pulseMIN ≤= 3(N + 1)tCLKOUT 3.33

CLKOUT

t
EIA

t
EIB

t
EIAS

1 2 3 4 5 1 2 3 4 1 2 3 4 5 1
t
EIBS

x 1 1 1 2 3 4 1 2 3 4 5 1 2 3
t
A
3 t CLKFILTER 3 t CLKFILTER 3 t CLKFILTER

t
B
3 t CLKFILTER 3 t CLKFILTER 3 t CLKFILTER

Figure 3-38 : Filtrage des entrées de l’interface encodeur pour N=0

En effet la validation d’une impulsion dépend de l’intervalle de temps séparant la transition


du signal et sa prise en compte (synchronisation) par l’horloge interne du filtre, cet intervalle
de temps n’étant pas prédictible.
Sur la Figure 3-39, pour N=3 et une fréquence d’horloge FCLKOUT=26MHz, la fréquence
interne du filtre numérique est de FFILTER 6.5MHz. L’impulsion minimum détectable à coup
sûr est donc de 3(N+1)tCLKOUT soit 462ns. Par conséquent la période minimum assurant un
fonctionnement correct pour les entrées est de 924ns, soit une fréquence maximum de
1.08MHz. On en tire donc la relation
FCLKOUT
FENCMAX = 3.34
6( N + 1)

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 36

La valeur par défaut (après un RESET) du registre de contrôle EIUFILTER[5…1] est 0x00.
Dans ce cas la fréquence interne du filtre FCLKFILTER est égale à la fréquence FCLKOUT et le
filtrage est minimum.
Comme mentionné précédemment, il y a une liaison directe entre la fréquence d’horloge du
filtre FCLKFILTER et la fréquence maximum applicable sur les entrées EIA, EIB ou sur les
largeurs d’impulsions sur EIZ et EIS. Ces paramètres sont proportionnels à la vitesse de la
partie mobile et à la résolution de l’encodeur. L’influence du filtre sur la largeur de
l’impulsion admissible sur l’entrée EIZ et EIS est différente de celle des signaux EIA et EIB.
En effet sur les codeurs standard, la marque de référence à une largeur correspondant à une
période, une demi-période ou un quart de période des signaux incrémentaux (Canal A →
EIA, Canal B → EIB). Si les deux premiers cas ne posent pas de problème, lorsque la largeur
de l’impulsion est inférieure au quart de la période, la fréquence du filtre numérique doit être
doublée, soit pour N=3, FFILTERMIN=2.15MHz. C’est ce dernier cas qui est le plus fréquent en
pratique.
N+1 N+1 N+1
N=3
CLKOUT 1 2 3 4 5 6 7 8 9 10 11 12

CLKFILTER
t

t
EIX

Impulsion maximum 3(N+1)t CLKOUT t


Impulsion minimum 2(N+1)t CLKOUT
EIXS

1 2 3 t
X

Figure 3-39 : Filtrage des entrées de l’interface encodeur pour N=3

3.4.2.3 Définition du sens de déplacement


Le compteur/décompteur est en incrémentation (comptage) lorsque le signal sur l’entrée A
est en avance d’un quart de période sur le signal de l’entrée B. Le compteur/décompteur est
en décrémentation (décomptage) dans le cas inverse. La Figure 3-40 illustre ces deux cas de
fonctionnement.
En forçant à « 0 » le bit EIUCTRL[0] (REV), l’entrée EIA de l’interface encodeur correspond
à l’entrée A du compteur/décompteur, respectivement l’entrée EIB correspond à l’entrée B.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 37

En forçant à « 1 » le bit EIUCTRL[0] (REV), l’entrée EIA correspond à l’entrée B et l’entrée


EIB à l’entrée A.
Le bit EIUCTRL[0] (REV) permet donc une inversion de la définition du sens de déplacement
sans devoir modifier le hardware.
Par défaut (après un RESET) le bit EIUCTRL[0] (REV) est à « 0 ».
Le compteur/décompteur, d’une capacité de 16 bits, fournit deux signaux additionnels. L’un
représente le sens de déplacement et le second un train d’impulsion dont chacune d’elle
correspond à un flanc des signaux d’entrée A et B. Ces deux signaux sont issus d’un
discriminateur de sens classique. Ces deux signaux sont directement utilisés comme entrée du
bloc compteur et chronométrie d’événements.
A A

t t
B B

n+3

n+2

n+1

n-1

n-2

n-3
n+1

n+2

n+3

n+4
n-3

n-2

n-1

n
n

t t
QUADRATURE QUADRATURE

t t
DIRECTION DIRECTION

A en avance sur B : Comptage


t A en retard sur B : Décomptage
t

Figure 3-40 : Caractéristiques des entrées/ sorties du compteur/décompteur

Le bit EIUSTAT[1] indique l’état du signal correspondant au sens de déplacement (un « 1 »


commande un comptage des impulsions).

3.4.2.4 Mode quadrature ou train d’impulsions et sens de déplacement


En lieu et place de deux signaux en quadrature, les entrées EIA et EIB de l’interface
encodeur peuvent également accepter sur EIA un train d’impulsions et sur EIB un signal
indiquant le sens de déplacement. La définition des signaux est identique à celle du §3.4.2.3.
Ce mode, appelé mode fréquence et direction (FD Mode : Frequency and Direction Mode)
est activé en forçant à « 1 » le bit EIUCTRL[6].
Par défaut (après un RESET), le bit EIUCTRL[6] est mis à « 0 ».
Dans le mode « FD » la mise à jour du compteur/décompteur (§3.4.2.5), la détection d’erreurs
(§3.4.2.8) et le mode de reconnaissance unique de la marque de référence (§3.4.2.7) ne sont
pas utilisables. En d’autres mots, si le bit EIUCTRL[6] est à « 1 », les bits EIUCTRL[1, 2, 3]
doivent être mis à « 0 ».

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 38

3.4.2.5 Mode de mise à jour du compteur/décompteur


En forçant à « 1 » le bit EIUCTRL [1] (ZERO), le signal donnant la marque de référence
placé sur l’entrée EIZ est utilisé pour mettre jour l’état du compteur/décompteur. Afin
d’éviter tout décalage entre les deux sens de déplacement, le processus de mise à jour est
assez complexe. Lors de la première apparition de la marque de référence, c’est le prochain
flanc des signaux sur EIAS ou EIBS qui va déterminer le point de référence de mise à jour du
compteur/décompteur. Le canal (EIAS ou EIBS) et le flanc du signal sont mémorisé de
manière à ce que ce soit toujours cette référence qui soit pris en compte. De plus, la largeur
du signal de la marque de référence peut avoir une largeur telle que plusieurs transitions des
signaux EIAS et EIBS se produisent lorsque EIZS est à « 1 ». Pour un sens de déplacement
positif (comptage), c’est donc le flanc montant du signal EIZ qui est utilisé comme origine
pour la recherche du flanc de signal mémorisé alors que pour un déplacement négatif
(décomptage) c’est le flanc descendant du signal placé sur EIZ qui fait foi.
EIAS EIAS

t t

Reference fallling edge (reverse direction)


EIBS EIBS
Reference rising edge (forward direction)

t t
EIZS EIZS

falling edge
rising edge

t t
EIUCNT EIUCNT
n-1 n [EIUMAXCNT]
n n-1 n-2
n-3 n-2 n-3

2 3 3 2 1
0 1 0
t t
"0" EIUCNT [EIUMAXCNT] EIUCNT

Figure 3-41 : Mise à jour du compteur/décompteur

Lorsque le bit EIUCTRL [1] (ZERO) du registre de contrôle EIUCTRL est mis à 0 (valeur
par défaut), le signal de la marque de référence n’est pas utilisé. Dans ce cas, la mise à jour
du compteur/décompteur se fait soit en forçant « 0 » après avoir atteint la valeur maximum
définie par le contenu du registre EIUMAXCNT (déplacement dans le sens positif), soit en
forçant la valeur contenue dans EIUMAXCNT lorsque le compteur/décompteur a atteint
« 0 », pour un déplacement dans le sens négatif.
Pour un encodeur incrémental rotatif de N traits, le nombre de transitions des signaux en
quadrature 4N et par conséquent la valeur maximum du compteur/décompteur est de 4N-1.
C’est cette dernière valeur qui doit être écrite dans EIUMAXCNT.

3.4.2.6 Validation des marques de référence ou de synchronisation


En préambule on rappelle ici que A, B, Z, S sont des signaux internes à l’interface encodeur.
Ces signaux correspondent aux signaux placés sur les entrées EIA, EIB, EIZ respectivement
EIS après avoir été synchronisés et filtrés.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 39

En pratique, il est souvent fait usage d’un signal de marque de référence et d’un signal de
synchronisation. Le signal de synchronisation est en général utilisé pour définir la période
d’échantillonnage d’une boucle d’asservissement quelconque. Suite à l’apparition
d’événements sur Z et S, il est souhaitable de mémoriser sans délai l’état du
compteur/décompteur (registre EIUCNT). Trois modes de mémorisation sont à disposition.
− EIUCTRL [7] et/ou EIUCTRL [8] à « 0 »
Dans ce cas le comportement de l’interface encoder est le même pour Z que pour S, excepté
la destination de la mémorisation de l’état du registre qui est pour le premier cas le registre
EIZLATCH et pour le second EISLATCH.
Lors d’un flanc montant de Z, respectivement S, le registre d’état du compteur EIUCNT est
mémorisé sans autre condition dans les registres EIZLATCH respectivement EISLATCH.
On voit sur la Figure 3-42 que, selon le sens de déplacement, la valeur mémorisée est
fonction de la largeur de l’impulsion sur Z ou S.
Ce mode est en général utilisé lorsque Z ou S sont associés à des interrupteurs de fin de
course, des détecteurs de proximité, ou à un signal de synchronisation lié à la période
d’échantillonnage d’une boucle d’asservissement
EIUCTRL[7]=0 Sens de déplacement positif
EIUCTRL[8]=0

A
n+1

n+3

n+1
n-1

Up/Down
t Counter EIZLATCH[15...0]
B
n+2

n+4

n+6

EISLATCH[15...0]
EIUCNT[15...0]
n

n
t
Z, S

EIUCTRL[7]=0 Sens de déplacement négatif


EIUCTRL[8]=0

A
n+5

n+3

n+1

n-1

Up/Down
t n+4 EIZLATCH[15...0]
Counter
B
n+4

n+2

EISLATCH[15...0]
n-2

EIUCNT[15...0]
n

n+4
t
Z, S

Figure 3-42 : Mémorisation de l’état du compteur/décompteur (EIUCTRL[7,8] = « 0 »)

− EIUCTRL[7] à « 1 »
Dans ce cas le registre d’état du compteur EUICNT est mémorisé dans le registre
EIZLATCH à la première transition des signaux en quadrature A, B qui suivent un flanc

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 40

montant de Z si le sens de déplacement est positif ou un flanc descendant de Z si le sens de


déplacement est négatif. Dans ce cas la différence entre les valeurs mémorisées dans un
sens de déplacement ou dans l’autre est toujours de 1, quelle que soit la largeur de
l’impulsion du signal Z.
EIUCTRL[7]=1 Sens de déplacement positif

n+1

n+3

n+1
n-1 Up/Down
t Counter EIUZLATCH
EIZLATCH[15...0]
B

n+2

n+4

n+6
EIUCNT[15...0]
n

n+1
t
Z

EIUCTRL[7]=1 Sens de déplacement négatif

A
n+5

n+3

n+1

n-1

Up/Down
t Counter EIZLATCH[15...0]
B
n+4

n+2

n-2

EIUCNT[15...0]
n

n
t
Z, S

Figure 3-43 : Mémorisation de l’état du compteur/décompteur (EIUCTRL[7] = « 1 »)

− EIUCTRL[8] à « 1 »
Dans ce cas les opérations de mémorisations sont un peu différentes du cas précédent. En
effet le contenu du registre EIUCNTdu compteur/décompteur est mémorisé dans le registre
EISLATCH au flanc montant du signal S si le sens de déplacement est positif et au flanc
descendant si le sens de déplacement est négatif.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 41

EIUCTRL[8]=1 Sens de déplacement positif

n+1

n+3

n+1
n-1
Up/Down
t Counter
n
B

n+2

n+4

n+6
EISLATCH[15...0]
EIUCNT[15...0]

n
n
t
Z, S

EIUCTRL[8]=1 Sens de déplacement négatif

A
n+5

n+3

n+1

n-1

Up/Down
t Counter
n
B
n+4

n+2

EISLATCH[15...0]
n-2

EIUCNT[15...0]
n

n+1
t
Z, S

Figure 3-44 : Mémorisation de l’état du compteur/décompteur (EIUCTRL[8] = « 1 »)

3.4.2.7 Mode de reconnaissance unique des marques de référence


Un autre mode de mise à jour, appelé reconnaissance unique d’une marque de référence
(Single North Marker) est disponible. Ce mode est activé par le EIUCTRL[2] (SNM), le bit
EIUCTRL[1] devant être mis à « 1 ». Dans ce mode le registre d’état du
compteur/décompteur EIUCNT est mis à jour (« 0 » ) ou [EIUMAXCNT] selon le sens de
déplacement) à la première apparition de la marque de référence. La valeur par défaut (après
un RESET) du bit EIUCTRL[2] (SNM) est « 0 ».
Le bit EIUSTAT[7] permet de savoir si la marque de référence à été détectée (« 1 ») ou non
(« 0 »). Comme il a été dit dans le §3.4.2.5, ce mode est valable uniquement pour Z.

3.4.2.8 Détection d’erreurs de comptage/décomptage


La détection d’erreurs de comptage/décomptage est activée en forçant à « 1 » le bit
EIUCTRL[3] (MON). Bien entendu le bit EIUCTRL[1] (ZERO) doit être à « 1 ». Dans ce
mode, lorsque la marque de référence est détectée, le contenu du registre d’état du compteur
EIUCNT est comparé avec la valeur attendue, soit « 0 » dans le sens de déplacement positif
(comptage) ou [EIUMAXCNT] dans le sens de déplacement négatif (décomptage). Si une
valeur différente de la valeur attendue est détectée, une condition d’erreur est générée en
mettant à « 1 » le bit EIUSTAT[0] et en initiant une interruption (EIU Counter Error
Interrupt : 0x0040). Cette interruption peut être masquée (PICMASK[4]= « 0 »).

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 42

Même si une erreur est détectée, le compteur/décompteur continue de travailler. Le bit


EIUSTAT[0] est remis à « 0 » à la prochaine apparition de la marque de référence si la valeur
atteinte est cette fois correcte.
La valeur par défaut (après un RESET) du bit EIUCTRL[3] est « 0 ».

3.4.2.9 Etat des entrées de l’interface encodeur


Quatre bits du registre d’état EIUSTAT permettent de connaître l’état des quatre entrées
(EIA, EIB, EIZ, EIS) de l’interface encodeur.
EIUSTAT[3] → Etat de EIA (canal A)
EIUSTAT[4] → Etat de EIB (canal B)
EIUSTAT[5] → Etat de EIZ (marque de référence)
EIUSTAT[6] → Etat de EIS (signal de synchronisation)

3.4.2.10 Registres dédicacés au bloc d’interface


Les descriptions des registres figurant dans ce paragraphe sont dédicacées au bloc d’interface
constitué par les étages de synchronisation, de filtrage, de comptage/décomptage, de
génération du signal de quadrature et du sens de déplacement (direction).

Label Registres en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUCNT : DM(0x2020)
EIUMAXCNT : DM(0x2021)

Figure 3-45 : Registres propre au compteur/décompteur

Label Registres en lecture seule Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIZLATCH : DM(0x2029)
EISLATCH : DM(0x202A)

Figure 3-46 : Registres de mémorisation de l’état du compteur/décompteur

Label Registres en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUFILTER : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2028)

Figure 3-47 : Registre de division sur l’horloge du filtre

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 43

Label Registre en lecture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUSTAT : 0 0 0 0 0 0 0 0 DM(0x2020)
0 : Not Received
First Zero Marker
1 : Received
EIS State
0 : LO EIZ States
1 : HI EIB State
EIA State
0 : Not Initialised
EIU State
1 : Initialised
0 : Down
EIU Count Direction
1 : Up
0 : No Error
EIU Count Error
1 : Error

Figure 3-48 : Registre du compteur/décompteur propre à l’interface encodeur (EIU)

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUCTRL : 0 0 0 0 0 0 0 DM(0x2023)
0 : Registration EIS Latch
1 : Zero Marker Definition

0 : Registration EIT Latch


1 : Zero Marker Definition

0 : Disable Frequency &


1 : Enable Direction Mode

0 : Disable EIU Error


1 : Enable Monitoring

0 : Disable Single North


1 : Enable Marker Mode

0 : Do not Use Zero


1 : Use For Reset Marker

0 : Do Not Swap EIA/EIB Direction


1 : Swap EIA and EIB Reverse

Figure 3-49 : Registre de contrôle propre à l’interface encodeur (EIU)

3.4.3 Timer

3.4.3.1 Architecture du Timer


Le Timer de l’interface encodeur a pour rôle est de provoquer des interruptions selon une
période tTIMEOUT qui est toujours un multiple de la période d’horloge interne du DSP
(tCLKOUT). Ce facteur de multiplication dépend des registres de contrôle du Timer.
L’activation de ce timer est possible en mettant à « 1 » le bit EIUCTRL[5].
L’interruption provoquée par le Timer peut être masquée par le bit PICMASK[2] du registre
de masquage des interruptions des périphériques.
La Figure 3-50 illustre l’architecture du Timer.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 44

16 bits DMD BUS

8 bits 16 bits 16 bits

EIUSCALE EIUPERIOD

Count Register Load Logic

CLKOUT Timer Enable


& Prescale Logic CLK EIUTIMER Zero
Timer Interrupt

Timer Enable

Figure 3-50 : Architecture du Timer

3.4.3.2 Opérations du Timer


Le registre EIUTIMER est un compteur. Quand le Timer est en service, ce compteur est
décrémenté à chaque cycle de fonctionnement. Lorsque le compteur atteint 0, une
interruption est provoquée, tandis que registre EIUTIMER est rechargé à la valeur inscrite
dans le registre EIUPERIOD.
Le registre EIUSCALE indique le facteur d’échelle temporel vis à vis de l’horloge de base
des périphériques (CLKOUT). Comme ce registre est de 8 bits, le facteur d’échelle Ts (ou
« saut de temps » entre deux décrémentations de EIUTIMER) peut varier entre 1⋅tCLKOUT
(pour [EIUSCALE]= « 0 « ) et 256⋅tCLKOUT (pour [EIUSCALE]= « 255 »).
On a donc la relation suivante pour le temps entre deux interruptions

tTIMEOUT = ([EIUPERIOD] + 1)([EIUSCALE] + 1)tCLKOUT 3.35

Pour une fréquence de l’horloge CLKOUT de 26MHz, le timer peut générer des interruptions
jusqu’à tTIMEOUT = 2.52ms pour [EIUSCALE]= « 0 » et [EIUPERIOD]= « 65’635 ». La
valeur maximum, pour [EIUSCALE]= « 255 » et [EIUPERIOD]= « 65’635 » étant
tTIMEOUT = 0.646s

3.4.3.3 Registres de contrôle pour le timer


Les descriptions des registres figurant dans ce paragraphe sont dédicacées au bloc timer
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUCTRL : 0 0 0 0 0 0 0 DM(0x2023)
0 : Disable Enable EIU
1 : Enable Loop Timer

Figure 3-51 : Registre de contrôle propre au Timer

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 45

Label Registres en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUTIMER : DM(0x2026)
EIUPERIOD : DM(0x2024)
EIUSCALE : 0 0 0 0 0 0 0 0 DM(0x2025)

Figure 3-52 : Registres des valeurs propres au Timer

3.4.4 Compteur et chronométrie d’événements

3.4.4.1 Descriptions
Cette unité de comptage d’événement et chronométrie fait partie intégrante de l’interface
encodeur. Elle permet une mesure précise du temps écoulé entre l’apparition de plusieurs
événements successifs et par conséquent une meilleure définition de la mesure de vitesse que
l’utilisation du calcul de la différence entre deux états du compteur/décompteur rapportée à la
période de la mesure.
A

B
t

Quadrature t
pulses

t
[EIUCNT]
1LSB

[EUICN T]

VELOCITY
t
EVENTS

ENCODER EVENT
TIMER VALUE
t
[EETDELTAT]
[EETT]

EET LATCH
t
1LSB
EVENT

t CLKEET

Figure 3-53 : Compteur et chronométrie d’événements (sens de déplacement positif, EETN=2)

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 46

En se référant à la Figure 3-34, on voit que cette unité est constituée d’un diviseur de
fréquence permettant la définition d’une horloge (CLKEET) dont la période est un multiple
de la période de l’horloge de base des périphériques (CLKOUT). Le compteur d’événement
est incrémenté à chaque flanc montant de CLKEET. La valeur de division est contenue dans
le registre EETDIV d’une capacité de 16 bits. Fort de cette définition, on peut écrire la
relation
FCLKOUT
FCLKEET = 3.36
[EETDIV]

Si [ETDIV]= « 0 » on a une division par 216, soit la fréquence minimum de l’horloge


CLKEET.
Les signaux A et B en quadrature sont transformés en un train d’impulsions où chaque
impulsion représente une transition de A ou de B. Un décimateur permet de prendre en
compte une impulsion toutes les N, N étant le contenu du registre EETN d’une capacité de 8
bits. En observant la Figure 3-53, on voit que dans ce cas une transition sur deux est retenue
pour former le signal VE (Velocity Events). Si [EENT]= « 0 », on a une décimation de 256.
L’apparition d’un flanc montant sur VE provoque une mémorisation du compteur
d’intervalle d’évènements (Encoder Event Timer) dans un registre de 16 bits nommé EETT.
C’est CLKEET qui est l’horloge de base du compteur d’intervalle d’événements. Une fois
l’état du compteur mémorisé, ce dernier est forcé à « 0 » pour la mesure de l’intervalle
suivant.

3.4.4.2 Mémorisation des données produites par le bloc de compteur et chronométrie


Pour pouvoir exploiter de manière efficace les données nécessaires à la mesure de la vitesse
de déplacement, il est indispensable de mémoriser simultanément trois états. Il s’agit de l’état
du compteur/décompteur EIUCNT, de l’état du compteur d’intervalle d’événement issu de la
mesure du dernier intervalle complet et de l’état présent du compteur d’intervalle.
La mesure de la vitesse peut être ainsi déduite :
− de la différence entre deux états du compteur/décompteur EIUCNT (nombre de
transition des signaux A et B pour une période d’échantillonnage) ;
− du temps écoulé (chronométrie) entre les deux dernières transitions après décimation ;
− du temps écoulé (chronométrie) entre la dernière transition après décimation et la fin de
la période d’échantillonnage.
Les trois états nécessaires à l’algorithme de mesure de la vitesse peuvent être simultanément
mémorisés par deux modes différents. Le choix se fait à l’aide du bit EIUCTRL[4].
− EIUCTRL[4] = « 0 »
Dans ce mode, la lecture du registre d’état EIUCNT du compteur/décompteur par le
DSP provoque une mémorisation automatique et simultanée de :
‰ l’état présent du compteur d’intervalles d’événements → EETDELTAT ;
‰ la valeur maximum du compteur d’intervalles d’événements → EETT.

− EIUCTRL[4] = « 1 »
Dans ce mode, les trois états sont mémorisés lorsque le timer (EIUTIMER) a atteint la
fin d’une période (timeout). A cet instant, les opérations suivantes sont exécutées :

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 47

‰ l’état présent du compteur/décompteur EIUCNT → EETCNT ;


‰ l’état présent du compteur d’intervalles d’événements → EETDELTAT ;
‰ la valeur maximum du compteur d’intervalles d’événements → EETT ;
‰ une interruption est générée (EUI Loop Timer Timeout Interrupt : 0x0038). Cette
interruption n’a pas besoin d’être exécutée immédiatement puisque les données
utiles sont mémorisées.
Il est important de noter que pour EIUCTRL[4] = « 1 », la lecture par le DSP du registre
EIUCNT ne provoque pas la mise à jour des registres EETT et EETDELTAT.

3.4.4.3 Registre d’état du compteur et chronométrie d’événement


A vitesse de déplacement lente, il est possible que le temps entre deux transitions des signaux
en quadrature A et B, après décimation (VE), provoque un dépassement de capacité du
compteur d’intervalle d’événement. Dans ce cas, le bit EETSTAT[0] est mis à « 1 » et le
contenu du registre EETT est mis à 0x0FFFF. La lecture du registre d’état EETSTAT
provoque la remise à « 0 » du bit EETSTAT[0] et autorise la mise à jour du registre EETT
lors de l’apparition du prochain flanc montant du signal VE (Velocity Events).

Si une inversion du sens de déplacement est détectée, le compteur d’intervalles d’événements


est mis à « 1 » et le contenu du registre EETT est forcé à 0x0FFFF. La mise à jour de EETT
lors de l’apparition du flanc montant de VE n’est pas mise en cause.
Si EETT contient 0x0FFFF lors de sa lecture, c’est en lisant le bit EETSTAT[0] que l’on peut
savoir s’il s’agit d’un dépassement de capacité (vitesse lente) ou un changement de sens.
[EETT]= « 0xFFFF »
Inversion du sens de déplacement
EETSTAT[0]= « 0 »
[EETT]= « 0xFFFF »
Vitesse trop lente
EETSTAT[0]= « 1 »
Par défaut (après un RESET), le registre EETN, EETDIV, EETDELTAT et EETT sont tous
forcés à « 0 »
Lors d’une écriture dans les registres EETN ou EETDIV, le registre EETT est forcé à « 0 ».

3.4.4.4 Registres dédicacés au bloc compteur et chronométrie d’événements


Les descriptions des registres figurant dans ce paragraphe sont dédicacées au bloc compteur
et chronométrie d’événements.

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EIUCTRL : 0 0 0 0 0 0 0 DM(0x2023)
0 : Disable Enable EIU
1 : Enable Loop Timer

EUICNT Read EET Latch


1 : EIUTIMER Timeout Definition

Figure 3-54 : Registre de contrôle propre à l’interface encodeur (EIU)

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 48

Label Registre en lecture seule Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EETSTAT : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2074)
0 : No overflow
EET Overflow
1 : overflow

Figure 3-55 : Registre d’état propre au compteur d’événements

Label Registres en lecture seule Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EETCNT : DM(0x2027)
EETT : DM(0x2073)
EETDELTAT : DM(0x2072)

Figure 3-56 : Registres des paramètres utiles à la mesure de la vitesse

Label Registres en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EETDIV : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2071)
EETN : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2070)

Figure 3-57 : Registres propres au compteur d’événement

3.4.5 Activation des interruptions liées à l’interface pour codeur incrémental.


Le registre PICMASK permet d’activer/désactiver les interruptions liées au bloc de
l’interface pour codeur incrémental.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PICMASK : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x201D)
EIU Count error interrupt

EIU Loop timer timout

Figure 3-58 : Registre d’activation/désactivation des interruptions de EIU

3.5 ENTRÉES /SORTIES DIGITALES PROGRAMMABLES

3.5.1 Introduction
Parmi les périphériques de l’ADMC401, on trouve douze entrées/sorties programmables
individuellement. De plus chaque PIO (PIO0 … PIO11) peut être configuré en sources
d’interruptions. La détection des interruptions est programmable soit sur un flanc (montant
ou descendant, soit sur un état (« 0 » ou « 1 »).
Quatre lignes (PIO0 … PIO3), lorsqu’elles sont programmées en entrées, possèdent leur
propre vecteur (pointeur) d’interruption dans la table d’interruption. Les lignes restantes
(PIO4 … PIO11) ont une ligne d’interruption commune débouchant sur un vecteur

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 49

d’interruption unique. Dans ce cas, c’est le registre PIOFLAG qui permet de déterminer
quelle ligne est à l’origine de l’interruption.
Le registre PIOPWM permet de programmer chaque ligne PIO pour la désactivation
asynchrone des sorties (AH, AH, BH, BL, CH, CL) du modulateur PWM. Dans ce cas le
comportement est identique à celui provoqué par la ligne PWMTRIP .

3.5.2 Configuration des PIO


Chaque ligne PIO peut être configurée en entrée ou en sortie en programmant de manière
appropriée le registre PIODIR.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIODIR : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2044)
0 = Input
1 = Output

Figure 3-59 : Registre de programmation en entrée ou en sortie de chaque PIO

Ce registre de douze bits a un bit associé à chaque ligne. Le bit PIODIR[0] correspond à la
configuration de la ligne PIO0, etc … La mise à « 0 » du bit PIODIR[x] permet de configurer
la ligne x en entrée. Par défaut (après un RESET) tous les bits de PIODIR sont mis à « 0 ».
Dans ce cas les douze lignes sont configurées en entrée ce qui permet d’éviter des conflits
d’état en phase d’initialisation. Chaque ligne possède une résistance pull-down et par
conséquent les lignes non connectées sont vues comme des entrées à l’état « 0 ».

3.5.3 Lecture/écriture des lignes PIO


Pour une ligne configurée en sortie, l’écriture d’une valeur logique à l’emplacement
correspondant du registre PIODATA va apparaître en sortie de cette ligne. De même une
lecture permet de connaître l’état de la ligne correspondante si elle est configurée en entrée.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIODATA : 0 0 0 0 DM(0x2045)
0 = Low Level
1 = High Level

Figure 3-60 : Registre d’état de chaque ligne PIO

3.5.4 Génération d’interruption par les lignes PIO.


Chacune des douze lignes PIO peut être configurée en source d’interruption. Quatre d’entre
elles ont leur propre ligne d’interruption alors que les huit autres ont une ligne commune.
Le registre PICMASK permet d’activer/désactiver les lignes d’interruption individuelles
PIO0 à PIO3 et la ligne d’interruption collective PIO4 à PIO11.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 50

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PICMASK : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x201D)
PIO3 Interrupt
PIO2 Interrupt
PIO1 Interrupt
PIO0 Interrupt
PIO4 – PIO11 Interrupt

Figure 3-61 : Registre d’activation/désactivation des interruptions

Le registre PIOINTEN est utilisé pour activer/désactiver le mode d’interruption propre aux
lignes PIO4 à PIO11.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIOINTEN : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2046)
0 = Interrupt Disable
1 = Interrupt Enable

Figure 3-62 : Registre d’activation/désactivation des interruptions PIO4 – PIO11

Les interruptions peuvent être activées soit sur les flancs ou sur les états des signaux présents
sur les lignes PIO. Deux registres sont utilisés pour définir le type d’événement susceptible
d’activer une interruption. Chacun de ces registres a un bit dédicacé à une ligne.

− Registre PIOMODE
Ce registre permet de définir si l’interruption est activée sur un état ou sur un flanc.
‰ Un « 0 » correspond à une sensibilité au flanc (PIOMODE[x] ligne x utilisée
comme interruption sur un flanc) ;
‰ un « 1 » correspond à une sensibilité sur un état (PIOMODE[x] ligne x utilisée
comme interruption sur un état).
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIOMODE : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2041)
0 = Edge sensitive
1 = Level sensitive

Figure 3-63 : Registre de sélection de la sensibilité à un flanc ou un état

− Registre PIOLEVEL
Ce registre permet de définir si l’interruption activée sur un état ou sur un flanc doit
être considérée sur un niveau « 0 » ou « 1 », respectivement sur un flanc
« descendant » ou « montant ».
‰ Un « 0 » correspond à une sensibilité à un état « 0 » ou a un flanc « descendant »
PIOMODE[x]= « 1 », PIOLEVEL[x]= « 0 », sensibilité sur l’état « 0 ».

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 51

‰ Un « 1 » correspond à une sensibilité à un état « 1 » ou a un flanc « montant »


PIOMODE[x]= « 0 », PIOLEVEL[x]= « 1 », sensibilité sur le flanc « montant ».
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIOLEVEL : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2040)
0 = Falling Edge (PIOMODE=0)
Active Low (PIOMODE=1)
1 = Rising Edge (PIOMODE=0)
Active High (PIOMODE=1)

Figure 3-64 : Registre de sélection de la sensibilité à un flanc ou un état

Par défaut (après un RESET), les interruptions de toutes les lignes sont désactivées.
Les quatre lignes d’interruptions individuelles PIO0 à PIO3 ont leur propre vecteur
d’interruption généré par le registre PICVECTOR. Le reste des lignes PIO4 à PIO11 possède
le même vecteur d’interruption. C’est à l’aide des flags contenus dans le registre PIOFLAG
que l’on peut déterminer la source précise de la demande de l’interruption
JUMP Interrupt routine

L & IRQ2 : 0x0004 PIOx : Pour 3< x <12


Test PIOFLAG[x]
o PIO0 0x0048 PIO0 Interrupt vector
r PIO1 0x004C PIO1 Interrupt vector

s PIO2 0x0050 PIO2 Interrupt vector

q PIO3 0x0054 PIO3 Interrupt vector

u PIO4
’ PIO5 PICVECTOR
PIO6
u
PIO7
n PIO8
& 0x003C PIO4-PIO11 Interrupt vector

PIO9
é PIO10
v PIO11
é
n Figure 3-65 : Gestion des interruptions pour les lignes PIO
e
ment sur les lignes PIO4 à PIO11 provoque une demande d’interruption via le vecteur
d’interruption 0x003C, le flag correspondant du registre PIOFLAG est mis à « 1 ». Dans ce
cas il est nécessaire de tester chaque FLAG selon un ordre correspondant à la priorité désirée
puis d’exécuter la routine d’interruption correspondante (polling).
Label Registre en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIOFLAG : 0 0 0 0 DM(0x2047)
0 = No Interrupt
1 = Interrupt Flagded

Figure 3-66 : Registre contenant les FLAG propres aux lignes PIO4 à PIO11

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 52

Les lignes configurées en sortie peuvent également être utilisées pour générer des
interruptions. Dans ce cas l’écriture du bit approprié du registre PIODATA provoquera une
interruption selon le contenu des registres PIOINTEN, PIOMODE, PIOLEVEL.

3.5.5 Lignes PIO utilisées pour l’activation/désactivation les sorties du modulateur PWM
Le registre PIOPWM permet l’utilisation des lignes PIO pour la désactivation immédiate des
sorties AH, AL, BH, BL, CH, CL du bloc modulateur PWM.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PIOPWM : 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 DM(0x2042)
0 = PWM Trip Disable
1 = PWM Trip Enable

Figure 3-67 : Registre de configuration des PIO pour le contrôle des sorties du modulateur PWM

Le comportement asynchrone de cette action est comparable à celui de la ligne PWMTRIP


(§3.3.5). On rappelle ici que la désactivation de ces lignes est réalisée, sur un flanc
descendant, par une logique combinatoire et donc indépendante des horloge internes du DSP.
Cette caractéristique permet une sécurité optimale lors d’un disfonctionnement majeur du
bloc de puissance commandé. Lorsqu’une ligne est activée. Deux niveaux d’interruptions
sont activés, soit PWMTRIP lors de l’apparition d’un flanc descendant sur la ligne PIO
concernée, et l’interruption propre au PIO. En principe cette dernière doit également être
programmée pour une activation sur un flanc descendant ou un état « 0 ». Le choix de la
source d’interruption peut alors se faire par les registres de contrôle d’interruptions
PIOINTEN et PICMASK. L’avantage de l’utilisation des lignes PIO pour déclencher les
sorties du bloc modulateur PWM tient au fait qu’il est possible d’utiliser plusieurs lignes de
surveillance et donc de connaître plus précisément la source d’un problème et de réagir en
conséquence par une routine d’interruption appropriée.
Par défaut, toutes les lignes PIO sont configurées pour le déclenchement du bloc
modulateur PWM. Sachant que toutes les lignes sont également configurées en entrée et
ont une pull-down, chaque ligne non-connectée provoquera un déclenchement du bloc
modulateur PWM. Il est donc impératif que, lors de l’initialisation du bloc modulateur
PWM, chaque ligne PIO soit correctement configurée afin d’assurer le bon
fonctionnement des applications utilisant les sorties AH, AL, BH, BL, CH, CL.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 53

3.6 CHRONOMÉTRIE D’ÉVÉNEMENTS SÉQUENTIELS

3.6.1 Généralités
Parmi les périphériques disponible sur l’ADMC401, on trouve deux entrées ETU0 et ETU1
permettant la capture d’événements (Event Timer Unit). Il est donc possible de mesurer le
temps séparant deux événements apparaissant sur une même entrée. Un ensemble de registres
permet de configurer la nature et la séquence des événements à observer. Un événement
propre à un signal est défini soit comme flanc (montant ou descendant) soit comme un état
(niveau logique « 0 » ou 1 »). Suite à une séquence bien définie, une interruption peut être
générée. Il est donc possible de mesurer une fréquence, une période, un rapport cyclique,
voire la durée d’une impulsion.
Capture Channel 0

EVENT
ETU0 ETUA0[15...0]
DETECTOR
ETUB0 [15...0]
ETUAA0[15...0]
ETUDIVIDE[15...0]
ETUTIME [15...0]
ETU TIMER ETUCONFIG [7...0]
ETUCTRL [1...0]
ETUSTAT [1...0]
ETUA1[15...0]
ETUB1 [15...0]
EVENT
ETU1 ETUAA1[15...0]
DETECTOR

Capture Channel 1

Figure 3-68 : Bloc de chronométrie d’événements séquentiels

3.6.2 Définition des événements


Un registre de 16 bits ETUDIVIDE permet de diviser la fréquence d’horloge de base des
périphériques CLKOUT en une fréquence utilisable pour le compteur ETUTIMER.
FCLKOUT
FCLKETU = 3.37
[ETUDIVIDE]

Cette horloge est commune aux deux canaux ETU0 et ETU1


Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETUDIVIDE : DM(0x205D)

Figure 3-69 : Registre de division de la fréquence d’horloge CLKOUT

L’état du Timer peut être lu à n’importe quel moment. Deux événements distincts EVENT A
et EVENT B doivent être définis pour déclencher une mesure. En initialisant les bits
appropriés du registre de configuration ETUCONFIG, il est possible de définir les
événements EVENT A et EVENT B sous forme de l’apparition de flancs sur les entrées de

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 54

chaque canal ETU0 et ETU1. Par exemple en assignant « 1 » au bit ETUCONFIG[0], on


définit l’événement EVENT A sur l’entrée ETU0 comme un flanc montant. De façon
similaire en écrivant « 0 » pour le bit ETUCONFIG[1], on définit l’événement EVENT B
comme un flanc descendant. Puis, si le bit ETUCONFIG[2] est à « 1 », une interruption est
générée lorsque le signal connecté à ETU0 aura un flanc montant suivi d’un flanc
descendant. On a ainsi défini une séquence de capture d’événements sur le canal ETU0.
Ce périphérique peut travailler selon deux modes distincts. Soit sur la capture d’une séquence
d’événements unique (Single shot), soit sur toutes les séquences de même type qui peuvent se
suivre. Ces modes sont comparables aux modes de trigger « Normal » respectivement
« Single » d’un oscilloscope. Ces deux modes sont définis par programmation des bits
ETUCONFIG[3] pour le canal ETU0 et ETUCONFIG[7] pour le canal ETU1.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETUCONFIG : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x201C)

0 = Single Mode
ETU1 : Mode
1 = Free-running

0 = Next Event A
ETU1 : Interrupt
1 = Event B

0 = Falling Edge
ETU1 : Event B
1 = Rising edge

0 = Falling Edge
ETU1 : Event A
1 = Rising edge

0 = Single Mode
ETU0 : Mode
1 = Free-running

0 = Next Event A
ETU0 : Interrupt
1 = Event B

0 = Falling Edge
ETU0 : Event B
1 = Rising edge

0 = Falling Edge
ETU0 : Event A
1 = Rising edge

Figure 3-70 : Registre de contrôle pour capture unique ou en continu

Associés à chaque canal, il y a trois registres de données ETUA0, ETUB0, ETUAA0 pour le
canal ETU0 et ETUA1, ETUB1, ETUAA1 pour le canal ETU1.
Label Registres en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETUA0 : DM(0x2050)
ETUB0 : DM(0x2051)
ETUAA0 : DM(0x2052)
ETUA1 : DM(0x2053)
ETUB1 : DM(0x2054)
ETUAA1 : DM(0x2055)
ETUTIME : DM(0x2056)

Figure 3-71 : Registres de données propres au bloc de chronométrie

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 55

Ces registres mémorisent le contenu du timer ETUTIMER dès l’apparition de l’événement


EVENTA pour ETUAx, de l’événement EVENT B pour ETUBx, du second événement
EVENT A pour ETUAAx.

3.6.3 Génération d’interruption


La fin d’une séquence d’événements est définie comme l’apparition d’un événement EVENT
B ou d’un second événement EVENT A. La programmation d’une séquence se fait à l’aide
du bit ETUCONFIG[2] pour le canal ETU0 et ETUCONFIG[6] pour le canal ETU1.
Un exemple de programmation de séquence d’événements sur le canal ETU0 peut être le
suivant :
− Définition de l’EVENT A : ETUCONFIG[0]= « 0 » :
l’événement EVENT A est un flanc descendant du signal connecté sur l’entre ETU0
− Définition de l’EVENT B : ETUCONFIG[1]= « 1 » :
l’événement EVENT B est un flanc montant du signal connecté sur l’entre ETU0
− Définition de l’activation d’une interruption (fin de séquence): ETUCONFIG[2]= « 1 » :
la séquence EVENT A ↓ suivie par EVENT B ↑ provoque une interruption.
Dans cet exemple, l’interruption fait suite à une impulsion négative sur le canal ETU0.
Lors d’une interruption, il est possible que les séquences d’événements des canaux ETU0 et
ET1 soient finies simultanément. Dans ce cas c’est le registre ETUSTAT qui permet de
vérifier si les séquences sont complètes ou non. La lecture du registre ETUSTAT provoque la
mise à « 0 » automatique des deux bits correspondant à l’indication des séquences
d’événements.
Label Registre en lecture seule Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETUSTAT : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x205E)
ETU1 :
0 : Not Captured
1 : Captured

ETU0 :
0 : Not Captured
1 : Captured

Figure 3-72 : Registre d’état de la capture ou non d’un événement

3.6.4 Mode de travail


En mode « Single shot », la capture d’une séquence d’événements force à « 0 » le bit du
registre ETUCTRL du canal correspondant. Pour activer une nouvelle capture de séquence
d’événements les bits ETUCTRL[0] pour le canal ETU0 et ETUCTRL[1] pour le canal
ETU1 doivent de nouveau être mis à « 1 ». Dans le mode « Free-running », la fin d’une
séquence d’événements est immédiatement suivie de la séquence suivante.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 56

Label Registre en lecture et écriture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETUCTRL : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x205F)
ETU1 :
0 : Do Not Captured
1 : Start Captured

ETU0 :
0 : Do Not Captured
1 : Start Captured

Figure 3-73 : Registre d’activation de capture d’un événement

3.6.5 Activation de l’interruption ETU.


Le registre PICMASK permet d’activer/désactiver l’interruption liée bloc de chronométrie
d’événements séquentiels.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PICMASK : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x201D)
ETU Interrupt

Figure 3-74 : Registre d’activation/désactivation de l’interruption ETU

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 57

3.7 MODULATEURS PWM AUXILIAIRES


L’ADMC401 possède un périphérique permettant de générer deux signaux PWM auxiliaires
de fréquence et de rapport cyclique variables. Ces signaux sont disponibles sur les pins de
sorties AUX0 et AUX1. Ils peuvent être utilisés, par exemple, pour la commande
d’alimentation à découpage de type PFC.
Par ailleurs en utilisant des filtres passse-bas sur les sorites AUX0 et AUX1, il est possible de
réaliser une conversion numérique / analogique dont la résolution est de 8 bits.
Les sorties AUX0 et AUX1 peuvent être contrôlées selon deux modes différents :

− Mode indépendant (independent mode)


− Mode décalé (offset mode)

Ces modes sont sélectionnés par le bit MODECRTL[8].

– MODECTRL[8]= « 0 » :
Les deux modulateurs PWM sont en mode décalé. Dans ce mode la fréquence de
commutation des deux signaux de sorties AUX0 et AUX1 sont identiques et contrôlés par
le registre AUXTM0.

FCLKOUT
FAUX 0,1 = 3.38
2([AUXTM0] + 1)

Les durées des niveaux « 1 » (ON) de AUX0 et AUX1 sont contrôlés par les registres
AUXCH0 et AUXCH1.

TON AUX0 = 2[AUXCH0]tCLKOUT 3.39

TON AUX1 = 2[AUXCH1]tCLKOUT 3.40

Le registre AUXTM1 définit le décalage entre les flancs montants des deux signaux de
sortie AUX0 et AUX1

TOFFSET = 2([AUXTM1] + 1)tCLKOUT 3.41

Pour que le mode de travail soit correct, le contenu de AUXTM1 doit être plus petit que
celui de AUXT0. Dans ce mode le rapport cyclique peut varier de 0% à 100%.

La Figure 3-75 illustre ce mode de travail

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 58

AUX0
2([AUXTM0]+1)t C LKO UT

2[AUXCH0]t C LKO UT

t
AUX1 2([AUXTM1]+1)t C LKO UT

2[AUXCH1]t C LKO UT

t
Figure 3-75 : Signaux PWM auxiliaires pour le mode indépendant

– MODECTRL[8]= « 1 » :
Les modulateurs PWM se trouvent en mode indépendant. Dans ce mode, les deux
modulateurs sont complètement indépendants l’un de l’autre. La fréquence de
commutation et le rapport cyclique peuvent être programmés selon les relations suivantes :
FCLKOUT
FAUX0 = 3.42
2([AUXTM0] + 1)

FCLKOUT
FAUX1 = 3.43
2([AUXTM1] + 1)

AUXCH0
DAUX0 = TON AUX0FCLKOUT = 3.44
[AUXTM0] + 1

AUXCH1
DAUX1 = TON AUX1FCLKOUT = 3.45
[AUXTM1] + 1

Les valeurs de AUXTM0 et AUXTM1 peuvent varier entre 0x00 et 0xFF. La plage de
variation des fréquences de commutations vaut donc :

50.8KHz ≤ FAUX @ FCLKOUT = 26MHz ≤ 13MHz 3.46

Le rapport cyclique peut varier de 0% à 100%, il suffit que TON AUX0,1 soit supérieur à TAUX0,1 .
La Figure 3-76 illustre ce mode de travail
Pour les deux modes, la résolution maximale sur les signaux est de 8 bits. Une augmentation
de la fréquence de commutations entraîne une diminution de la résolution.
L’écriture des registres AUXCH0 et AUXCH1 peut avoir lieu à n’importe quel moment. La
prise en compte de ces nouvelles valeurs est effective au prochain cycle PWM. Dans le mode
indépendant, l’écriture de nouvelles valeurs dans les registres AUXTM0 ou AUXTM1
provoquent une mise à « 0 » des timers internes et du même coup un nouveau cycle PWM.
Par défaut (après un RESET) le bit MODECRTL[8] est à « 0 » activant le mode décalé. Les
valeurs par défaut de AUXTM0 et AUXTM1 sont 0xFF ce qui correspond à la fréquence de
commutations minimale et à un décalage nul. Les registres AUXCH0 et AUXCH1 sont eux
initialisés à 0x00.

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 59

AUX0
2([AUXTM0]+1)t CLKOUT

2[AUXCH0]t CLKOUT

t
AUX1 2([AUXTM0]+1)t CLKOUT

2[AUXCH1]t CLKOUT

t
2[AUXTM1]t CLKOUT

Figure 3-76 : Signaux PWM auxiliaires pour le mode décalé

3.7.1.1 Registres dédicacés au bloc modulateurs PWM auxiliaires


Les descriptions des registres figurant dans ce paragraphe sont dédicacées au bloc modulateur
PWM auxiliaire.
Label Registres en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AUXTM0 : 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 DM(0x2012)
AUXTM1 : 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 DM(0x2013)
AUXCH0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2010)
AUXCH1 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2011)

Figure 3-77 : Registres des paramètres utiles à la génération des signaux PWM

Label Registre en lecture Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MODECTRL : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2015)
0 : Independent AUXILIARY
1 : Offset PWM MODE

Figure 3-78 : Registre de contrôle de mode

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 60

3.8 TIMER ALLOUÉ À LA FONCTION WATCHDOG

3.8.1 Description
Un Timer (Watchdog timer) est utilisé pour contrôler la bonne exécution d’un programme.
Le but ici est d’éviter que, suite à une erreur (programmation, perturbations externes,
modification non volontaire du contenu de la mémoire programme (RAM), …), l’exécution
du programme soit confinée dans une boucle infinie par exemple. Grâce à un timer
(décompteur), il est possible de stopper (RESET) l’exécution du programme si celui-ci n’a
pas remis à jour le contenu du timer avant qu’il n’arrive à « 0 ».
Le watchdog timer est initialement désactivé (après un RESET), et le flag WDFLAG (bit
SYSSTAT[1]) est également mis à « 0 ». Le watchdog timer est activé en écrivant une valeur
dans le registre WDTIMER. Une fois le watchdog timer initialisé, le timer décompte à la
fréquence de l’horloge CLKIN. Pour éviter l’activation d’une erreur (arrivée à « 0 » du
décompteur), il est nécessaire de charger le registre WDTIMER avec une n’importe quelle
valeur. Cette action permet de recharger la valeur initiale (première écriture) dans le registre
WDTIMER et par conséquent de réinitialiser le décompteur. Le temps de décomptage est
défini comme

TWDT = [WDTIMER]tCLKIN 3.47

Dans le cas ou le watchdog timer atteint « 0 », un RESET complet (DSP et périphériques),


excepté le watchdog timer lui-même, est activé. De plus le bit SYSSTAT[1] (WDFLAG) est
forcé à « 1 ». Suite à ce RESET, le DSP peut déterminer si le RESET a été causé par le
watchdog timer ou s’il s’agit d’un RESET faisant suite à une séquence normale d’opération.
Le watchdog timer n’est pas réactivé après un RESET avec WDFLAG= « 1 ». Il peut l’être
en écrivant une valeur non nulle dans le registre WDTIMER. Dans ce cas le flag WDFLAG
est remis à « 0 ». En écrivant 0x0000 dans le registre WDTIMER, la fonction watchdog est
définitivement désactivée. Le watchdog timer ne peut être réinitialisé que par une action sur
la broche RESET .

3.8.1.1 Registres de contrôle du Watchdog timer


Les descriptions des registres dédicacées au bloc watchdog timer sont définies ici.
Label Registre en lecture et écriture Allocation
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WDTIMER : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2018)

Figure 3-79 : Registre du watchdog timer

Label Registre en lecture seule Allocation


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SYSSTAT : 0 0 0 0 0 0 0 0 0 0 0 0 DM(0x2016)
0 : No Watchdog Trip
WATCHDOG FLAG
1 : Watchdog Trip

Figure 3-80 : Flag WDFLAG

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 61

3.9 CONTRÔLEUR D’INTERRUPTIONS PROGRAMMABLE PIC

3.9.1 Description
L’ADMC401 utilise la ligne IRQ2 du DSP pour générer une interruption sur un
périphérique.

PIC IMASK
IRQ2
PIOFLAG[10..0] PICMASK 0x0000 : JU M P Startup;
NOP;
NOP;
Decoder NOP;
0x0004 : DM (TE M P_I4_SAVE)=I4;
ADC End-of-Conversion 0x0030 I4=DM (PICVEC TO R);
JM P I4;
PWMSYNC 0x0034 NOP;

DSP CORE INTER RUPTS


EIU Loop Timer Timeout 0x0038 0x0008 : RTI;
NOP;
PIO4 NOP;
NOP;
PIO5
0x000C :RTI;
PIO6 NOP;

PIO7
M NOP;
NOP;
PIO8
0x003C U PICVECTOR

PIO9 X
PIO10
0x0030 : I4=DM (TEM P_I4_SAVE);
PIO11 JM P ADC_ISR;
NOP;
EIU Counter Error 0x0040

PERIPHERAL INTERRUPTS
NOP;
ETU 0x0044 0x0034 : I4=DM (TEM P_I4_SAVE);
JM P P WM SYN C_ISR ;
PIO0 0x0048 NOP;
NOP;
PIO1 0x004C
PIO2 0x0050
PIO3 0x0054
0x0058 : I4=DM (TEM P_I4_SAVE);
PWM Trip 0x0058 JM P P WM TRIP _ISR;
NOP;
NOP;

Figure 3-81 : Séquence d’opérations provoquée par une interruption

Les sources d’interruptions dues aux périphériques sont multiples. Il s’agit, dans l’ordre de
priorité de :
1. fin de conversion numérique analogique (ADC End-of-Conversion) ;
2. signal d’échantillonnage (PWMSYNC) ;
3. fin d’une période du timer EIU (EIU Loop Timer Timout) ;
4. activation d’une interruption par la ligne PIO4 -PIO11 ;
5. détection d’erreurs de comptage/décomptage (EIU Counter Error) ;
6. fin d’une séquence d’événements (ETU) ;
7. activation d’une interruption par la ligne PIO0 ;
8. activation d’une interruption par la ligne PIO1 ;
9. activation d’une interruption par la ligne PIO2 ;
10. activation d’une interruption par la ligne PIO3 ;
11. activation d’une erreur sur le modulateur PWM (PWM Trip).
Un contrôleur d’interruptions programmable (PIC : Programmable Interrupt Controller) est
utilisé afin d’éviter l’introduction d’un délai supplémentaire dû à la recherche de la source
d’interruption par software. Suite à l’apparition d’une interruption sur un périphérique, le
contrôleur d’interruption (PIC) génère une adresse qui pointe le vecteur correspondant dans

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 62

la table des vecteurs d’interruptions. La Figure 3-81 illustre la séquence permettant


d’exécuter une routine d’interruption.
Dans le cas de plusieurs interruptions simultanées, le contrôleur d’interruptions charge le
registre PICVECTOR avec l’adresse de l’interruption la plus prioritaire. Entre deux lectures
du registre PICVECTOR, par exemple lorsqu’une interruption est en cours de traitement et
plusieurs interruptions en attente, il y a une remise à jour automatique du registre
PICVECTOR de manière à toujours avoir l’adresse de l’interruption la plus prioritaire dans
PICVECTOR. Ainsi lors de la prochaine lecture du registre PICVECTOR, c’est
l’interruption la plus prioritaire qui sera traitée.
Si plusieurs interruptions sont en attente lorsque le registre PICVECTOR est lu, la ligne
IRQ2 reste à « 0 » et par conséquent en configurant la détection de IRQ2 sur un flanc, il
n’est pas possible de détecter les nouvelles interruptions. Il est donc de première importance
de configurer la détection de IRQ2 sur un état (ICNTRL[2]= « 0 »).

Adresse de la table
Sources
d’interruption
RESET Startup (ou mise sous tension avec PUCR= « 1 ») 0x00 (Priorité la plus élevée)
POWER-DOWN (non masquable) 0x2C
Fin de conversion numérique analogique(ADC End-of-Conversion) 0x30
Signal d’échantillonnage (PWMSYNC) 0x34
Fin d’une période du timer EIU (EIU Loop Timer Timout) 0x38

PERIPHERIQUES
Activation d’une interruption par la ligne PIO4 ---PIO11 0x3C
Détection d’erreurs de comptage/décomptage (EIU Counter Error) 0x40
Fin d’une séquence d’événement (ETU) 0x44
Activation d’une interruption par la ligne PIO0 0x48
Activation d’une interruption par la ligne PIO1 0x4C
Activation d’une interruption par la ligne PIO2 0x50
Activation d’une interruption par la ligne PIO3 0x54
Activation d’une erreur sur le modulateur PWM (PWM Trip) 0x58
Port sériel N°0 : transmission (SPORT0 Transmit) 0x10
Port sériel N°0 : réception (SPORT0 Receive) 0x14
Interruption software N°1 0x18
Interruption software N°0 0x1C
Port sériel N°1 : transmission ou IRQ1 (SPORT1 Transmit or IRQ1 ) 0x20
Port sériel N°1 : réception IRQ0 (SPORT1 Receive or IRQ0 ) 0x24
Timer (Interval Timer Interrupt) 0x28 (Priorité la plus basse)
Tableau 3-5 : Table d'interruptions par ordre de priorités

Les quatre premières entrées PIO (PIO0 – PIO3) possèdent chacune leur propre ligne
d’interruption. Par contre les huit lignes restantes PIO4 – PIO11 ont une ligne d’interruption
commune. Le registre PIOFLAG peut être utilisé pour définir la source de l’interruption.
Un registre de 11 bits, PICMASK permet de masquer chacune des 11 sources d’interruptions.
Lorsqu’une interruption est demandée par un périphérique, le contrôleur d’interruption
fournit une adresse prédéfinie et la ligne IRQ2 est activée pour autant qu’elle ne soit pas
masquée. Le déroulement du programme est alors interrompu et le pointeur d’adresse PC
prend la valeur PM(0x0004). A cette adresse, une instruction de saut dont la destination est

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 63

définie par le contenu du registre PICVECTOR permet d’atteindre la zone de programme


dédicacée à la routine d’interruption à exécuter. Le nombre d’instructions possibles est limité
à quatre. Pour des routines d’interruptions plus conséquentes, une instruction de saut
inconditionnel (JUMP) permet d’atteindre une routine d’interruption dont la taille n’est plus
limitée de manière aussi drastique.
Les adresses entre PM(0x008) et PM(0x02C) de la table d’interruption concerne le DSP alors
que la plage d’adresses PM(0x0030) à PM(0x0058) est prévue pour les périphériques.
L’ordre de priorités des interruptions est défini par le Tableau 3-5.

3.10 SYNTHÈSE DES REGISTRES D’ÉTAT, DE CONTRÔLE ET DE DONNÉES DES PÉRIPHÉRIQUES


La liste des registres, placés dans une zone réservée de la mémoire de données (DM0x2000 à
DMx23FF) est donnée dans le Tableau 3-6 ci-dessous
Valeur par
Adresse Nom Type Bits Fonction
défaut
0x2000 – 0x2007 Réservé
0x2008 PWMTM R/W [15…0] 0x0000 Période de commutation du PWM
0x2009 PWMDM R/W [9…0] 0x0000 Temps d’antichevauchement
0x200A PWMPD R/W [9…0] 0x0000 Impulsion de largeur minimale
0x200B PWMGATE R/W [9…0] 0x0000 Modulation pour transf. d’impulsions
0x200C PWMCHA R/W [15…0] 0x0000 Rapport cyclique de la branche A
0x200D PWMCHB R/W [15…0] 0x0000 Rapport cyclique de la branche B
0x200E PWMCHC R/W [15…0] 0x0000 Rapport cyclique de la branche C
0x200F PWMSEG R/W [8…0] 0x0000 Croisement / activation des commandes
0x2010 AUXCH0 R/W [7…0] 0x000 Rapport cyclique du canal 0
0x2011 AUXCH1 R/W [7…0] 0x000 Rapport cyclique du canal 1
0x2012 AUXTM0 R/W [7…0] 0xFF Période de commutation du canal 0
0x2013 AUXTM1 R/W [7…0] 0xFF Période de commutation du canal 1
0x2014 Réservé
0x2015 MODECRL R/W [8, 6…4] 0x0000 Mode de contrôle
0x2016 SYSSAT R [3…0] Etat du système
0x2017 Réservé
0x2018 WDTIMER R/W [15…0] Décompteur, watchdog
0x2019 – 0x201B Réservé
0x201C PICVECTOR R [15…0] Adresse des interruptions des périphériques
0x201D PICMASK R/W [10…0] 0x0000 Masque des interruptions des périphériques
0x201E – 0x201F Réservé
0x2020 EIUCNT R/W [15…0] 0x0000 Compteur de position
0x2021 EIUMAXCNT R/W [15…0] 0x0000 Valeur maximum du compteur de position
0x2022 EIUSTAT R [7…0] Etat de l’EIU
0x2023 EIUCTRL R/W [8…0] 0x0000 Contrôle de l’EIU
0x2024 EIUPERIOD R/W [15…0] 0x0000 Période du compteur de boucle de EIU
0x2025 EIUSCALE R/W [7…0] 0x000 Facteur d’échelle du compteur de boucle
0x2026 EIUTIMER R/W [15…0] 0x0000 Contenu du compteur de boucle de EIU
0x2027 EETCNT R [15…0] 0x0000 Copie du compteur EET
0x2028 EIUFILTER R/W [5…0] 0x000 Contrôle du filtre numérique de l’EIU
0x2029 EIZLATCH R [15…0] Stockage du compteur pour Z actif
0x202A EISLATCH R [15…0] Stockage du compteur pour S actif
0x202B – 0x202F Réservé
0x2030 ADC0 R [15…0] Conversion A/D du canal 0
0x2031 ADC1 R [15…0] Conversion A/D du canal 1
0x2032 ADC2 R [15…0] Conversion A/D du canal 2
0x2033 ADC3 R [15…0] Conversion A/D du canal 3
0x2034 ADC4 R [15…0] Conversion A/D du canal 4
0x2035 ADC5 R [15…0] Conversion A/D du canal 5
0x2036 ADC6 R [15…0] Conversion A/D du canal 6
0x2037 ADC7 R [15…0] Conversion A/D du canal 7
0x2038 ADCCRTL R/W [4, 3…0] 0x00 Contrôle de l’ADC
0x2039 ADCSTAT R [4…0] Etat de l’ADC
0x203A Réservé
0x203B ADCXTRA R [15…0] Conversion A/D continue
0x203C ADCOTR R [7…0] Contrôle de la validité des conversions A/D

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 64

Valeur par
Adresse Nom Type Bits Fonction
défaut
0x203D – 0x203F Réservé
0x2040 PIOLEVEL R/W [11…0] 0x0000 Sélection des interruptions PIO
0x2041 PIOMODE R/W [11…0] 0x0000 Mode d’interruption (états/flancs)
0x2042 PIOPWM R/W [11…0] 0xFFF Désactivation des sorties PWM
0x2043 Réservé
0x2044 PIODIR R/W [11…0] 0x0000 Contrôle en entrée/sortie de PIO
0x2045 PIODATA R/W [11…0] Valeur des PIO
0x2046 PIOINTEN R/W [11…4] 0x000 Activation/désactivation des interrup. PIO
0x2047 PIOFLAG R [11…4] Flag pour les interruptions PIO11 … PIO4
0x2048 – 0x204F Réservé
0x2050 ETUA0 R [15…0] Capture de l’évènement A sur le canal 0
0x2051 ETUB0 R [15…0] Capture de l’évènement B sur le canal 0
0x2052 ETUAA0 R [15…0] Capture de l’évènement AA sur le canal 0
0x2053 ETUA1 R [15…0] Capture de l’évènement A sur le canal 1
0x2054 ETUB1 R [15…0] Capture de l’évènement B sur le canal 1
0x2055 ETUAA1 R [15…0] Capture de l’évènement AA sur le canal 1
0x2056 ETUTIME R [15…0] Valeur du Timer
0x2057 – 0x205B Réservé
0x205C ETUCONFIG R/W [7…0] 0x00 Configuration de l’ETU
0x205D ETUDIVIDE R/W [15…0] 0x0000 Division de l’horloge pour l’ETU
0x205E ETUSTAT R [1, 0] Etat de l’ETU
0x205F ETUCTRL R/W [1, 0] 0x0 Contrôle de l’ETU
0x2060 PWMSYNCWT R/W [7…0] 0x27 Largeur du signal PWMSYNC
0x2061 PWMSWT R/W [0] 0x0 Interruption software des sorties PWM
0x2062 – 0x206F Réservé
0x2070 EETN R/W [7…0] 0x000 Décimateur de l’EET
0x2071 EETDIV R/W [15…0] 0x0000 Division de l’horloge pour l’ETU
0x2072 EETDELTAT R [15…0] 0x0000 Valeur maximum du compteur EET
0x2073 EETT R [15…0] 0x0000 Valeur présente du compteur EET
0x2074 EETSTAT R [0] 0x0 Etat de l’EET
0x2075 0x23FF Réservé

Tableau 3-6 : Plan mémoire (DM) des registres dédicacés aux périphériques

CD\DSP\Cours\Chap3
LES PERIPHERIQUES DE L’ADMC401 Page 65

BIBLIOGRAPHIE
[1] Single-Chip, DSP-Based
High Performance Motor Controller
REV. B
[2] ADMC401 DSP Motor Controller
Developer’s Reference Manual
Rev. 2.1, 11 Septembre 2000
[3] ADSP-2100 Family
Assembler Tools & Simulator Manual
Second Edition (11/94)
[4] ADSP-2100 Family
User’s manual
Third Edition (9/95)

CD\DSP\Cours\Chap3

Vous aimerez peut-être aussi