Maison / Maîtriser le PC / Microcontrôleurs AVR. Bases de la programmation. AVR. Formation. Introduction. Qu'est-ce que le microcontrôleur de la série Avr

Microcontrôleurs AVR. Bases de la programmation. AVR. Formation. Introduction. Qu'est-ce que le microcontrôleur de la série Avr

Famille AVR - comprend des microcontrôleurs 8 bits pour un large éventail de tâches. Pour les projets complexes avec un grand nombre d'entrées/sorties, vous disposez des microcontrôleurs AVR Mega et AVR xmega, disponibles en boîtiers de 44 à 100 broches et disposant jusqu'à 1024 Ko de mémoire Flash, et leur vitesse de fonctionnement est en hausse à 32 millions d'opérations par seconde. Presque tous les modèles ont la capacité de générer du PWM, un ADC et un DAC intégrés.

Des millions de radioamateurs développent des projets intéressants sur AVR - c'est la famille de MK la plus populaire, de nombreux livres ont été écrits à leur sujet en russe et dans d'autres langues du monde.

Intéressant : pour le firmware, vous avez besoin d'un programmeur, l'un des plus courants est AVRISP MKII, que vous pouvez facilement créer à partir de votre Arduino.

La popularité de la famille AVR est maintenue à un niveau élevé depuis de nombreuses années ; au cours des 10 dernières années, l'intérêt pour eux a été alimenté par le projet Arduino - une carte pour une entrée simple dans le monde de l'électronique numérique.

Domaines d'application de divers Tiny, Mega

Il est impossible de décrire clairement le champ d'application du microcontrôleur, car il est illimité, mais il peut être classé comme suit :

  1. Le petit AVR est le plus simple en termes techniques. Ils ont peu de mémoire et de broches pour connecter les signaux, et le prix est approprié. Cependant, il s'agit d'une solution idéale pour des projets simples, allant du contrôle automatique de l'éclairage intérieur d'une voiture aux sondes d'oscilloscope pour la réparation électronique à faire soi-même. Ils sont également utilisés dans le projet compatible Arduino - Digispark. Il s'agit de la plus petite version d'un Arduino tiers ; réalisé au format clé USB.
  2. La famille MEGA est longtemps restée la principale parmi les radioamateurs avancés, ils sont plus puissants et ont une capacité de mémoire et un nombre de broches plus grands que ceux de Tiny. Cela permet de réaliser des projets complexes, mais la famille est trop large pour être décrite brièvement. Ils ont été utilisés dans les premières cartes Arduino ; les cartes actuelles sont principalement équipées d'ATMEGA

La sortie de n'importe quel MK sans amplificateurs supplémentaires utilisera par exemple des LED ou une matrice de LED comme indicateurs.

AVR xMega ou microcontrôleurs plus anciens

Les développeurs d'Atmel ont créé l'AVR xMega comme un MK plus puissant, tout en appartenant à la famille AVR. Cela était nécessaire pour faciliter le travail du développeur lors du passage à une famille plus puissante.

AVR xMega a deux directions :

  • Les MK avec une tension d'alimentation de 1,8 à 2,7 volts fonctionnent avec une fréquence allant jusqu'à 12 MHz, leurs entrées résistent à une tension de 3,3 V ;
  • Les MK avec une tension d'alimentation de 2,7 à 3,6 volts peuvent déjà fonctionner à des fréquences plus élevées - jusqu'à 32 MHz, et l'entrée résiste à 5 volts.

A noter également : l'AVR xMega fonctionne très bien dans les systèmes autonomes car ils ont une faible consommation d'énergie. Par exemple : lorsque les minuteries et les horloges en temps réel fonctionnent, les RTC consomment 2 mA de courant et sont prêts à fonctionner en cas d'interruptions externes ou de dépassements de minuterie, ainsi qu'en fonction du temps. Divers temporisateurs 16 bits sont utilisés pour exécuter diverses fonctions.

Travailler avec un port USB

Commençons par le fait que pour programmer le microcontrôleur, vous devez utiliser un port série, mais sur les ordinateurs modernes, il manque souvent un port COM. Comment connecter un microcontrôleur à un tel ordinateur ? Si vous utilisez des convertisseurs USB-UART, ce problème peut être résolu très facilement. Vous pouvez assembler le convertisseur le plus simple à l'aide des microcircuits FT232 et CH340, et son schéma est présenté ci-dessous.

Ce convertisseur se trouve sur les cartes Arduino UNO et Aduino Nano.

Certains microcontrôleurs AVR ont un port USB (matériel) intégré :

  • ATmega8U2 ;
  • ATmega16U2 ;
  • ATmega32U2.

Cette solution est utilisée pour mettre en œuvre la communication entre un ordinateur et l'Arduino mega2560 via USB, dans laquelle le microcontrôleur « comprend » uniquement l'UART.

Objectif du DAC et de l'ADC des microcontrôleurs AVR

Les convertisseurs numérique-analogique (DAC) sont des appareils qui convertissent les signaux des uns et des zéros (numériques) en signaux analogiques (variant doucement). Les principales caractéristiques sont la profondeur de bits et la fréquence d'échantillonnage. L'ADC convertit le signal analogique en forme numérique.

Des ports prenant en charge l'ADC sont nécessaires pour connecter des capteurs analogiques, par exemple de type résistif, au microcontrôleur.

Le DAC a trouvé son application dans les filtres numériques, où le signal d'entrée est traité par logiciel et émis via le DAC sous forme analogique ; ci-dessous vous voyez des oscillogrammes visuels. Le graphique du bas est le signal d'entrée, le graphique du milieu est le même signal, mais traité par un filtre analogique, et le graphique du haut est un filtre numérique sur le microcontrôleur Tiny45. Un filtre est nécessaire pour former la plage de fréquences requise du signal, ainsi que pour former un signal d'une certaine forme.


Un exemple d'utilisation d'un CAN est un oscilloscope sur un microcontrôleur. Malheureusement, il ne sera pas possible de suivre les fréquences des opérateurs mobiles et du processeur du PC, mais des fréquences de l'ordre de 1 MHz sont faciles. Ce sera un excellent assistant lorsque vous travaillerez avec des alimentations à découpage.

Et voici une vidéo détaillée de ce projet, des instructions de montage et des conseils de l'auteur :

Quelle littérature dois-je lire sur les microcontrôleurs AVR pour les débutants ?

Des montagnes de littérature ont été écrites pour former les jeunes professionnels, examinons quelques-unes d'entre elles :

  1. Evstifeev A.V. "Microcontrôleurs AVR de la famille Mega." Le livre traite en détail de l'architecture des microcontrôleurs. Le but de tous les registres et minuteries, ainsi que leurs modes de fonctionnement, sont décrits. Le fonctionnement des interfaces de communication avec l'extérieur, SPI, etc. a été étudié. Le système de commande est dévoilé pour qu'un radioamateur de niveau moyen puisse le comprendre. Le contenu du livre «AVR Microcontrollers of the Mega Family: User Guide» vous aidera à étudier la structure de la puce et le but de chacun de ses nœuds, ce qui est certainement important pour tout programmeur de microcontrôleurs.
  2. Belov A.V. – « Les microcontrôleurs AVR dans la pratique de la radio amateur. » Comme son titre l'indique, ce livre est largement consacré à l'aspect pratique du travail avec les microcontrôleurs. Le microcontrôleur ATiny2313, devenu un classique, est examiné en détail, ainsi que de nombreux circuits à assembler.
  3. Hartov V. Ya. «Microcontrôleurs AVR. Atelier pour débutants." Il vous aidera à comprendre AVR studio 4, ainsi que le kit de démarrage STK. Vous apprendrez à travailler avec des interfaces série et parallèle, telles que UART, I2C et SPI. Livre « Microcontrôleurs AVR. Atelier pour débutants" rédigé par un enseignant du MSTU. N.E. Bauman et y est utilisé pour étudier ce sujet.

