Programmation arduino

Introduction

Cet article va vous permettre de réaliser des projets en utilisant directement le micro-contrôleur de l'arduino, afin de réduire l'encombrement et les coûts.

L'ATMEGA 328, est un micro-contrôleur 8 bit d'ATMEL cadencé à 20 MHz, avec 32 kB de mémoire flash, 2 kB de SRAM et 1 kB de EEPROM. Dans un boîtier 28-in PDIP

Les interruptions



Principe

L'arduino exécute le programme en séquence, instructions par instructions en boucle. Une interruption, consiste à interrompre momentanément le programme, pour exécuter une tâche précise, puis reprendre le programme principal ou il s'était arrêté.

Cette tâche s'appelle la routine d’interruption (ISR). Il faut que ces ISR aient le temps d'exécution le plus court possible.

Ces ISR sont déclenchées par des vecteurs d'interruption. Sur l'ATMega 328, il y en a 26 dont 5 interruptions externes, liées au changement de la tension présente sur une broche numérique.

Une ISR n'est pas interrompue par une autre ISR. Lorsque plusieurs ISR surviennent en même temps, les ISR sont exécutées dans l'ordre de priorité, donné dans le tableau.




interruptions

Interruptions externes INT0 et INT1

  • numéro : correspond à l'interruption
    • 0 et 1 sur un UNO qui correspondent aux broches 2 et 3
    • 0 à 5 sur un Mega qui correspondent aux broches 21, 20, 19, 18, 2 et 3
  • ISR : fonction d'interruption exécutée (fonction sans arguments et sans retour) void fonction() { ... }
  • Mode : évènement de déclenchement de l'interruption
    • LOW : fonction d'interruption exécutée en boucle tant que la broche est à l'état bas
    • CHANGE : interruption exécutée dés que la broche change d'état (bas>haut, haut>bas)
    • RISING : interruption exécutée dés que la broche change de bas à haut
    • FALLING : interruption exécutée dés que la broche change de haut à bas

    attachInterrupt(numéro, ISR, mode);
    Détacher l'interruption :
    detachInterrupt(numero);

    Interruptions externes PCINT0, PCINT1 et PCINT2

    La bibliothèque EnableInterrupt s'utilise de la même manière que la fonction attachInterrupt mais celle-ci permet d'utiliser des fonctions d'interruptions sur tous les ports numériques de l'arduino (sauf 0 et 1). Voir la documentation : Github

    #include "EnableInterrupt.h"
    void userFunc() {}
    enableInterrupt(pin,userFunc,mode)

    Sources et liens pour en savoir plus :

    About

    Le blog d'un passionné d'info et d'électronique. A propos de moi

    Newsletter

    Si vous souhaitez être avertis des nouveaux articles sur le site

    Recent NEWS

    Sortie du Raspberry Pi 4
    Une nouvelle version gonflée en performances

    Plusieurs modules avec même adresse I2C sur Raspberry Pi
    Connecter plusieurs modules ayant une même adresse I2C

    L'effet conducteur des résidus de flux de soudure
    Les effets indésirables des résidus flux sur les circuits imprimés

    Contact

    SHFNET
    Contact
    shfnet.fr

    Stay Connected

    © SHFNET, 2019
    Logo SHFNET