Atmel démarrage 3: Binky One – PORT, broches, DDR et del (9 / 12 étapes)

Étape 9: Blinky One – sens des déclarations codage

Les références fournissent des très bons livres et autres articles pour apprendre le C et C++ pour les Microcontrôleurs Atmel [5-8, 11]. Les éléments ci-dessous suivent essentiellement l’ordre dans le programme un Binky.

  1. #include : une directive du compilateur d’inclure un fichier d’en-tête dans le code avec des fonctions spécifiques et méthodes. La plupart des fichiers d’en-tête peut être consultées en plaçant le curseur de la souris sur le nom et clic droit et en sélectionnant « aller à la mise en œuvre ».

  • avr/IO.h : se compose d’autres fichiers d’en-tête (par exemple, les extensions de .h) pour le MCU spécifique [17]. Les fichiers d’en-tête incluent des mots clés tels que DDRB, PORTB, PB0, TIMSK et TCNT0. Apparemment io.h ne peuvent pas être lus avec le « aller ├á la mise en œuvre » décrit au point 1 ci-dessus.

  • util/Delay.h : méthodes pour retarder l’exécution du programme. Comprend un millisecondes de retard et un autre pour les microsecondes.

  • #define x directive du compilateur y: A de substituer le texte y chaque fois que le texte x est rencontre dans le programme. Souvent, les définitions du compilateur sont utilisées afin que le programme peut être modifié facilement sans fouiller dans l’ensemble du code pour tous les endroits modifier un paramètre quand nécessaire.

  • #define F_CPU 8000000UL : le compilateur va se substituer 8000000UL pour le texte « F_CPU » chaque fois que rencontrées dans le code. Remarque : le fichier d’en-tête delay.h nécessite la F_CPU être défini avant d’importer les delay.h car le fichier delay.h utilise le F_CPU. Le 8000000UL se réfère à la vitesse d’horloge. Dans notre cas, nous utilisons 8MHz sélectionné par les fusibles. Toutefois, F_CPU de 16000000 serait correct pour un cristal de 16MHz par exemple. L’AMT à la fin veut dire entier « unsigned long ».

  • int main (void): principal est une fonction qui doivent intégrer tous les programmes C et C++. L’exécution du programme commence à la fonction « main ». Le mot clé « int » indique que « principale » peut retourner un entier (16bits). Fonctions comportent des arguments dans les parenthèses (). Dans ce cas, « void » indique la fonction n’utilise pas un paramètre. Si nous avions le mot-clé vide qui précède le nom de fonction comme par exemple dans « void main (void) », puis la fonction retournait pas une valeur - ce serait une sous-routine.

  • Accolades {}: La gamme de code définissant la fonction 'main' est placée entre {}. En fait, les structures de la plupart de codage C et C++ (par exemple, le « switch » et « if ») utilisation d’accolades {} pour indiquer leur portée. Assurez-vous d’inclure ces !

  • Des points-virgules : Codage des déclarations sont terminent par le «; ». L’instruction peut exécuter plusieurs lignes de texte au besoin.

  • _delay_ms(x) : une méthode (par exemple, la fonction) définie dans delay.h qui retarde l’exécution du programme par x millisecondes. Dans notre cas, x = 1000 et donc le retard est 1000mS qui est 1 seconde. Avis de tha l’habillage entre parenthèses le paramètre x.

  • DDRB = 0b00000001 : Registre de Direction données pour B0 B. Port sera une sortie et le reste sera entrées. Pour le ATTiny 2313A, la B0 est Pin12.

  • PORTB = 0 b 1: ensembles B0 1 qui se traduit par CVC à l’intégrité physique pin (12) correspondant à B0. Un moyen plus simple et privilégié pour écrire cette instruction est PORTB = 1 ; ou PORTB = 0 x 01 ;

  • PORTB = 0 X 00 ; Affecte à B0 0 qui se traduit par 0v à l’axe physique (12) correspondant à B0. Cela pourrait aussi être écrite comme PORTB = 0 ;

  • while(x) : le MCU exécutera les instructions entre les deux qui s’ensuivit correspondant d’accolades {} pour autant que l’État x est vrai. Le x pourrait mettre en doute si deux variables a et b sont égales comme un == b (Notez le double égal à). Dans notre cas, nous voulons que la LED clignote en permanence donc les déclarations entre les accolades doivent s’exécuter en continu. Nous pourrions écrire ' while(true == true)' où '==' est l’opérateur de C/C++ vérifiant l’égalité logique (un seul moyen de '=' pour assigner quelque chose à une variable comme dans z = 3). L’instruction « while(true==true) » causerait la boucle infinie que nous voulons depuis le « vrai » n’est toujours vrai. Dans notre cas, 1 est considérée comme un « vrai ». Si « while(1) » provoquera la boucle infinie car c’est le raccourci pour l’écriture de « while » qui est un raccourci pour l’écriture de « while(true=true) ».

  • Articles Liés

    Atmel démarrage 5: Ligne de vie

    Atmel démarrage 5: Ligne de vie

    M. A. Parker c2015La longe est un circuit simple basé sur l'unité de microcontrôleur Atmel ATTiny2313A (MCU) qui fonctionne comme une source d'horloge de substitut pour une cible MCU rendus inopérante par des fusibles à tort de réglage de l'horloge.
    Atmel démarrage 4: Deux Blinky – commutateurs, résistances de pull-up et Bit Ops

    Atmel démarrage 4: Deux Blinky – commutateurs, résistances de pull-up et Bit Ops

    Figure 1: Interrupteurs exemple utilisable par des résistants à la traction selon les MCU, recto : Photo-résistance, transistor photo, bouton poussoir ; Arrière : touches des exemple.M. A. Parker c2015Magnet lumineux deux montre comment le MCU peut f
    Atmel démarrage 2: Circuits de microcontrôleur et les fusibles

    Atmel démarrage 2: Circuits de microcontrôleur et les fusibles

    M. A. Parker c2015Circuits et fusibles construit un circuit simple mais important sur la maquette de l'expérimentateur qui sera utilisé comme plateforme de base pour de nombreux projets de microcontrôleur et pour définir les paramètres de microcontrô
    Atmel démarrage 1: Programmeur et Studio Atmel

    Atmel démarrage 1: Programmeur et Studio Atmel

    M. A. Parker c2015Installation Atmel Studio (AS) et un programmeur incarnent les prémices [0] sur le chemin d'accès à l'aide d'une unité individuelle de Microcontrôleur AVR Atmel MCU [1] par opposition à la MCU-a-bord comme Arduino [2]. Ici commence
    LinkIt ONE – Port I2C MCP23017 Expander

    LinkIt ONE – Port I2C MCP23017 Expander

    La puce MCP23017 est une prothèse d'expansion d'entrée et de sortie, qui utilise le protocole de communication I2C. Vous pouvez raccorder à votre LinkIt One à l'aide de deux broches seulement (SDA, PPC) et obtenir les 16 ports d'e/s numériques. En ou
    Alarme de porte de WiFi de 4 $ à l’aide d’un ESP8266 #IoT

    Alarme de porte de WiFi de 4 $ à l’aide d’un ESP8266 #IoT

    Dans ce projet IoT, je vais vous montrer comment faire une alarme de porte de WiFi qui vous alerte où que vous soyez !J'ai eu son idée de la conception d'une alarme de porte wifi activé après qu'une amie a été cambriolée.Voici un bref aperçu de comme
    Facile Atmel Xmega Sine Wave / générateur de signaux

    Facile Atmel Xmega Sine Wave / générateur de signaux

    c'est comment vous pouvez utiliser un des panneaux d'évaluation du BostonAndroid.com Xmega (20$) pour créer un générateur de forme d'onde sinusoïdale réglable simple avec une résolution de 12 bits et capable de produire des fréquences de 125Hz - 20KH
    Commande d’appareils de haute tension avec LinkIt One

    Commande d’appareils de haute tension avec LinkIt One

    Dans les projets de quelques dernières j'ai utilisé le jury un LinkIt et le jury un LinkIt est idéal pour les applications de l'ITO. Mais le LinkIt One n'est pas capable de gérer la haute tension et des dispositifs actuels, comme par exemple votre sy
    LinkIt ONE + récepteur IR

    LinkIt ONE + récepteur IR

    Cette instructable vous faire défiler comment obtenir un récepteur infrarouge travaillant avec le ONE LinkIt et imprimer à l'entrée des récepteurs.Commençons !Étape 1: matériaux LinkIt un micro contrôleurCarte de prototypageFils de maquetteRécepteur
    LinkIt ONE Touch Sensor

    LinkIt ONE Touch Sensor

    Dans ce Instructable, je vais vous montrer comment câbler et utiliser un module de capteur tactile. Après avoir appris à utiliser ce module vous pouvez l'utiliser pour construire un projet plus gros comme une lumière sensible tactile. Commençons !Éta
    DDR Tapis Breakout Port

    DDR Tapis Breakout Port

    Il y a quelque temps, je suis entré en possession d'un tapis de DDR pour la XBOX originale (un ami n'a pas plus besoin ou quelque chose, ne me souviens plus). Je n'ai pas une XBOX, mais je l'ai gardé autour de l'idée que je pourrais convertir à utili
    Vérifier si le Serial Monitor fonctionne avec Mediatek LinkIt One

    Vérifier si le Serial Monitor fonctionne avec Mediatek LinkIt One

    Quand j'ai commencé à travailler avec le Conseil un LinkIt, j'ai été incapable de lire quoi que ce soit dans le moniteur de la série, mais je pourrais le télécharger code. J'ai finalement réduit à un problème de logiciel, mais voici ce que j'ai trouv
    Charger vos appareils Android à pleine capacité en utilisant le chargeur d’USB 5 ports Anker® 25W

    Charger vos appareils Android à pleine capacité en utilisant le chargeur d’USB 5 ports Anker® 25W

    The Anker® 25W 5-Port chargeur est un chargeur incroyable ! Malheureusement j'ai il a certains ports spécifiques aux appareils iOS. Depuis que je possède uniquement des appareils Android je pourrais seulement inculper à pleine capacité sur 2 des 5 po
    Construire une haute Performance FPV Camera Quadcopter

    Construire une haute Performance FPV Camera Quadcopter

    Cet Instructable va vous montrer, en détail, comment construire un quadcopter de haute qualité pour vol FPV et enregistrer les photos/vidéos aériennes.Nous savons tous les êtres humains ne peuvent pas voler. Nos os sont trop denses et battement de no