Atmel AVR

Un article de Wikipédia, l'encyclopédie libre.

Atmel AVR dans un boîtier DIP
Atmel AVR dans un boîtier DIP

AVR est le terme utilisé par Atmel pour désigner le cœur du processeur et la famille de microcontrôleurs les implémentant.

Sommaire

[modifier] Description

Le cœur AVR possède les caractéristiques suivantes :

  • architecture Harvard 8 bits RISC
  • 32 registres de calcul divisés en 2 sous-ensembles :
    • les registres r0 à r15 ne permettant pas de travailler avec les valeurs immédiates
    • et les registres r16 à r31 le permettant.
  • jeu de 90 à 135 instructions (selon le composant)
  • la plupart des instructions (hors instructions de saut) s'exécutent en un seul cycle d'horloge interne. L'horloge interne est à la même fréquence que l'horloge externe. Le cœur AVR atteint donc environ 1 Mips/MHz.
  • Le cœur AVR a été optimisé pour exécuter du code généré à partir d'un compilateur C.
  • Le cœur AVR possède 3 pointeurs 16 bits X, Y et Z mappés sur les registres 8 bits r26 à r31 (X=r26+r27, Y=r28+r29 et Z=r30+r31). Les 3 pointeurs permettent différents types d'indexation (indirecte, indirecte avec déplacement) avec ou sans pré ou post incrémentation.
  • Les périphériques sont accessibles dans un espace d'adressage placé entre les registres et la SRAM (accessible entre autre par les instructions ld et st). Toutefois, un ensemble d'instructions spécialisées permet un accès plus pratique aux périphériques (instructions in et out) avec en particulier les instructions SBI (Set Bit in I/O) et CBI (Clear Bit in I/O) permettant respectivement de mettre à 1 et à 0 un bit dans les 32 premiers registres d'entrées/sorties.
  • les registres r0 à r31 sont mappés sur l'espace RAM (adresse 0 à 31) ce qui permet de les accéder par l'intermédiaire de X, Y et Z.
  • les branchements sont nombreux et permettent de réaliser tous les cas de figure.
  • le jeu d'instructions est conçu de telle manière que, bien que le cœur soit 8 bits, il est très aisé de réaliser des calculs sur 16, 24 ou 32 bits (etc.)
  • selon les composants, un multiplieur hardware (2 cycles) est implémenté.
  • la plupart des composants AVR sont fully static, c’est-à-dire qu'il n'y a pas de limite basse de la fréquence d'horloge nécessaire à un fonctionnement correct.
  • les composant AVR possèdent en moyenne une quinzaine d'interruptions (selon les périphériques embarqués) de priorité fixe.
  • le cœur AVR possède un pointeur de pile 16 bits (pour les composants équipés de SRAM (95% des composants)).

Les microcontrôleurs AVR embarquent dans un même boîtier un cœur AVR (microprocesseur), de la mémoire flash (espace programme), de la SRAM (espace données), de l'EEPROM (espace données de sauvegarde) et des périphériques divers.

Chaque périphérique possède son(ses) registre(s) associé(s) (accessible(s) via les instructions in et out) afin de les contrôler.

Voici à titre indicatif les périphériques existants dans la famille de microcontrôleur AVR :

  • mémoire EEPROM (elle est gérée comme un périphérique).
  • timers 8 et 16 bits avec "compare match" (interruption lorsque qu'une valeur choisie est atteinte) et mode PWM.
  • interface sérielle asynchrone UART (rxd, txd).
  • interface sérielle synchrone SPI (miso, mosi, sck, SS).
  • interface sérielle TWI (compatible I²C (2 fils))
  • interface sérielle 1-wire (1 fil)
  • ports d'entrée/sorties (PIO) avec résistances de pull-up intégrées.
  • oscillateur interne
  • oscillateur séparé pour l'horloge RTC
  • convertisseur analogique/numérique 10 bits
  • comparateur analogique

[modifier] Développement logiciel et matériel

Sous environnement Windows, AVRstudio fournit par Atmel jumelé à WinAVR (version win32 de avr-gcc) permet de développer en langage C gratuitement et sans aucune limitation.

Un compilateur PASCAL existe également pour les AVR (E-LAB Pascal-scm), il utilise une syntaxe proche de Turbo Pascal.

En environnement GNU/Linux, avr-gcc (compilateur C) et uisp permettent de développer pour ces microcontrôleurs.

Le programmateur, outil d'interface entre le PC et le micro-contrôleur permettant le flashage de la mémoire programme, se trouve dans le commerce (Atmel STK-200, 300, 400 ou 500) ou sur des sites internet sous forme de schéma (dongle à créer soi-même).

Deux types d'interface existent, l'ISP pour flasher les mémoires uniquement et l'interface JTAG qui permet de flasher et de debugger en direct à partir d'AVRstudio, très pratique pour la mise au point des applications.

Pour faire fonctionner un microcontrôleur AVR, il 'suffit' de connecter les broches de masse et vcc au potentiel 0 et 5V (par exemple) et de mettre une résistance de tirage (pull-up) sur la broche reset (résistance de 10k entre la broche reset et vcc). Si le composant ne possède pas d'oscillateur interne ou dans le cas où une fréquence précise est voulue, il faudra alors ajouter un oscillateur externe (quartz la plupart du temps).

[modifier] Voir aussi

[modifier] Liens internes

  • Ethernut, système d´exploitation pour Atmel AVR

[modifier] Liens externes