Accueil🇫🇷Chercher

Atmel AVR

AVR est le terme utilisé par Atmel pour désigner le cœur du processeur et la famille de microcontrôleurs qui le mettent en œuvre.

Atmel AVR dans un boîtier DIP monté sur une carte Arduino

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 permettent pas de travailler avec les valeurs immĂ©diates
    • et les registres r16 Ă  r31 le permettent.

Jeu de 90 Ă  135 instructions (selon le composant).

La plupart des instructions (sauf les instructions de saut ou d'accès mémoire) s'exécutent en un seul cycle processeur. L'architecture AVR met en œuvre un pipeline, ce qui permet d’exécuter une instruction par cycle d'horloge. Le cœur AVR atteint donc environ 1 Mips/MHz.

Le cœur AVR a été optimisé pour exécuter du code produit par 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 autres 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. De plus les instructions in, out, sbi et cbi sont exĂ©cutĂ©es en un seul cycle.
  • les registres r0 Ă  r31 sont mappĂ©s sur l'espace RAM (adresse 0 Ă  31) ce qui permet d'y 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 multiplicateur matĂ©riel (2 cycles) est installĂ©.
  • 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 composants 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 micro-contrô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 est manipulé par son(ses) registre(s) associé(s) (accessible(s) via les instructions in et out).

Voici à titre indicatif les périphériques existants dans la famille de micro-contrôleurs AVR :

  • mĂ©moire EEPROM (elle est gĂ©rĂ©e comme un pĂ©riphĂ©rique).
  • timers 8 et 16 bits avec "compare match" (interruption lorsqu'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 I2C (2 fils))
  • interface sĂ©rielle 1-Wire (1 fil)
  • ports d'entrĂ©es/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

Différentes familles

La famille des micro-contrĂ´leurs AVR se compose de 5 groupes principaux :

  • TinyAVRs
    • mĂ©moire programme de 1 Ă  8 kB
    • boĂ®tier de 8 Ă  32 broches
    • nombre de pĂ©riphĂ©riques limitĂ©
  • MegaAVRs
    • mĂ©moire programme de 4 Ă  256 kB
    • boĂ®tier de 28 Ă  100 broches
    • jeu d'instructions plus Ă©tendu (multiplication, instructions pour accès Ă  la mĂ©moire Ă©tendue)
    • pĂ©riphĂ©riques plus nombreux
  • XMEGA
    • mĂ©moire programme de 16 Ă  384 kB
    • boĂ®tier de 44 Ă  100 broches
    • performances Ă©tendues, telles que DMA, gestion d'Ă©vĂ©nements entre pĂ©riphĂ©riques, cryptographie intĂ©grĂ©e.
  • AVR spĂ©ciaux pour des applications spĂ©cifiques
    • la famille AVR comprend des MegaAVR avec des pĂ©riphĂ©riques tels que :
      • contrĂ´leur USB
      • contrĂ´leur CAN
      • contrĂ´leur LCD
      • contrĂ´leur PWM avancĂ©
      • contrĂ´leur batterie
      • contrĂ´leur pour rĂ©seau sans fil ZigBee
    • FPSLIC (Field Programmable System Level Integrated Circuit) ce circuit est un FPGA avec un cĹ“ur AVR, le cĹ“ur peut fonctionner jusqu'Ă  50 MHz en exĂ©cutant son programme en mĂ©moire RAM Ă  la diffĂ©rence des autres familles qui exĂ©cutent le programme en mĂ©moire FLASH.

Développement logiciel et matériel

Sous environnement Microsoft Windows, AVRstudio fourni par Atmel jumelé à WinAVR (version win32 d'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 FreeBSD, GNU-Linux ou MacOS X, avr-gcc (compilateur C) et uisp, avrdude permettent de développer pour ces microcontrôleurs. Il existe également une adaptation de la libc[1].

Il existe aussi comme produits gratuits mais limités à 4Ko pour développer en C, Pascal ou Basic[2]. Ils intègrent bon nombre de bibliothèques pour simplifier le codage d'applications, ainsi que des environnements matériels complets pour faire du prototypage.

Atmel STK-500

On trouve de nombreux programmateurs, outil d'interface entre le PC et le microcontrôleur permettant le flashage de la mémoire programme, dans le commerce (Atmel STK-200, 300, 400, 500, 600 ou autres) et de nombreux schémas sur des sites internet permettant d'en réaliser soi-même.

Trois types d'interface existent, l’ISP pour flasher les mémoires uniquement, les interfaces JTAG et DebugWIRE (en) (debug sur un fil) qui permettent de flasher et de débugger en direct à partir d'AVRstudio, très pratique pour la mise au point des applications. L'interface ISP est présente sur tous les microcontrôleurs ATMEL, les interfaces JTAG et DebugWire dépendent de la famille de microcontrôleurs.

Pour faire fonctionner un microcontrĂ´leur AVR, il 'suffit' de connecter les broches de masse et Vcc au potentiel 0 et V (par exemple) et de mettre une rĂ©sistance de tirage (pull-up) sur la broche reset (rĂ©sistance de 10 kΩ 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).

Références

  1. « AVR Libc Home Page », sur nongnu.org (consulté le ).
  2. Mikroelektronika (http://www.mikroe.com/)

Voir aussi

Articles connexes

Liens externes

Bibliographie

  • Florian Schäffer, Programmation en C des microcontrĂ´leurs RISC AVR, Elektor, 2009 (ISBN 978-2-86661-169-9)
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.