L'étude de cette famille de microcontrôleurs a aidé de nombreux passionnés d'électronique à commencer à travailler et à développer des projets. Cela vaut la peine de commencer par une famille populaire afin d’avoir toujours accès à une mer d’informations.

Parmi les radioamateurs débutants, il n'y a qu'un seul concurrent aux microcontrôleurs AVR - PIC.

Les microcontrôleurs sont des appareils petits, mais en même temps très pratiques pour ceux qui souhaitent créer diverses choses robotiques ou automatisées étonnantes à la maison. Cet article discutera de la programmation AVR pour les débutants, des divers aspects et nuances de ce processus.

informations générales

Les microcontrôleurs peuvent être trouvés partout. On les retrouve dans les réfrigérateurs, les machines à laver, les téléphones, les machines industrielles, les maisons intelligentes et bien d’autres appareils techniques. Leur utilisation généralisée est due à leur capacité à remplacer des circuits d'appareils analogiques plus complexes et à grande échelle. La programmation de l'AVR MK permet un contrôle autonome des appareils électroniques. Ces microcontrôleurs peuvent être considérés comme un simple ordinateur pouvant interagir avec des équipements externes. Ainsi, ils peuvent ouvrir/fermer des transistors, recevoir des données de capteurs et les afficher sur des écrans. Les microcontrôleurs peuvent également effectuer divers traitements d’informations d’entrée, à la manière d’un ordinateur personnel. Si vous maîtrisez la programmation AVR à partir de zéro et atteignez le niveau professionnel, vous aurez des possibilités presque illimitées pour contrôler divers appareils à l'aide des ports d'E/S, ainsi que pour modifier leur code.

Un peu sur l'AVR

L'article considérera une famille de microcontrôleurs produits par Atmel. Ils ont d'assez bonnes performances, ce qui leur permet d'être utilisés dans de nombreux appareils amateurs. Largement utilisé dans l'industrie. On retrouve dans cette technique :

  1. Domestique. Machines à laver, réfrigérateurs, fours à micro-ondes, etc.
  2. Mobile. Robots, communications, etc.
  3. L'informatique. Systèmes de contrôle de périphériques, cartes mères.
  4. Divertissant. Bijoux et jouets pour enfants.
  5. Transport. Systèmes de sécurité des véhicules et de gestion du moteur.
  6. Équipement industriel. Systèmes de contrôle des machines.

Bien entendu, cela ne couvre pas tous les domaines. Ils sont utilisés lorsqu'il est avantageux d'utiliser non pas un ensemble de puces de contrôle, mais un microcontrôleur. Ceci est possible grâce à la faible consommation d'énergie et les langages C et Assembleur sont utilisés pour écrire des programmes, légèrement modifiés pour la famille des microcontrôleurs. De tels changements sont nécessaires en raison de la faiblesse des capacités informatiques, généralement calculées en dizaines de kilo-octets. La programmation AVR sans apprendre ces langages n'est pas possible.

Comment obtenir votre premier microcontrôleur ?

La programmation AVR nécessite :

  1. Disponibilité de l'environnement de développement nécessaire.
  2. En fait, les microcontrôleurs eux-mêmes.

Considérons le deuxième point plus en détail. Il existe trois options pour acquérir l'appareil requis :

  1. Achetez le microcontrôleur lui-même directement.
  2. Obtenez un appareil dans le cadre du concepteur (par exemple, Arduino).
  3. Assemblez vous-même le microcontrôleur.

Il n’y a rien de compliqué dans le premier point, passons donc au deuxième et au troisième.

Obtenez un appareil dans le cadre du concepteur

Le célèbre Arduino sera choisi comme exemple. Il s'agit également d'une plate-forme pratique pour le développement rapide et de haute qualité de divers appareils électroniques. La carte Arduino comprend un ensemble spécifique de composants pour le fonctionnement (il existe différentes configurations). Il doit inclure un contrôleur AVR. Cette approche vous permet de commencer rapidement à développer un appareil, ne nécessite pas de compétences particulières, possède des capacités importantes en termes de connexion de cartes supplémentaires et vous pouvez également trouver de nombreuses informations sur Internet sur des questions d'intérêt. Mais il y avait quelques inconvénients. En achetant un Arduino, une personne se prive de la possibilité de se plonger plus profondément dans la programmation AVR, de mieux comprendre le microcontrôleur et les spécificités de son fonctionnement. Un autre aspect négatif est la gamme relativement étroite de modèles, c'est pourquoi vous devez souvent acheter des cartes pour des tâches spécifiques. Une autre particularité est que la programmation en « SI » diffère ici assez fortement de la forme standard. Malgré toutes ses lacunes, Arduino convient aux débutants. Mais il ne faut pas en abuser.

Auto-assemblage

Il convient de noter que les microcontrôleurs AVR sont plutôt conviviaux pour les débutants. Vous pouvez les assembler vous-même à l'aide de composants disponibles, simples et bon marché. Si nous parlons des avantages, cette approche vous permet de mieux vous familiariser avec l'appareil, de sélectionner indépendamment les composants nécessaires, d'adapter le résultat final aux exigences, d'utiliser des langages de programmation standard et d'avoir un faible coût. Les seuls inconvénients que l’on peut relever sont la difficulté de l’auto-assemblage lors de sa première réalisation, et le manque de connaissances et de compétences nécessaires.

Comment travailler?

Disons donc que le problème du microcontrôleur a été résolu. En outre, il sera considéré qu'il a été acheté ou acheté indépendamment. De quoi d'autre avez-vous besoin pour maîtriser la programmation AVR ? Pour cela, vous avez besoin d'un environnement de développement (un bloc-notes classique fera l'affaire comme base, mais je recommande d'utiliser Notepad++). Bien qu'il existe d'autres programmes disponibles pour programmer les AVR, ce logiciel sera capable de répondre à toutes les exigences. Un programmeur est également requis. Vous pouvez l'acheter dans votre magasin local, le commander en ligne ou l'assembler vous-même. Un circuit imprimé ne ferait pas de mal non plus. Ce n'est pas obligatoire, mais son utilisation vous permet d'économiser vos nerfs et votre temps. Également acheté/créé indépendamment. Et la dernière chose est la source d’alimentation. Pour l'AVR, il est nécessaire de fournir une alimentation en tension de 5V.

Où et comment étudier ?

