Étape 2: Quelle est la différence entre le noyau AVR & Arduino
Il s’agit de la première question fondamentale pour ceux qui sont relativement nouveaux trucs Arduino/AVR...
AVR :
Eh bien, AVR est une famille de microcontrôleurs de « Atmel semi-conducteurs »
Comme une famille contienne beaucoup de membres, la famille AVR contient également différents types de microcontrôleurs. Ils sont tous suit architecture de Havard. Ce sont des microcontrôleurs 8 bits. (Il y a 32 bits AVR puces également).
REA peut être principalement classées en trois groupes
1) tinyAVR. (bas pincount avec espace programmation inférieur)
megaAVR 2). (avec l’espace programmation moyenne)
xmegaAVR 3). (plu espace programmation avec certains étendu des fonctionnalités comme « DMA »).
Donc, il y a beaucoup de jetons sous ces 3 groupes.
Comme pour les Ex-.
ATMEGA8/Atmega16/Atmega32/Atmega328 sont tous différents membres de la famille mega avec certaines caractéristiques légèrement différents les uns des autres.
Pour dire, Atmega328p a 32 k flash / 1k EEPROM / 2k SRAM tandis que Atmega8 a 8 octets de flash/512 k EEPROM / 1K SRAM, bien que les deux n’ont même pas de pincount(28).
D’autre part Atmega32 a également 32k flash comme Atmega328p mais avec plus pincount(40).
ATTINY45 est un microcontrôleur populaire de tinyAVR famille avec seulement 8 broches et 4 k flash/512 bytes EEPROM & SRAM.
Il faut donc choisir le que microcontrôleur selon votre circuit a besoin. Comme si vous voulez une seule LED de cligner des yeux, puis ATTINY45 est parfait, mais si vous voulez conduire un complexe LCD 128 x 64 ou 20 x 4, puis vous devez choisir mega8/328/32.
Cette microcontrôleurs sont des puces vierges avec rien programmé dans leur flash/bootloader. Maintenant l’enfer quoi bootloader ? Je parlerai plus tard.
Vous devez concevoir un circuit d’alimentation pour le nourrir, il fournir horloge afin de l’exécuter. Aussi, vous avez besoin d’une sorte de programmeurs graver des programmes en eux.
Ils peuvent être programmés de différentes manières, nous allons voir dans les étapes à venir, comment il peut être fait. Aussi, vous avez besoin d’une sorte de IDE où vous pouvez écrire votre programme. WinAVR est un IDE. Atmel studio est aussi un autre IDE pour écrire des programmes pour les Microcontrôleurs Atmel.
Nous choisirons WinAVR pour programmer notre base de microcontrôleurs.
ARDUINO :
Nous pouvons dire que l’Arduino est plate-forme (y compris les logiciels) principalement utilisé pour le prototypage. Le plus grand bénéfice de l’arduino est qu’il s’agit d’une « open source ».
Eh bien, je suppose que je dois concentrer plus de lumière sur ce... parce que c’est la principale différence entre AVR et Arduino
Par exemple, rev3 Arduino UNO est une carte qui contient un microcontrôleur AVR et tous les périphériques nécessaires pour le faire fonctionner comme comme j’ai déjà dit, l’alimentation, circuit etc. d’horloge. Le microcontrôleur utilisé ici est un Atmega328p.
Il y a également un Conseil sur « arrangement » pour programmer le mega328p sans un programmeur. Maintenant, ce qui est l’arrangement???
Il y a un simple convertisseur USB vers série à bord par lequel vous pouvez programmer le mega328p. Mais comment??? C’est là, le « bootloader » se décline en.
« bootloader » est un petit programme situé dans une zone particulière du flash du microcontrôleur. Lorsque la puce est redémarré/sous tension, la puce tout d’abord entre dans la zone de chargeur de démarrage (cette activité doit également être programmée via les bits de fusible) et exécute le code écrit dedans. Mais comment le code est en mesure de programmer la puce elle-même???
Pour dire que le code est écrit de telle sorte, qu’il attend pour les programmation octets d’arriver de l’USB Serial Converter. Lors de la programmation octets reçus, il stocke les octets dans son programme flash et lorsque tous les octets reçus, il redémarre et exécute le code qui est nouvellement écrit dans flash programme.
Mais maintenant, une question qui pose après la programmation, si le mega328p est le démarrage du flash de programme (en évitant le chargeur de démarrage), puis comment il peut être programmé lors du prochain cycle??
La réponse est assez simple, le mega328p saute jamais à l’emplacement de démarrage du programme flash tout d’abord. Toujours, il saute tout d’abord à la section chargeur de démarrage et y attendre quelque temps pour l’arrivée de databytes via un port série. Si les données arrivent dans la timeperiod, puis il commence à programmer lui-même comme déjà dit, si les données n’arrivent dans ce moment, elle quitte la section chargeur de démarrage et démarre le code qui s’exécute depuis flash programme.
L’octet envoi séquence est connu par les deux le bootloader et le ArduinoIDE.This, c’est comment la programmation arduino fonctionnant sans l’aide d’un programmeur.
MAIS...
Pour pouvoir graver le bootloader dans flash d’AVR, une sorte de programmeur (soit parallèle/ISP) doit être utilisée pour la première fois. C’est là que se la nécessité des programmeurs autonome.
Maintenant sur l’IDE de l’arduino.
Dans l’IDE Arduino, il y a beaucoup de genres de cartes à choisir. Chaque Conseil utilise différents types de microcontrôleurs. Comme l’ONU rev3 Conseil utilise Atmega328p.The mega2560 utilisations Atmega2560 etc etc.
Puis il arrive une autre partie intéressante de l’Arduino. » La bibliothèque". Les bibliothèques sont des tas de programmes pour piloter les différents modules du microcontrôleur (comme TWI, SPI, PORT, etc.) ou de conduire un autre matériel externe comme LCD, Stepper motor, différents types de capteurs et beaucoup d’autres. Afin que le microcontrôleur fonctionne, vous devez écrire certains codes nominales en utilisant les fonctions de la bibliothèque existante. Aussi le langage utilisé dans l’IDE Arduino est C/C++. Mais tu ne dois pas interagir directement avec le matériel de l’atmega. Ceux-ci sont pris en charge en arrière-plan. Les commandes sont beaucoup plus simples qu’avec un noyau « C ». J’ai va programmer la puce atmega dans deux différents IDEs plus tard.
En revanche, si vous avez pour programmer un cœur AVR avec Winavr ou ce autre C basé IDE, alors vous devez connaître les modules du microcontrôleur de bonne architecture, matériel, et alors seulement vous pouvez le programmer. Mais pourquoi on irait dans une telle coplexity??? Il s’agit d’une question de millions de dollars...
Avez-vous déjà senti, que vous utilisez seulement des autres écrits/fonctions de code et vous n’arrivez pas à le modifier selon vos besoins ou vous n’arrivez pas à voir comment le programme total fonctionne en arrière-plan, ou avez-vous déjà senti le besoin de l’exécution de code ligne par ligne???
Si vous jamais senti une de celles mentionnées ci-dessus, alors que son temps pour vous d’écrire la base ' C'code t’AVR.
Aussi si vous voulez libérer la puissance de la programmation bas niveau noyau AVR avec votre propre bibliothèque/code écrit et veulent modifier les codes selon vos besoins et parallèlement une meilleure compréhension de votre code entier... puis vous devez jouer avec la programmation de base AVR.
Espérons que j’ai effacé vos doutes sur les trucs Arduino et AVR. Maintenant le temps pour un petit break avant d’entrer dans la section suivante...