µcontroleurs Atmel

Déjà pour commencer les lien du site d’Atmel

– La page d’accueil : http://www.atmel.com/

La page de recherche des datasheets

Je préviens tout de suite il ne s’agit ici que d’une ébauche de note si vous voulez vous renseigner je vous invite à aller voir mes sources en bas de page ou à en trouvez par vous mêmes.

Résumé

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. Ce sont des µ-contrôleurs architecture Harvard 8 bits RISC (Reduced Instruction Set Computer). AVR signifiantAdvanced Virtual RISC. Ils utilisent des instructions codées sur un seul mot cela à deux avantages : chaque emplacements de la mémoire de programme contient une instruction le second est qu’il suffit d’un cycle de machine pour lire le code complet d’une instruction donc un gain en vitesse d’exécution. Ce qui différencie les divers microcontrôleurs est le nombre d’instructions Assembleur disponibles, la quantité de mémoire SRAM présente et surtout le nombre de lignes d’entrées/sorties (E/S ou I/O pour Input/Output), ainsi que la présence ou l’absence de périphériques tels que le UART, le timer,le convertisseur A/D, etc. De ce coté les AVR affichent de 90 à 120 instructions (contre 33 ou 35 pour les µ PIC). Une autre caractéristique est le mode par lequel le microcontrôleur exécute les instructions. On l’appelle instruction “pipelining” (chaîne de montage). Le “pipelining” consiste à exécuter une instruction et à aller chercher simultanément l’instruction suivante.

La programmation “in-system”

Vous pouvez noter que le microcontrôleur dispose d’une grande quantité de mémoire programme.  Ce type de mémoire peut être programmé “in-system”, c’est-à-dire que vous laissez le microcontrôleur sur le circuit sur lequel il doit travailler et qu’avec une connexion opportune au PC, vous le programmez selon vos propres exigences. La programmation “in system” évite l’inconvénient de devoir continuellement extraire le microcontrôleur de son support pour l’insérer dans le programmateur. On évite également, de cette façon, de l’endommager, en tordant par exemple une patte ou en cassant carrément une pendant les manoeuvres continues d’insertion et d’extraction du composant. Le seul inconvénient est la nécessité de devoir réaliser une liaison entre le circuit en conception et le PC.

Les principales caractéristiques

  • 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

 

 

 

 

Sources : l’excellent livre Microcontroleurs AVR : des ATtiny aux ATmega de Christian TAVERNIER (corrigé par Xavier ;)) ainsi que la page qui y est consacrée sur son site : http://www.tavernier-c.com/programmateur_atmel.htm, Wikipédia, un document légèrement obsolète (vue qu’il prends pour exemple la gamme AT90 qui n’existe plus) sur les µ-contrôleurs Falsh Atmel (http://www.technologuepro.com/microcontroleur/microavr.htm).