start:arduino:esp32:les_timers
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
start:arduino:esp32:les_timers [2022/04/24 08:54] – [Main loop] gerardadmin | start:arduino:esp32:les_timers [2023/01/27 16:08] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
======== Les Timers ======== | ======== Les Timers ======== | ||
- | Timers sur ESP32 | + | === Timers === |
+ | |||
+ | Les SoC ESP32 contiennent de 2 à 4 minuteries matérielles. Ce sont tous des temporisateurs génériques 64 bits (54 bits pour ESP32-C3) basés sur des pré-scalers 16 bits et des compteurs croissants/ | ||
+ | |||
+ | ^SoC ESP32^Nombre de minuteries^ | ||
+ | |ESP32|4| | ||
+ | |ESP32-S2|4| | ||
+ | |ESP32-C3|2| | ||
+ | |ESP32-S3|4| | ||
+ | |||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | ===Timers sur ESP32=== | ||
Fondamentalement, | Fondamentalement, | ||
Ligne 83: | Ligne 98: | ||
{{ : | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ===== ESP32TimerInterrupt Library ====== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | ==== Pourquoi avons-nous besoin de cette bibliothèque ESP32TimerInterrupt==== | ||
+ | |||
+ | |||
+ | === Caractéristiques=== | ||
+ | |||
+ | Cette bibliothèque vous permet d' | ||
+ | |||
+ | Comme les temporisateurs matériels sont des atouts rares et très précieux de n' | ||
+ | |||
+ | Désormais, avec ces nouveaux temporisateurs basés sur 16 ISR , l' | ||
+ | |||
+ | La caractéristique la plus importante est qu'il s'agit de minuteries basées sur ISR. Par conséquent, | ||
+ | |||
+ | L' exemple ISR_Timer_Complex démontrera la précision presque parfaite par rapport aux temporisateurs logiciels en imprimant les millisecondes écoulées réelles de chaque type de temporisateurs. | ||
+ | |||
+ | Étant des minuteries basées sur ISR, leurs exécutions ne sont pas bloquées par des fonctions/ | ||
+ | |||
+ | Cette fonctionnalité importante non bloquée est absolument nécessaire pour les tâches critiques. | ||
+ | |||
+ | Vous verrez que le logiciel blynkTimer est bloqué pendant que le système se connecte au WiFi / Internet / Blynk, ainsi qu'en bloquant la tâche dans loop(), en utilisant la fonction delay() comme exemple. Le temps écoulé est alors très imprécis | ||
+ | Pourquoi l' | ||
+ | |||
+ | Imaginez que vous ayez un système avec une fonction critique , mesurant le niveau d'eau et contrôlant la pompe de puisard ou faisant quelque chose de beaucoup plus important. Vous utilisez normalement une minuterie logicielle pour interroger, ou même placer la fonction dans loop(). Mais que se passe-t-il si une autre fonction bloque la boucle() ou la configuration(). | ||
+ | |||
+ | Ainsi, votre fonction pourrait ne pas être exécutée et le résultat serait désastreux. | ||
+ | |||
+ | Vous préféreriez que votre fonction soit appelée, quoi qu'il arrive avec d' | ||
+ | |||
+ | Le bon choix consiste à utiliser une minuterie matérielle avec interruption pour appeler votre fonction. | ||
+ | |||
+ | Ces temporisateurs matériels, utilisant l' | ||
+ | |||
+ | Les fonctions utilisant des minuteries logicielles normales, reposant sur loop() et appelant millis(), ne fonctionneront pas si loop() ou setup() est bloqué par certaines opérations. Par exemple, certaines fonctions se bloquent lors de la connexion au WiFi ou à certains services. | ||
+ | |||
+ | Le hic, c'est que votre fonction fait maintenant partie d'un ISR (Interrupt Service Routine), et doit être courte et rapide , et suivre certaines règles. Plus à lire sur : | ||
+ | |||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | ===== Minuterie à usage général (GPTimer) ===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ | ===== Minuterie haute résolution ===== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ |
/home/chanteri/www/fablab37110/data/attic/start/arduino/esp32/les_timers.1650783293.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)