# ADuC

ADuC est le nom d'une famille de microcontrôleurs 8 bits de la firme américaine Analog Devices. Elle comporte de nombreux membres, différant par les tailles mémoire ainsi que par le nombre et le type de périphériques embarqués. Tous les membres sont basés sur l'architecture mise au point par Intel avec son célèbre microcontrôleur 8051.
La firme AD (Analog Devices) étant spécialisée dans les circuits analogiques, il n'est pas étonnant de constater que les microcontrôleurs qu'elle propose conviennent parfaitement pour le traitement de signaux analogiques, grâce aux convertisseurs analogiques-numériques embarqués. Les sorties se font en numérique et/ou analogique. Un seul composant est donc parfaitement capable de réaliser des fonctions telles que l'acquisition de données, la régulation…

## Architecture de l'ADuC812

À titre d'exemple, considérons un des premiers membres de la famille, l'ADuC812. Celui-ci est présenté en boîtier Quad Flatpack avec 52 broches.

### Cœur 8051

L'ADuC812 est un système d'acquisition de données analogiques complètement intégré. Il est bâti autour d'un cœur 8051 ; celui-ci est décrit en détail dans l'article référencé. Nous nous contenterons donc de discuter les additions à l'architecture de base. Rappelons que le 8051 avait été très intelligemment conçu pour permettre des extensions. C'est ainsi que dans le 8051, un grand nombre des SFR (registres de fonctions spéciales, destinés à contrôler les périphériques) n'ont pas été attribués.

### Mémoires

L'ADuC812 comporte :
* une mémoire morte Flash effaçable électriquement de 8 Ko ; celle-ci peut donc être programmée par l'utilisateur, ce qui facilite grandement le développement des programmes ;
* 256 octets de RAM ;
* mais aussi, et c'est une nouveauté par rapport au 8051, une mémoire Flash effacable électriquement de 640 octets pour les données ;
* lorsqu'on a besoin d'un grand espace pour les données ou le programme, le 812 permet d'utiliser jusqu'à 16 Mo d'espace pour les données et jusqu'à 64 Ko d'espace pour le programme ; mais ceci réduit les nombres de lignes de ports d'E/S disponibles, certains ports étant utilisés comme bus d'adresses et de données.

### Convertisseur analogique/numérique

Le 812 comporte un convertisseur A/N à approximations successives d'une résolution de 12 bits, précédé d'un multiplexeur analogique 8 canaux et d'un circuit suiveur/bloqueur (« track and hold ») destiné à maintenir un niveau constant à l'entrée du CAN durant la conversion.

### Convertisseurs numériques/analogiques

Le 812 comporte deux convertisseurs N/A 8 bits suivis d'un étage tampon qui peut être désactivé.

### Référence de tension interne

Le 812 comporte une référence de tension de type « bandgap », fournissant une tension très stable de 2,5 V ; celle-ci peut être utilisée comme référence pour le CAN, les CNA et aussi pour un circuit extérieur.

### Horloge

Le 812 peut être piloté par une horloge externe (400 kHz à 16 MHz) ou par son horloge interne ; pour spécifier la fréquence de celle-ci, il suffit d'ajouter entre les broches Xtal1 et Xtal2 un quartz taillé pour obtenir la fréquence de résonance désirée, et un condensateur (valeur recommandée par le fabricant du quartz, généralement quelques dizaines de pF) entre chaque broche et la masse.

### Ports d'E/S

Comme le 8051, le 812 comporte quatre ports d'E/S, chaque port a une structure particulière ; ils sont bidirectionnels, sauf le port 1 qui ne peut être utilisé qu'en port d'entrée. Le port 3 permet d'absorber des courants allant jusqu'à 8mA, de façon à pouvoir piloter des leds ou des optocoupleurs sans étage tampon externe.

### Alimentation

Le 812 peut être alimenté entre 2,7 et 5,5 V. Le découplage des broches d'alimentation doit être particulièrement soigné, de façon à éviter des interférences entre la circuiterie numérique et analogique.

### Interface série RS-232

Le 812, comme le 8051, est muni d'une interface série RS-232. Celle-ci nécessite un circuit externe pour adapter les niveaux d'entrée et sortie du 812 aux niveaux prévus par la norme RS-232.
* Pour rappel, la norme RS-232 prévoit des niveaux de sortie compris entre +5 et +15 V pour un niveau logique 0, et entre -5 et −15 V pour un niveau logique 1. Les entrées doivent, elles, accepter des niveaux compris entre +3 et +25 V, et entre -3 et −25 V.
L'entrée série peut être utilisée pour télécharger des données à destination de la Flash programme ou de la Flash données à partir d'un terminal. Cette possibilité permet aussi la mise au point du programme (« debugging »).

### Autres interfaces série

Le 812 intègre également la circuiterie nécessaire pour réaliser l'interface série très populaire de type SPI (Serial Peripheral Interface). Celle-ci nécessite trois lignes : MISO (Master In, Slave Out), MOSI (Master Out, Slave In) et SCLOCK (Serial Clock).
Est également prévue une interface série I2C, avec ses deux lignes SDATA (Serial Data) et SCLOCK (Serial Clock). Comme les lignes sont partagées avec l'interface SPI, seule l'une des deux interfaces peut être active.

