Comment faire une action à intervalle régulier à une fréquence précise ?

NIVEAU 3

Objectifs

  • Utiliser un oscillateur externe combiné à une interruption du microcontroleur

Pré-requis

Interruptions à intervalle régulier

En combinant les interruptions externes (tutoriel Faire une action instantanément lors d’un évènement externe) et la génération d’un signal d’horloge à fréquence précise (tutoriel Générer un signal d’horloge sans GBF), il est alors possible de générer une action (ou un ensemble d’actions) à intervalle précis en fréquence.

Génération du signal d’horloge

Selon les fréquences souhaitées, on pourra utiliser :

  • un composant astable, type 555, pour des fréquences faibles (quelques kHz)
  • un quartz, pour des fréquences plus élevées (quelques MHz)

Interruptions

Pour pouvoir gérer ensuite les actions à réaliser, on peut reprendre une partie du code proposé pour la gestion des interruptions.

On pourra par exemple utilisé le code suivant :

#include "mbed.h"
 
InterruptIn mybutton(D4);          // Déclaration de l'entrée de l'événement externe
DigitalOut myled(LED1);            // Déclaration de la sortie numérique
void pressed(void);                // Déclaration de la fonction d'interruption 1

 
void pressed(){                    // fonction d'interruption
        // ACTION A FAIRE A INTERVALLE REGULIER           
}
 
int main(){
    mybutton.rise(&pressed);      
    while(1) {
        myled=!myled;
        wait_ms(200);
    }
}

La sortie de l’oscillateur précédent sera alors connecté sur l’entrée D4 de la carte Nucléo. Il ne faudra pas oublier également de connecter la masse entre les deux montages…

MInE Prototyper Prototyper avec Nucleo et MBED

Nucléo – Faire une action à intervalle régulier à une fréquence précise / 3