Vous ne pourrez pas créer de chefs-d'œuvre à partir de zéro. Cela nécessite des connaissances, de l'expérience et de la pratique. Mais où puis-je les obtenir ? Il existe plusieurs façons. Dans un premier temps, vous pouvez rechercher indépendamment les informations nécessaires sur le World Wide Web. Vous pouvez vous inscrire à des cours de programmation (à distance ou en présentiel) pour acquérir des compétences professionnelles de base. Chaque approche a ses avantages. Ainsi, les cours de programmation à distance seront moins chers, voire gratuits. Mais si quelque chose ne fonctionne pas, alors grâce aux cours en présentiel, un développeur expérimenté sera en mesure de trouver rapidement la cause du problème. Ce serait également une bonne idée de vous familiariser avec la littérature disponible gratuitement. Bien sûr, vous ne pourrez pas vous débrouiller uniquement avec des livres, mais vous pourrez acquérir des connaissances de base sur l'appareil, la programmation en « SI », « Assembleur » et d'autres aspects du travail.

Ports E/S

C'est un sujet extrêmement important. Sans comprendre le fonctionnement des ports d'E/S, la programmation en circuit de l'AVR n'est pas du tout possible. Après tout, l'interaction du microcontrôleur avec des périphériques externes s'effectue précisément par leur médiation. À première vue, un débutant peut penser que le portage est un mécanisme plutôt déroutant. Pour éviter une telle impression, nous n'examinerons pas en détail le schéma de son fonctionnement, mais nous en donnerons seulement une idée générale. Considérons l'implémentation du logiciel. Comme exemple d'appareil, le microcontrôleur AtMega8 a été choisi - l'un des plus populaires de toute la famille AVR. Le port E/S se compose de trois registres responsables de son fonctionnement. Au niveau physique, ils se réalisent comme des jambes. Chacun d'eux correspond à un bit spécifique dans le registre de contrôle. Chaque jambe peut fonctionner à la fois pour saisir des informations et pour les sortir. Par exemple, vous pouvez attacher une fonction permettant d'allumer une LED ou de traiter une pression sur un bouton. À propos, les trois registres mentionnés sont : PORTx, PINx et DDRx. Chacun d'eux est de huit bits (rappelez-vous, nous examinons AtMega8). Autrement dit, un bit est occupé par une jambe spécifique.

Opération d'enregistrement

Le plus important en termes d'orientation est le contrôle DDRx. C'est aussi huit bits. Ses valeurs peuvent être écrites 0 ou 1. Comment le fonctionnement du contrôleur change-t-il lors de l'utilisation de zéros et de uns ? Si un certain bit est mis à 0, alors la jambe correspondante passera en mode d'entrée. Et à partir de là, il sera possible de lire des données provenant de périphériques externes. S'il est défini sur 1, le microcontrôleur sera capable de contrôler quelque chose (par exemple, demander à un transistor de faire passer la tension et d'allumer une LED). Le deuxième plus important est PORTx. Il gère l'état de la jambe. Regardons un exemple. Disons que nous avons un port de sortie. Si nous en définissons un logique dans PORTx, alors un signal est envoyé du microcontrôleur au dispositif de contrôle pour commencer à fonctionner. Par exemple, allumez la LED. Lorsque zéro est réglé, il s'éteint. Autrement dit, il n'est pas nécessaire de travailler constamment avec le registre de contrôle DDRx. Et enfin, parlons de PINx. Ce registre est chargé d'afficher l'état de la broche du contrôleur lorsqu'elle est définie sur l'état d'entrée. Il convient de noter que PINx ne peut fonctionner qu'en mode lecture. Vous ne pourrez rien y écrire. Mais lire l’état actuel de la jambe ne pose aucun problème.

Travailler avec des analogues

Les AVR ne sont pas les seuls microcontrôleurs. Ce marché est réparti entre plusieurs grands fabricants, ainsi qu'entre de nombreux imitateurs chinois et appareils faits maison. À bien des égards, ils sont similaires. Par exemple, la programmation d'un PIC/AVR n'est pas très différente. Et si vous comprenez une chose, alors comprendre tout le reste sera facile. Mais nous recommandons néanmoins de commencer le voyage avec AVR en raison de sa structure compétente, de sa convivialité pour les développeurs et de la présence d'un grand nombre de supports, c'est pourquoi le processus de développement peut être considérablement accéléré.

Précautions de sécurité

Lors de la programmation des microcontrôleurs AVR en « SI » ou « Assembleur », vous devez travailler avec beaucoup de soin. Le fait est qu'en définissant une certaine combinaison de registres et en modifiant les paramètres internes, vous pouvez bloquer le microcontrôleur en toute sécurité. Cela est particulièrement vrai pour les fusibles. Si vous n'êtes pas sûr de la justesse de vos actions, il est préférable de refuser de les utiliser. La même chose s'applique aux programmeurs. Si vous achetez du matériel d'usine, les microcontrôleurs seront flashés sans problème. Lors de l'assemblage de vos propres mains, une triste situation peut survenir dans laquelle le programmeur bloque l'appareil. Cela peut se produire soit en raison d'une erreur dans le code du programme, soit en raison de problèmes dans le code lui-même. À propos, à propos d'un autre point (cette fois positif) qui a déjà été évoqué en passant, mais qui n'a jamais été entièrement divulgué. Aujourd'hui, presque tous les microcontrôleurs modernes disposent d'une fonction de programmation en circuit. Qu'est-ce que ça veut dire? Supposons que l'appareil ait été soudé sur la carte. Et pour changer son firmware, vous n'avez plus besoin de le dessouder, car une telle intervention peut endommager le microcontrôleur lui-même. Il suffit de se connecter aux broches correspondantes et de le reprogrammer via elles.

Quel modèle choisir ?

Dans le cadre de l'article, AtMega8 a été examiné. Il s'agit d'un microcontrôleur plutôt médiocre au niveau de ses caractéristiques, qui suffit néanmoins à la plupart des métiers. Si vous souhaitez créer quelque chose à grande échelle, vous pouvez prendre des monstres originaux comme Atmega128. Mais ils sont conçus pour des développeurs plus expérimentés. Par conséquent, si vous n’avez pas suffisamment d’expérience, il est préférable de commencer avec des appareils petits et simples. En plus, ils sont beaucoup moins chers. D'accord, c'est une chose de bloquer accidentellement un microcontrôleur pour cent roubles, mais c'en est une autre de le bloquer pour un demi-millier. Mieux vaut se mettre dans le bain et comprendre les différents aspects du fonctionnement pour ne pas perdre des sommes importantes dans le futur. Dans un premier temps, vous pouvez commencer avec AtMega8, puis vous concentrer sur vos besoins.

Conclusion

Le sujet de la programmation AVR a donc été abordé dans les termes les plus généraux. Bien sûr, il y a encore beaucoup à dire. Ainsi, par exemple, le marquage des microcontrôleurs n'a pas été pris en compte. Et cela peut en dire long. Ainsi, les microcontrôleurs fonctionnent généralement à une tension de 5V. Alors que la présence, par exemple, de la lettre L peut indiquer que seulement 2,7 V suffit au fonctionnement de l'appareil. Comme vous pouvez le constater, la connaissance des marquages ​​peut parfois jouer un rôle très important en termes de fonctionnement correct et durable des appareils. . La durée de fonctionnement des microcontrôleurs est également un sujet intéressant. Chaque appareil est conçu pour une certaine période. Ainsi, certains peuvent travailler mille heures. D'autres ont une réserve de garantie de 10 000 !

Microcontrôleurs AVR. Bases de la programmation

Structure et principales caractéristiques des microcontrôleurs AVR

