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