Répondre à : création d'une interruption par arduino mega

Accueil/Questions/création d'une interruption par arduino mega/Répondre à : création d'une interruption par arduino mega
Répondre à : création d'une interruption par arduino mega 2015-05-21T00:47:39+00:00

Accueil Forums Questions création d'une interruption par arduino mega Répondre à : création d'une interruption par arduino mega

Zardoua93
Participant
Nombre d'articles : 3

salut Arnaud et declan, je vous remercie d’abord pour vos réponses, pour résoudre mon problème, il me faudra plusieurs fonction millis(); car j’ai plusieurs taches à réalisé. j’ai un servomoteur qui change de direction vers 4 postions différente quand un système est déclenché. le servo doit maintenir chaque position pendant 2 ou 3 seconde alors que pendant ce temps là, je doit saisir un code à l’aide d’un clavier matriciel pour désactiver le système, ce qui n’est pas possible à cause de delay. la solution est d’écrire un sous programme qui doit s’éxécuter d’une fréquence suffisante pour m’atteidre au moment d’appuie sur les touches: voilà la solution par le timer1:

#include <avr/io.h>
#include <avr/interrupt.h> // les bibliothèques du timer1

void setup()
{
// initialize Timer1
cli(); // disable global interrupts
TCCR1A = 0; // set entire TCCR1A register to 0
TCCR1B = 0;

// enable Timer1 overflow interrupt:
TIMSK1 = (1 << TOIE1);
// Set CS10 bit so timer runs at clock speed:
TCCR1B |= (1 << CS10);
// enable global interrupts:
sei();
}

ISR(TIMER1_OVF_vect)
{
EnterPin(); // voilà le sous programme qui s’éxécute toutes les 4,1ms 🙂
}

pour contoler la fréquence d’interruption, on agit sur les 3 bits (CS10, CS11 et CS12) du registre TCCR1B(timer counter controle register B);

pour en savoir plus sur les Timer visiter ce lien :
http://www.engblaze.com/microcontroller-tutorial-avr-and-arduino-timer-interrupts/

salut ! 🙂