Dans cet article, nous essaierons de décrire en termes généraux, caractéristiques principales, qu'est-ce qu'il y a « à l'intérieur », ce qui est nécessaire pour commencer à travailler avec les microcontrôleurs AVR, etc.

Qu'est-ce que Tiny, Mega ?

Entreprise Atmel produit une vaste gamme de microcontrôleurs huit bits basés sur le noyau AVR, divisés en plusieurs sous-familles, différant par leurs caractéristiques techniques, leur application et leur prix :

  • ATtiny– Famille de microcontrôleurs AVR optimisée pour les applications nécessitant des performances relativement élevées (jusqu'à 1,0 MIPS et capables de fonctionner à des fréquences jusqu'à 20,0 MHz), une efficacité énergétique (ATtiny est la seule famille capable de fonctionner à partir d'une tension d'alimentation de 0,7 V !) et une compacité ( il existe des microcontrôleurs dans le boîtier SOT23-6 - seulement 6 broches, et chaque broche a plusieurs fonctions, par exemple : port E/S, entrée ADC, sortie PWM, etc.). C’est là qu’émerge leur champ d’application : appareils critiques en termes de prix, de consommation d’énergie, de taille, etc.
  • ATmega– une famille de microcontrôleurs AVR conçus pour être utilisés dans des domaines très variés, grâce à un très grand nombre de périphériques, une grande quantité de mémoire programme, des ports d'entrée/sortie, etc. En un mot, il y a de la place pour s'étendre.
  • ATxméga– une nouvelle famille de microcontrôleurs AVR avec un ensemble de périphériques encore plus large que l'ATmega (ajout d'un dispositif d'accès direct à la mémoire, DAC, module CRC, interface USB complète, ADC plus rapide, etc.), avec des fréquences de fonctionnement jusqu'à 32,0 MHz.

Il convient de noter la principale caractéristique de tous les appareils ci-dessus : ils ont tous une architecture unique, ce qui facilite le transfert de code d'un microcontrôleur à un autre.
Les microcontrôleurs sont disponibles en boîtiers DIP et SMD (chacun avec ses propres avantages et inconvénients).

Les caisses d'emballage les plus populaires sont :

  • DIP (Dual Inline Package) - boîtier avec deux rangées de contacts
  • QFP (Quad Flat Package) - boîtier plat avec quatre rangées de contacts
  • SOIC (Small-Outline Integrated Circuit) – circuits intégrés de petite taille (petite surface)

Quant à la pratique du radioamateur, les microcontrôleurs sont bien entendu du plus grand intérêt dans Forfait DIP, car ils sont les plus faciles à utiliser - ils ont un pas assez grand entre les broches et, en plus, vous pouvez utiliser des prises pour eux (il s'agit d'un connecteur spécial où vous pouvez installer des microcircuits sans soudure).
En général, une prise est une invention extrêmement pratique - les broches sont toujours intactes et vous pouvez retirer et insérer un microcircuit à plusieurs reprises, et il est beaucoup plus facile de réaliser des prototypes de futurs appareils.

Alimentation et synchronisation des microcontrôleurs AVR

Microcontrôleurs AVR construit à l'aide de la technologie CMOS, qui garantit une très faible consommation d'énergie. En pratique, la consommation électrique est linéaire et directement proportionnelle à la fréquence de fonctionnement (plus la fréquence est élevée, plus la consommation électrique est élevée).



La tension d'alimentation des microcontrôleurs AVR varie de 2,7 à 5,5 V(6,0 V est le maximum, même si mon AVR a fonctionné d'une manière ou d'une autre à 7 V - et rien, il est toujours vivant à ce jour). Cela signifie que l'AVR peut directement contrôler, échanger des données, etc. avec divers appareils (à la fois tolérants à 3,3 V et tolérants à 5 V) sans avoir besoin d'utiliser de convertisseurs de niveau logique. Pour un traitement plus précis des signaux analogiques, l'AVR fournit des broches séparées pour alimenter la partie analogique du microcontrôleur, qui comprend des dispositifs tels qu'un CAN, un DAC et un comparateur analogique. De plus, les microcontrôleurs AVR disposent de plusieurs « modes veille » pour offrir la meilleure économie d'énergie possible.