### Chien de garde

Le 812 est surveillé par un chien de garde (watchdog), qui est destiné à générer une commande de reset du système lorsque celui-ci, à la suite d'une erreur de programmation ou d'un événement fortuit, entre dans une boucle sans fin erronée (le programme se plante, en langage imagé!). La durée du temporisateur utilisé par le chien de garde, est réglable, et celui-ci peut aussi être désactivé (ce qui est souvent utile pendant la phase de mise au point du programme).

### Superviseur d'alimentation

Ce circuit surveille en permanence les tensions d'alimentation des circuits analogiques et numériques. Il indique lorsque l'une d'entre elles, ou les deux, tombent en dessous d'un seuil qui est réglable entre 2,63 et 4,63 V. En cas de sous-tension, le fonctionnement du cœur est bloqué, de façon à ne pas exécuter un programme incorrect, mais les registres de travail peuvent être sauvegardés.

### Compteurs

Le 812 comporte 3 compteurs 16 bits, semblables aux compteurs présents dans le MC 8052 d'Intel.

### Interruptions

Le 812 comporte pas moins de neuf sources d'interruption, avec deux niveaux de priorité.
* Superviseur de tension
* Interruption externe 0 et 1
* Compteur/temporisateur 0, 1 et 2
* Convertisseur A/N
* Interface I2C/SPI
* Interface série RS-232

## Autres membres de la famille

La famille ADuC comporte bien d'autres membres, et la liste s'allonge au fil des mois. À titre d'exemple, donnons quelques caractéristiques des ADuC 814 et ADuC 831.

### ADuC 814

Il s'agit d'un processeur 8 bits bâti autour d'un cœur 8052 et équipé d'un convertisseur A/N à six entrées d'une résolution de 12 bits capable de convertir 247 k échantillons/s. Il se contente d'un cristal à 32 kHz, qui stabilise, grâce à une boucle à verrouillage de phase (PLL, Phase-Locked Loop), la fréquence de l'horloge locale à 16,8 MHz. L'utilisation d'un quartz basse fréquence permet de réduire la puissance consommée.
Il est équipé d'une source de tension de référence interne programmable (via un convertisseur N/A) et de deux CNA d'une résolution de 12 bits chacun avec tampon de sortie.
Côté mémoire : 8 Ko de mémoire flash/EE pour le programme, 640 octets de flash/EE pour les données et 256 octets de RAM.
Il possède trois compteurs/temporisateurs, onze lignes d'E/S et onze sources d'interruption avec deux niveaux de priorité.
Il peut être alimenté en 3 ou 5 V, ne consomme que 3 mA sous 3 V (avec une fréquence d'horloge de 2,1 MHz), et la puissance consommée tombe à 15 μA en mode « Power Down » (horloge de 32 kHz activée).
Il est livré dans un boîtier 28 broches et comporte les périphériques embarqués suivants : circuit de reset à la mise sous tension (« power-on reset circuit »), moniteur de température, temporisateur pour un réveil à intervalles réguliers (« wake-up/RTC timer »), interface série UART, interfaces série SPI/I2C combinés, superviseur d'alimentation, chien de garde.
Programme et données peuvent bien sûr être téléchargés par l'interface série ; celle-ci permet aussi l'émulation 1 broche (« single-pin emulation »), utile en phase de mise au point du programme.

### ADuC 831 et 832

Il s'agit d'un processeur 8 bits bâti autour d'un cœur 8052 et équipé d'un convertisseur A/N à 8 entrées d'une résolution de 12 bits capable de convertir 247 k échantillons/s ; avec dispositif d'étalonnage incorporé. La fréquence du quartz doit être comprise entre 1 et 16 MHz pour le 831 ; l'ADuC 832 est une version particulière du 831 prévue pour fonctionner avec un quartz de 32 kHz.
Il est équipé :
* de deux CNA d'une résolution de 12 bits chacun avec tampon de sortie ;
* de deux CNA 16 bits de type Σ-Δ ;
* de deux générateurs de signaux modulés en largeur d'impulsion (PWM, Pulse-Width Modulation)
Côté mémoire : 62 Ko de mémoire flash/EE pour le programme, 4 Ko de flash/EE pour les données et 2 304 octets (sic!) de RAM ; il s'agit en fait des 256 octets classiques de la famille plus 2 Ko de RAM étendue.
Il possède trois compteurs/temporisateurs, 32 lignes d'E/S (certaines ont une double fonction et pourraient ne pas être disponibles dans certaines applications) et douze sources d'interruption avec deux niveaux de priorité.
Il peut être alimenté en 3 ou 5 V. Trois modes de fonctionnement sont prévus : « normal », « Idle » et « Power-Down » ; dans ce dernier mode, la consommation tombe à 20 μA sous 3 V.
Il est livré dans un boîtier 56 broches et comporte les périphériques embarqués suivants : moniteur de température, interface série UART, interfaces série SPI/I2C combinés, superviseur d'alimentation, chien de garde.
Programme et données peuvent bien sûr être téléchargés par l'interface série ; celle-ci permet aussi l'émulation 1 broche (« single-pin emulation »), utile en phase de mise au point du programme.

## Lien externe

* (en) Site du constructeur Analog Devices