Découvrez notre Chaîne YouTube "Ingénierie et Projets"
Découvrez notre Chaîne Secondaire "Information Neuronale et l'Ingénierie du Cerveau"

Objectifs

  1. Savoir utiliser générer un pulse d’une seconde
  2. Savoir générer un signal carré d’une fréquence spécifique
  3. Savoir utiliser l’interruption INT0 & PWM

Programme Arduino

#define PWMout    2         // Signal PWM  - [Mega: 4-13:980]

#define SecPulse  3         // Signal carré

#define ValSec    980      //= Fréquence = Nb cycles /sec 490




bool State=false;

unsigned long Count1Sec=0;

unsigned long CountEvent=0;







void setup()

{

  // Câblage du pin et configuration en entrée: INT0 => PD0 (pin 38 de la carte)

  DDRD =0x00; // Port D en entrée




  // Activation de l'interruption globale (registre SREG) 

  SREG|=0x80;

      //SREG|=0x80  // Activation

      //SREG&=0x7f  // Désactivation 

      //Ou bien

      //sei(): Set interrupt - Activation

      //cli(): clear interrup - Désactivation (masquer)  




  // Validation de l'interruption INT0 (Registre EIMSK)

  EIMSK|=0x01; // INT0

      //EIMSK|=0x02; // INT1

      //EIMSK|=0x04; // INT2

      //...

     

  // Choix du mode de détection: Front montant dans INT0

  EICRA|=0x01;

      //EICRA|=0x00;  //niveau bas '0' dans INTn

      //EICRA|=0x01;  //front montant ou descendant dans INTn

      //EICRA|=0x02;  //Front descendant dans INTn

      //EICRA|=0x03;  //Front montant dans INTn




  // Initialisation de la sortie PWM (signal carré, rapport cyclique 50%) 

  analogWrite(PWMout, 128);  




  // Config PIN 1 sec (pulse 1 seconde, fréquence 1/2 Hz)

  pinMode(SecPulse, OUTPUT);

}




void loop()

{

  // Au chaumage 

}

Routine de l’interruption

ISR(_VECTOR(1)){ // Ou _VECTOR(2)

  CountEvent+=1;

  CountEvent=CountEvent%ValSec; 

  if (!CountEvent)

  {

    State=not(State);

    digitalWrite(SecPulse,State);

  }

}
Click to rate this post!
[Total: 1 Average: 5]

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Anti-Robot *

You have successfully subscribed to the newsletter

There was an error while trying to send your request. Please try again.

FPGA | Arduino | Matlab | Cours will use the information you provide on this form to be in touch with you and to provide updates and marketing.