De plus, chaque broche du microcontrôleur (en fonction de la fréquence de fonctionnement et de la tension d'alimentation) peut alimenter des appareils externes en courant jusqu'à 40,0 mA(maximum !), mais tout peut être « téléchargé/téléchargé » depuis le microcontrôleur jusqu'à 200,0 mA(maximum!).

La gamme de fréquences des signaux d'horloge diffère en fonction de «l'ancienneté de la famille» (ATtiny est la plus jeune famille de microcontrôleurs AVR et ATxMega la plus ancienne). Pour certains représentants, notamment la famille ATtiny, la fréquence de fonctionnement peut atteindre 20,0 MHz, pour ATmega elle ne dépasse pas 16,0 MHz , tandis qu'ATxMega ne dépasse pas 32,0 MHz. De plus, chaque microcontrôleur AVR dispose d'un oscillateur RC interne jusqu'à 8,0 MHz, ce qui vous permet de vous passer d'une source de signal d'horloge externe.

Atmel produit des microcontrôleurs avec des fréquences de fonctionnement maximales moitié inférieures à la norme (pour augmenter les économies d'énergie), vous devez donc faire attention au codage des microcontrôleurs lors de leur achat. Informations détaillées sur quel microcontrôleur fonctionne à quelles fréquences et tensions d'alimentation, quels encodages sont disponibles, emballage pour ce microcontrôleur, etc. peuvent être trouvés dans la section « Informations de commande » de chaque fiche technique.

Vous trouverez ci-dessous un exemple de tableau de la fiche technique du microcontrôleur ATtiny13. Dans la colonne "Code de commande", vous pouvez voir les différences entre les encodages et il n'est pas difficile de deviner à quoi ils sont liés.



Que contient le microcontrôleur AVR ?

Comme déjà indiqué dans la préface, Microcontrôleurs AVR avoir une architecture Harvard (la principale caractéristique d'une telle architecture est que la mémoire programme et la RAM, ainsi que leurs bus d'accès, sont séparés pour augmenter la vitesse d'exécution des commandes : pendant qu'une commande est en cours d'exécution, la suivante est récupérée du programme mémoire) avec un processeur RISC, avec une vitesse de 1,0 MIPS. Tous les microcontrôleurs, quels que soient leur modèle et leur disposition, possèdent la même unité centrale (processeur/cœur). Un seul cœur rend un programme écrit dans n'importe quel langage plus universel et, si vous le souhaitez, peut être remplacé dans n'importe quel projet, par exemple un contrôleur plus cher par un autre moins cher, avec des modifications minimes du code.

RISQUE(Ordinateur à jeu d'instructions réduit) – un processeur avec un ensemble d'instructions d'assemblage simples (ajouter, soustraire, décaler vers la gauche/droite, « ET logique », etc.), toutes les instructions ont une longueur fixe, le processeur contient un grand nombre d'instructions générales registres à usage, etc. Pour, par exemple, calculer une sorte d'équation mathématique moyenne, le processeur devra exécuter plusieurs instructions d'assemblage simples, contrairement à un processeur CISC qui a des instructions « pour toutes les occasions ». Mais AVR n'est pas tout à fait RISC. -processeur, car toutes les instructions d'assemblage n'ont pas un format fixe. La plupart ont un format de 16 bits, les autres sont de 32 bits. Cela signifie que chaque instruction occupe 16 ou 32 bits dans la mémoire du programme. D'ailleurs, les instructions non fixes la longueur des instructions d'assemblage est ce qui en fait un processeur : processeur Advanced Virtual RISC (AVR).

MIPS(Million d'instructions par seconde) - Les microcontrôleurs AVR sont capables d'exécuter (environ) un million d'instructions à 1,0 MHz, ou en termes simples, la plupart des instructions d'assemblage sont exécutées en un seul cycle d'horloge.



Le cerveau d'un microcontrôleur AVR est son unité centrale de traitement (CPU/cœur).

Quelques composants du processeur :

Unité arithmétique et logique

Compteur de programme

Pointeur de pile

  • Registre de statut
  • Mémoire de programme Flash
  • Mémoire de données

Registres à usage général

Registres périphériques (registres d'E/S)

Mémoire RAM

Système d'horloge. Ce système peut être comparé au système cardiovasculaire

Unité d'interruption

Périphériques, je vais en énumérer quelques-uns :

Ports E/S

Mémoire EEPROM

Interfaces USB (xMega uniquement), USART, I2C, SPI, JTAG

Chien de garde, minuterie/compteur (avec oscillateur PWM, capture/comparaison, etc.)

ADC, DAC (xMega uniquement), comparateur analogique

Modules d'interruptions externes

L'ensemble des périphériques des différentes familles (Tiny, Mega et xMega) et des différents microcontrôleurs de ces familles est différent. Il existe des microcontrôleurs dotés d'une variété de périphériques, mais il existe également, pour les développements critiques en termes de coûts, des microcontrôleurs dotés d'un petit ensemble (nécessaire) de périphériques.

L'un des avantages des microcontrôleurs AVR est la possibilité d'utiliser des périphériques dans différents modes de fonctionnement communs, ce qui simplifie très souvent la tâche du développeur. L'AVR dispose également d'un système intégré de réinitialisation et de surveillance du niveau de tension d'alimentation (System Control and Reset), qui garantit un démarrage normal du microcontrôleur et, si nécessaire, un arrêt fiable.

Les registres de contrôle/état des périphériques sont situés dans la zone de mémoire de données, entre les registres à usage général et la RAM, ce qui garantit des performances élevées lors du travail avec des périphériques. Le développeur a bien entendu un accès complet à ces registres (registres d’E/S).

Que faut-il pour que le microcontrôleur fonctionne ?

  • écrire un programme (programme). Afin d'écrire un programme/algorithme pour lequel le microcontrôleur fonctionnera, vous aurez besoin d'un environnement de développement intégré pour les microcontrôleurs AVR, qui comprend un éditeur de code/texte, un compilateur, un éditeur de liens et d'autres utilitaires.
  • Conception de circuits. Le programme seul ne suffit pas au fonctionnement du microcontrôleur ; il nécessite également un minimum de kit (un ensemble de dispositifs électroniques externes) pour fournir au microcontrôleur une tension d'alimentation et un signal d'horloge afin qu'au moins le cœur du microcontrôleur fonctionne.
La figure suivante montre le kit de microcontrôleur « classique » nécessaire au fonctionnement normal.


La figure montre les exigences minimales de circuit pour le microcontrôleur ATmega16. Avec ce schéma de commutation, le cœur du microcontrôleur AVR commence à fonctionner, vous pouvez utiliser tous les ports d'entrée/sortie et autres périphériques. Bref, le microcontrôleur est en pleine préparation au combat. Pour, par exemple, commencer à utiliser un CAN ou un comparateur analogique, vous devez d'abord configurer par programme le périphérique à l'aide de ses registres de contrôle/surveillance pour définir le mode de fonctionnement dont vous avez besoin, etc., puis appliquer les signaux étudiés aux entrées du périphérique correspondant.

- Quartz et condensateurs C1, C2 (22 pF chacun) fournissent au microcontrôleur et à tous ses périphériques un signal d'horloge de haute qualité (fréquence maximale - 16,0 MHz).

Résistance R1(10K), fournit un niveau élevé à l'entrée RESET, nécessaire au fonctionnement stable du microcontrôleur. Si, pendant le fonctionnement du microcontrôleur, la tension sur cette broche descend en dessous d'un certain niveau, le microcontrôleur sera réinitialisé et le fonctionnement de l'algorithme prévu pourra être perturbé.

-Connecteur FAI utilisé pour la programmation en circuit, c'est-à-dire qu'il est nécessaire d'écrire le programme que vous avez écrit dans la mémoire du microcontrôleur directement sur la carte (sans retirer le microcontrôleur de l'appareil).

- Accélérateur L1 et les condensateurs C3, C4 fournissent la tension d'alimentation aux périphériques analogiques, ainsi qu'à certains registres de ports d'E/S. Si le microcontrôleur n'a pas de partie analogique, alors il n'y a pas de broches d'alimentation analogiques, par conséquent ces composants ne sont pas nécessaires. Le câblage simplifié du microcontrôleur est le suivant : d'une part, puisque le microcontrôleur était privé de synchronisation externe, il convient d'indiquer que la synchronisation viendra de l'oscillateur RC interne en réglant les bits fusibles appropriés (une sorte de paramètres de fonctionnement limitants du microcontrôleur ).
La fréquence maximale de l'oscillateur interne est de 8,0 MHz, ce qui signifie que le microcontrôleur ne pourra pas fonctionner à sa fréquence maximale (performances).
Deuxièmement, la partie analogique du microcontrôleur (ainsi que certains registres des ports d'entrée/sortie) ne disposent pas d'une source d'alimentation, ce qui exclut leur utilisation.
Troisièmement, il n'y a pas de connecteur pour la programmation en circuit, donc pour écrire le firmware dans la mémoire du microcontrôleur, vous devrez le retirer de l'appareil, l'écrire quelque part, puis le remettre à sa place. Comme vous le comprenez vous-même, ce n'est pas très pratique (retirer/insérer, souder/dessouder) et peut endommager à la fois le microcontrôleur lui-même (les pattes peuvent se casser, surchauffer à cause de la soudure, etc.) et les appareils à proximité - connecteur, pistes à bord, etc.

Famille AVR - comprend des microcontrôleurs 8 bits pour un large éventail de tâches. Pour les projets complexes avec un grand nombre d'entrées/sorties, vous disposez des microcontrôleurs AVR Mega et AVR xmega, disponibles en boîtiers de 44 à 100 broches et disposant jusqu'à 1024 Ko de mémoire Flash, et leur vitesse de fonctionnement est en hausse à 32 millions d'opérations par seconde. Presque tous les modèles ont la capacité de générer du PWM, un ADC et un DAC intégrés.

Des millions de radioamateurs développent des projets intéressants sur AVR - c'est la famille de MK la plus populaire, de nombreux livres ont été écrits à leur sujet en russe et dans d'autres langues du monde.

Intéressant : pour le firmware, vous avez besoin d'un programmeur, l'un des plus courants est AVRISP MKII, que vous pouvez facilement créer à partir de votre Arduino.

La popularité de la famille AVR est maintenue à un niveau élevé depuis de nombreuses années ; au cours des 10 dernières années, l'intérêt pour eux a été alimenté par le projet Arduino - une carte pour une entrée simple dans le monde de l'électronique numérique.

Domaines d'application de divers Tiny, Mega

Il est impossible de décrire clairement le champ d'application du microcontrôleur, car il est illimité, mais il peut être classé comme suit :

  1. Le petit AVR est le plus simple en termes techniques. Ils ont peu de mémoire et de broches pour connecter les signaux, et le prix est approprié. Cependant, il s'agit d'une solution idéale pour des projets simples, allant du contrôle automatique de l'éclairage intérieur d'une voiture aux sondes d'oscilloscope pour la réparation électronique à faire soi-même. Ils sont également utilisés dans le projet compatible Arduino - Digispark. Il s'agit de la plus petite version d'un Arduino tiers ; réalisé au format clé USB.
  2. La famille MEGA est longtemps restée la principale parmi les radioamateurs avancés, ils sont plus puissants et ont une capacité de mémoire et un nombre de broches plus grands que ceux de Tiny. Cela permet de réaliser des projets complexes, mais la famille est trop large pour être décrite brièvement. Ils ont été utilisés dans les premières cartes Arduino ; les cartes actuelles sont principalement équipées d'ATMEGA

La sortie de n'importe quel MK sans amplificateurs supplémentaires utilisera par exemple des LED ou une matrice de LED comme indicateurs.

AVR xMega ou microcontrôleurs plus anciens

Les développeurs d'Atmel ont créé l'AVR xMega comme un MK plus puissant, tout en appartenant à la famille AVR. Cela était nécessaire pour faciliter le travail du développeur lors du passage à une famille plus puissante.

AVR xMega a deux directions :

  • Les MK avec une tension d'alimentation de 1,8 à 2,7 volts fonctionnent avec une fréquence allant jusqu'à 12 MHz, leurs entrées résistent à une tension de 3,3 V ;
  • Les MK avec une tension d'alimentation de 2,7 à 3,6 volts peuvent déjà fonctionner à des fréquences plus élevées - jusqu'à 32 MHz, et l'entrée résiste à 5 volts.

A noter également : l'AVR xMega fonctionne très bien dans les systèmes autonomes car ils ont une faible consommation d'énergie. Par exemple : lorsque les minuteries et les horloges en temps réel fonctionnent, les RTC consomment 2 mA de courant et sont prêts à fonctionner en cas d'interruptions externes ou de dépassements de minuterie, ainsi qu'en fonction du temps. Divers temporisateurs 16 bits sont utilisés pour exécuter diverses fonctions.

Travailler avec un port USB

Commençons par le fait que pour programmer le microcontrôleur, vous devez utiliser un port série, mais sur les ordinateurs modernes, il manque souvent un port COM. Comment connecter un microcontrôleur à un tel ordinateur ? Si vous utilisez des convertisseurs USB-UART, ce problème peut être résolu très facilement. Vous pouvez assembler le convertisseur le plus simple à l'aide des microcircuits FT232 et CH340, et son schéma est présenté ci-dessous.

Ce convertisseur se trouve sur les cartes Arduino UNO et Aduino Nano.

Certains microcontrôleurs AVR ont un port USB (matériel) intégré :

  • ATmega8U2 ;
  • ATmega16U2 ;
  • ATmega32U2.

Cette solution est utilisée pour mettre en œuvre la communication entre un ordinateur et l'Arduino mega2560 via USB, dans laquelle le microcontrôleur « comprend » uniquement l'UART.

Objectif du DAC et de l'ADC des microcontrôleurs AVR

Les convertisseurs numérique-analogique (DAC) sont des appareils qui convertissent les signaux des uns et des zéros (numériques) en signaux analogiques (variant doucement). Les principales caractéristiques sont la profondeur de bits et la fréquence d'échantillonnage. L'ADC convertit le signal analogique en forme numérique.

Des ports prenant en charge l'ADC sont nécessaires pour connecter des capteurs analogiques, par exemple de type résistif, au microcontrôleur.

Le DAC a trouvé son application dans les filtres numériques, où le signal d'entrée est traité par logiciel et émis via le DAC sous forme analogique ; ci-dessous vous voyez des oscillogrammes visuels. Le graphique du bas est le signal d'entrée, le graphique du milieu est le même signal, mais traité par un filtre analogique, et le graphique du haut est un filtre numérique sur le microcontrôleur Tiny45. Un filtre est nécessaire pour former la plage de fréquences requise du signal, ainsi que pour former un signal d'une certaine forme.


Un exemple d'utilisation d'un CAN est un oscilloscope sur un microcontrôleur. Malheureusement, il ne sera pas possible de suivre les fréquences des opérateurs mobiles et du processeur du PC, mais des fréquences de l'ordre de 1 MHz sont faciles. Ce sera un excellent assistant lorsque vous travaillerez avec des alimentations à découpage.

Et voici une vidéo détaillée de ce projet, des instructions de montage et des conseils de l'auteur :

Quelle littérature dois-je lire sur les microcontrôleurs AVR pour les débutants ?

Des montagnes de littérature ont été écrites pour former les jeunes professionnels, examinons quelques-unes d'entre elles :

  1. Evstifeev A.V. "Microcontrôleurs AVR de la famille Mega." Le livre traite en détail de l'architecture des microcontrôleurs. Le but de tous les registres et minuteries, ainsi que leurs modes de fonctionnement, sont décrits. Le fonctionnement des interfaces de communication avec l'extérieur, SPI, etc. a été étudié. Le système de commande est dévoilé pour qu'un radioamateur de niveau moyen puisse le comprendre. Le contenu du livre «AVR Microcontrollers of the Mega Family: User Guide» vous aidera à étudier la structure de la puce et le but de chacun de ses nœuds, ce qui est certainement important pour tout programmeur de microcontrôleurs.
  2. Belov A.V. – « Les microcontrôleurs AVR dans la pratique de la radio amateur. » Comme son titre l'indique, ce livre est largement consacré à l'aspect pratique du travail avec les microcontrôleurs. Le microcontrôleur ATiny2313, devenu un classique, est examiné en détail, ainsi que de nombreux circuits à assembler.
  3. Hartov V. Ya. «Microcontrôleurs AVR. Atelier pour débutants." Il vous aidera à comprendre AVR studio 4, ainsi que le kit de démarrage STK. Vous apprendrez à travailler avec des interfaces série et parallèle, telles que UART, I2C et SPI. Livre « Microcontrôleurs AVR. Atelier pour débutants" rédigé par un enseignant du MSTU. N.E. Bauman et y est utilisé pour étudier ce sujet.

L'étude de cette famille de microcontrôleurs a aidé de nombreux passionnés d'électronique à commencer à travailler et à développer des projets. Cela vaut la peine de commencer par une famille populaire afin d’avoir toujours accès à une mer d’informations.

Parmi les radioamateurs débutants, il n'y a qu'un seul concurrent aux microcontrôleurs AVR - PIC.

Examinons l'architecture interne des microcontrôleurs AVR, essayons de comprendre de quels blocs se compose la puce du microcircuit et de quelles fonctions chaque bloc est responsable, comment ils interagissent les uns avec les autres. Il y aura également des comparaisons et des exemples utiles, des notes précieuses qui aideront à clarifier les principes de fonctionnement du microcontrôleur avec des appareils et périphériques externes.

Microcontrôleur AVR de l'intérieur

De l'intérieur, un microcontrôleur est un ordinateur doté de son propre dispositif informatique, d'une mémoire permanente et dynamique, de ports d'E/S et de divers périphériques.

Riz. 1. Structure du microcontrôleur AVR. Dessin de digikey.com

L'intérieur du microcontrôleur contient :

  • Processeur haute vitesse avec architecture RISC ;
  • Mémoire flash;
  • Mémoire EEPROM ;
  • Mémoire RAM ;
  • Ports d'E/S ;
  • Modules périphériques et d'interface.

RISC (Reduced Instruction Set Computer) est une architecture avec un ensemble d'instructions soigneusement sélectionnées qui sont généralement exécutées en un seul cycle de processeur. Les microcontrôleurs AVR modernes contiennent environ 130 commandes, qui sont exécutées très rapidement et ne nécessitent pas de dépenses importantes tant en termes de ressources intra-processeur que de consommation d'énergie.

Schéma fonctionnel du microcontrôleur AVR

Regardons la figure ci-dessous et voyons de quels blocs se compose le microcontrôleur et comment ils sont connectés les uns aux autres :

Riz. 2. Schéma fonctionnel du microcontrôleur AVR.

Jetons un bref coup d'œil à ce qui est montré sur les blocs dans le diagramme :

  • Interface JTAG(Joint Test Action Group Interface) - interface de débogage en circuit (4 fils);
  • ÉCLAIR- mémoire reprogrammable pour sauvegarder le programme ;
  • Interface périphérique série, SPI- interface périphérique série (3 fils) ;
  • EEPROM(Mémoire morte programmable effaçable électriquement) - ROM reprogrammable, mémoire non volatile ;
  • CPU(CPU) - processeur de contrôle central, cœur du microcontrôleur, cœur du microprocesseur 8 bits ;
  • ALU(ALU) - unité arithmétique-logique, base de l'unité CPU ;
  • RAM(Mémoire vive) - RAM du processeur ;
  • Compteur de programme- compteur de commandes ;
  • 32 registres à usage général- 32 registres à usage général ;
  • Registre des instructions- registre des commandes, instructions ;
  • Décodeur d'instructions- décodeur de commandes ;
  • TOC(Débogueur sur puce) - unité de débogage interne ;
  • Comparateur analogique- comparateur analogique, unité de comparaison de signaux analogiques ;
  • Convertisseur A/D(Convertisseur analogique/numérique) - convertisseur analogique-numérique ;
  • Interface LCD(Interface d'affichage à cristaux liquides) - interface pour connecter un écran à cristaux liquides, un indicateur ;
  • USART(Universal Asynchronous Receiver-Transmitter), UART - émetteur-récepteur asynchrone universel ;
  • TWI(Interface série à deux fils) - interface série avec une connexion à deux fils ;
  • Minuterie de surveillance- minuterie de surveillance ou de contrôle ;
  • Ports E/S- ports d'eau/de sortie ;
  • Interruptions- unité de contrôle et réponse aux interruptions ;
  • Minuteries/compteurs- modules minuterie et compteur.

En savoir plus sur les blocs internes du microcontrôleur

Examinons maintenant de plus près tous les blocs du microcontrôleur, déterminons ce qui est nécessaire et pourquoi, et donnons des exemples simples dans un langage accessible.

Interface JTAG- une interface importante qui permet le débogage interne directement dans la puce à l'aide du bloc de débogage interne ( TOC), sans utiliser d'émulateurs. On peut dire que JTAG est une interface de débogage « matériel » d'un microcontrôleur. Grâce à un adaptateur JTAG, le microcircuit est directement connecté au progiciel pour la programmation et le débogage.

Grâce à cette interface, vous pouvez exécuter le programme directement dans le microcontrôleur en mode étape par étape, observer comment le contenu des registres change, comment les indicateurs et les LED connectés au microcontrôleur clignotent après chaque étape, etc. Pour se connecter à l'interface JTAG, 4 conducteurs suffisent : TDI(Test Data In), TDO(Test Data Out), TCK(Test Clock), TMS (Test Mode Select).

L'interface JTAG n'est pas disponible dans tous les microcontrôleurs AVR ; en règle générale, les puces avec 40 broches ou plus et une capacité de mémoire d'au moins 16 Ko ont un ajout si savoureux. Pour les tâches sérieuses - matériaux et outils sérieux.)

ÉCLAIR- mémoire de programme, ROM non volatile (mémoire morte) réalisée à l'aide de la technologie FLASH. Le programme qui sera exécuté par l'unité ALU du microcontrôleur est stocké ici. La mémoire flash de la puce peut être réécrite plusieurs fois, modifiant ou ajoutant ainsi le code du programme à exécuter. Ce type de mémoire peut conserver les données qui y sont écrites pendant 40 ans et le nombre de cycles d'effacement/écriture possibles peut atteindre 10 000.

Selon le modèle de microcontrôleur, la taille de la mémoire FLASH peut atteindre 256 Ko.

Interface périphérique série, SPI - interface périphérique série (SPI), qui est souvent utilisée pour échanger des données entre plusieurs microcontrôleurs à des vitesses allant jusqu'à plusieurs MHz (plusieurs millions d'horloges par seconde).

Pour échanger des données via l'interface SPI entre deux appareils, 3 conducteurs suffisent :

  1. MOSI (Master Output Slave Input) - Données du maître à l'esclave ;
  2. MISO (Master Input Slave Output) - Données de l'esclave au maître ;
  3. CLK (horloge) - signal d'horloge.

Les appareils dotés d'une interface SPI sont divisés en deux types : maître et esclave. Si plusieurs appareils sont connectés à l'interface, des lignes de communication supplémentaires (conducteurs) sont nécessaires pour échanger des données entre eux afin que le maître puisse sélectionner un appareil esclave et lui adresser une demande.

L'interface SPI est également utilisée pour la programmation SPI en circuit ; un programmateur est connecté au microcontrôleur via cette interface.

EEPROM- mémoire de données non volatile dans laquelle les données seront stockées même lorsque l'alimentation du microcontrôleur est coupée. Dans cette mémoire, vous pouvez stocker les paramètres d'exécution du programme, les données collectées pour les statistiques de fonctionnement de l'appareil et d'autres informations utiles. Par exemple, après avoir assemblé une petite station météo sur un microcontrôleur, vous pouvez stocker chaque jour des données sur la température de l'air, la pression et la force du vent dans l'EEPROM, puis lire à tout moment ces données collectées et mener des études statistiques.

L'EEPROM possède un espace d'adressage distinct qui diffère de l'espace d'adressage RAM et FLASH. La mémoire EEPROM d'un microcontrôleur est une ressource très précieuse, car elle est généralement très petite - de 0,5 à plusieurs kilo-octets par puce. Le nombre de réécritures pour ce type de mémoire est d'environ 100 000, soit 10 fois plus que la ressource mémoire FLASH.

ALU- Une unité arithmétique et logique synchrone du signal d'horloge et s'appuyant sur l'état du compteur programme ( Compteur de programme) sélectionne dans la mémoire du programme ( ÉCLAIR) commande suivante et l'exécute.

Le signal d'horloge du microcontrôleur est généré par un générateur d'horloge et peut être fourni à partir de plusieurs sources disponibles :

  • oscillateur RC interne pouvant être calibré à la fréquence souhaitée ;
  • résonateur en céramique ou à quartz avec condensateurs (non disponible sur tous les modèles) ;
  • signal d'horloge externe.

La source d'horloge est définie à l'aide des bits FUSE.

FUSIBLES(de l'anglais : melting, plug, fuse) - 4 octets spéciaux (4 * 8 = 32 bits) de données qui configurent certains paramètres globaux du microcontrôleur pendant le processus du micrologiciel. Après avoir flashé le firmware, ces bits ne peuvent pas être modifiés via le programme interne écrit dans le MK.

Avec cette configuration de bits, nous disons ceci au microcontrôleur :

  • quel oscillateur maître utiliser (externe ou interne);
  • diviser ou non la fréquence du générateur par un facteur ;
  • utilisez la broche de réinitialisation (RESET) pour la réinitialisation ou comme broche d'E/S supplémentaire ;
  • quantité de mémoire pour le chargeur de démarrage ;
  • les autres paramètres dépendent du microcontrôleur utilisé.

CPU- c'est le cerveau du microcontrôleur, qui contient l'ALU, les registres et la RAM.

Un bloc de 32 registres à usage général est connecté à l'ALU ( 32 registres à usage général- registre mémoire), dont chacun représente 1 octet de mémoire (8 bits). L'espace d'adressage des registres à usage général est situé au début de la mémoire vive (RAM) mais n'en fait pas partie. Avec les données placées dans les registres, vous pouvez effectuer diverses opérations arithmétiques, logiques et binaires. Effectuer de telles opérations dans la RAM n'est pas possible. Pour travailler avec des données de la RAM, vous devez les écrire dans des registres, effectuer les opérations nécessaires dans les registres, puis écrire les données résultantes des registres dans la mémoire ou dans d'autres registres pour effectuer certaines actions.

RAM- RAM. Vous pouvez y écrire des données à partir de registres , lire les données dans des registres ; toutes les opérations et tous les calculs sur les données sont effectués dans des registres. Pour les différentes familles de puces AVR, la taille de la RAM est limitée :

  • ATxmega - jusqu'à 32 Ko ;
  • ATmega - 16 Ko ;
  • ATtiny - 1 Ko.

Comparateur analogique- ce bloc compare deux niveaux de signal entre eux et stocke le résultat de la comparaison dans un certain registre, après quoi le résultat soumis peut être analysé et les actions nécessaires effectuées. Par exemple : vous pouvez utiliser ce bloc comme ADC (Convertisseur Analogique-Numérique) et mesurer la tension de la batterie, si la tension de la batterie a atteint un niveau bas, effectuer certaines actions, faire clignoter la LED rouge, etc. Ce module peut également être utilisé pour mesurer la durée des signaux analogiques, lire les modes de fonctionnement réglés de l'appareil à l'aide d'un potentiomètre, etc.

Convertisseur A/D- ce bloc convertit la valeur de tension analogique en une valeur numérique, qui peut être utilisée dans le programme et sur la base de laquelle certaines actions peuvent être effectuées. En règle générale, la plage de tension fournie à l'entrée ADC du microcontrôleur AVR est comprise entre 0 et 5,5 volts. Pour cette unité, il est très important que le microcontrôleur soit alimenté par une source d'alimentation stable et de haute qualité. De nombreux microcontrôleurs AVR disposent d'une broche séparée spéciale pour fournir une alimentation stable au circuit ADC.

Interface LCD- interface pour connecter un indicateur ou un écran à cristaux liquides. Ils permettent d'afficher des informations, l'état de l'appareil et de ses composants.

USART- interface série asynchrone pour l'échange de données avec d'autres appareils. Le protocole RS-232 est pris en charge, grâce auquel le microcontrôleur peut être connecté pour échanger des données avec un ordinateur.

Pour une telle connexion entre le MK et le port COM de l'ordinateur, vous avez besoin d'un convertisseur logique de niveau de tension (+12V pour COM à +5V pour le microcontrôleur), ou simplement RS232-TTL. À des fins similaires, des microcircuits MAX232 et similaires sont utilisés.

Pour connecter le microcontrôleur à un ordinateur via USB à l'aide de l'interface UART, vous pouvez utiliser un microcircuit spécialisé FT232RL. Ainsi, sur les nouveaux ordinateurs et portables, sans port COM physique, vous pouvez lier un microcontrôleur à l'aide d'un port USB via l'interface USART.

TWI- interface pour l'échange de données via un bus bifilaire. Jusqu'à 128 appareils différents peuvent être connectés à un tel bus de données à l'aide de deux lignes de données : un signal d'horloge (SCL) et un signal de données (SDA). L'interface TWI est analogue à la version de base de l'interface I2C.

Contrairement à l'interface SPI (un maître et un/plusieurs esclaves), l'interface TWI est bidirectionnelle ; elle permet d'organiser un petit réseau interne entre plusieurs microcontrôleurs.

Minuterie de surveillance est un système permettant de surveiller le gel de l'appareil, puis de le redémarrer. C'est comme un bouton RESET automatique pour un vieil ordinateur avec un système d'exploitation buggé.))

Ports E/S, GPIO- il s'agit d'un ensemble de blocs de ports d'entrée/sortie aux broches desquels vous pouvez connecter une variété de capteurs, de dispositifs d'exécution et de circuits. Le nombre de broches d'entrée/sortie provenant des ports du microcontrôleur peut aller de 3 à 86.

Les pilotes de sortie dans les ports du microcontrôleur AVR vous permettent de connecter directement une charge avec une consommation de courant de 20 mA (maximum 40 mA) à une tension d'alimentation de 5 V. Le courant de charge total pour un port ne doit pas dépasser 80 mA (par exemple, accrochez une LED avec un courant de 15-20 mA sur 4 broches pour l'un des ports).

Interruptions- il s'agit d'un bloc chargé de réagir et de lancer certaines fonctions lorsqu'un signal arrive à certaines entrées du microcontrôleur ou en raison d'un événement interne (par exemple, le tic-tac d'une minuterie). Pour chaque interruption, un sous-programme distinct est développé et enregistré en mémoire.

Pourquoi ce bloc est-il appelé bloc d’interruption ? - parce que lorsqu'un événement spécifique à une interruption survient, l'exécution du programme principal interrompu et l'exécution prioritaire du sous-programme qui a été écrit pour l'interruption en cours se produit. A la fin du sous-programme, l'exécution du programme principal revient au moment où elle a été interrompue.

Minuteries/compteurs- un ensemble de minuteries et de compteurs. Un microcontrôleur contient généralement de un à quatre minuteurs et compteurs. Ils peuvent être utilisés pour compter le nombre d'événements externes, générer des signaux d'une certaine durée, générer des demandes d'interruption, etc. La largeur des minuteries et des compteurs est de 8 et 16 bits (recherchez la puce dans la fiche technique).

Conclusion

C’est essentiellement tout ce qu’il est utile de savoir au départ sur la structure du microcontrôleur AVR. De plus, au cours du processus de travail et de programmation, vous aurez l'occasion d'étudier en pratique les fiches techniques de différents modèles de puces AVR, d'apprendre plus en détail les principes de fonctionnement de chacun des cubes structurels MK et d'étudier leur fonctionnement, de jouer avec le débogage. , etc.

Dans le prochain article, nous essaierons de comprendre l’étiquetage des microcontrôleurs et de réfléchir aux puces les plus accessibles et les plus adaptées pour une étude initiale.