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
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.
numéro : correspond à l'interruptionISR : fonction d'interruption exécutée (fonction sans arguments et sans retour) void fonction() { ... } Mode : évènement de déclenchement de l'interruptionattachInterrupt(numéro, ISR, mode);
Détacher l'interruption :
detachInterrupt(numero);
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)