« Espressif ESP32-S3 DevKitC-1 » : différence entre les versions
Aller à la navigation
Aller à la recherche
Capteur DS18B20 | Capteur SEN0562 | Capteur SEN0381 | Mémoire ADA563X | Chargeur/Alim Bat. Lipo
Microcontrôleur Espressif ESP32-S3 DevKitC-1
(→Timers) |
|||
| Ligne 66 : | Ligne 66 : | ||
=== Timer matériel === | === Timer matériel === | ||
* Cet exemple illustre l'incrémentation à fréquence régulière ''(toutes les 1 secondes)'' de la variable '''watchdog_count''' à l'aide du timer matériel du microcontrôleur. | |||
hw_timer_t *timer = NULL; | |||
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED; | |||
# Fonction d'interruption | |||
void IRAM_ATTR timer_isr(){ | |||
portENTER_CRITICAL_ISR(&timerMux); # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions | |||
watchdog_count++; # Variable incrémentale | |||
portEXIT_CRITICAL_ISR(&timerMux); # Libère le verrou | |||
} | |||
# Initialisation du timer dans la fonction setup() | |||
setup () { | |||
timer = timerBegin(1000000); # Limite du timer à 1 seconde | |||
timerAttachInterrupt(timer, &timer_isr); # Exécution de la fonction timer_isr à l'expiration du timer | |||
timerAlarm(timer, 1000000, true, 0); # Répétition du timer | |||
} | |||
loop() { | |||
} | |||
=== Timer logiciel FreeRTOS === | === Timer logiciel FreeRTOS === | ||
| Ligne 87 : | Ligne 110 : | ||
timerSemaphore = xSemaphoreCreateBinary(); # Création du sémaphore | timerSemaphore = xSemaphoreCreateBinary(); # Création du sémaphore | ||
timer = timerBegin(1000000); # Limite du timer à 1 seconde | timer = timerBegin(1000000); # Limite du timer à 1 seconde | ||
timerAttachInterrupt(timer, &onTimer); # | timerAttachInterrupt(timer, &onTimer); # Exécution de la fonction onTimer à l'expiration du timer | ||
timerAlarm(timer, 1000000, true, 0); # Répétition du timer | timerAlarm(timer, 1000000, true, 0); # Répétition du timer | ||
} | } | ||
Version du 20 octobre 2026 à 06:11
— Electronique —
Présentation
Schéma de la carte
Broches spécifiques
| Broches | Etat | Fonctions |
|---|---|---|
| GPIO0/36 | flottant | Bouton BOOT. |
| GPIO3/13 | flottant | Contrôle du BOOT mode JTAG |
| GPIO9/15 GPIO10/16 GPIO11/17 GPIO12/18 GPIO13/19 GPIO14/20 | flottant | Interface SPI et mémoire PSRAM. |
| GPIO35/32 GPIO36/33 GPIO37/34 GPIO38/35 | flottant | Interface JTAG (MTCK, MTDO, MTDI, MTMS) |
| GPIO40/29 GPIO41/30 | flottant | Interface JTAG |
| GPIO26 GPIO27 GPIO28 GPIO29 GPIO30 GPIO31 GPIO32 | flottant | Interfaces SPI Flash et PSRAM (SPICS1, SPIHD, SPIWP, SPICS0, SPICLK, SPIQ, SPID) |
| GPIO43 GPIO44 | flottant | Interface de debug UART (UART0 TX, UART0 RX) |
| Broches | Etat | Fonctions |
|---|---|---|
| GPIO19/42 GPIO20/43 | - | USB D- et USB D+ |
| GPIO38/32 | - | LED RGB |
| GPIO43/24 GPIO44/25 | - | Interface UART0 (communication série via USB) |
Configuration de l'IDE
IDE Arduino
- Rediriger la sortie Serial sur le port COM :
USB CDC On Boot : Enable
- Paramétrage de la taille de la mémoire flash :
Flash Size : 8M
- Paramétrage de la taille de la mémoire RAM :
PSRAM : OPI PSRAM
- Paramétrage de la partition :
Partition Scheme : Huge APP (3MB No OTA/1MB SPIFFS)
Requêtes d'interruption
Timers
Timer matériel
- Cet exemple illustre l'incrémentation à fréquence régulière (toutes les 1 secondes) de la variable watchdog_count à l'aide du timer matériel du microcontrôleur.
hw_timer_t *timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
# Fonction d'interruption
void IRAM_ATTR timer_isr(){
portENTER_CRITICAL_ISR(&timerMux); # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions
watchdog_count++; # Variable incrémentale
portEXIT_CRITICAL_ISR(&timerMux); # Libère le verrou
}
# Initialisation du timer dans la fonction setup()
setup () {
timer = timerBegin(1000000); # Limite du timer à 1 seconde
timerAttachInterrupt(timer, &timer_isr); # Exécution de la fonction timer_isr à l'expiration du timer
timerAlarm(timer, 1000000, true, 0); # Répétition du timer
}
loop() {
}
Timer logiciel FreeRTOS
- Cet exemple illustre l'incrémentation à fréquence régulière (toutes les 1 secondes) de la variable watchdog_count à l'aide du timer logiciel du microcontrôleur.
hw_timer_t * timer = NULL;
volatile SemaphoreHandle_t timerSemaphore;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
# Fonction d'interruption
void ARDUINO_ISR_ATTR onTimer() {
portENTER_CRITICAL_ISR(&timerMux); # Verrouille l'accès à la variable pour l'ISR et inhibe les requêtes interruptions
watchdog_count++; # Variable incrémentale
portEXIT_CRITICAL_ISR(&timerMux); # Libère le verrou
xSemaphoreGiveFromISR(timerSemaphore, NULL); # Libération du sémaphore
}
# Initialisation du timer dans la fonction setup()
setup () {
timerSemaphore = xSemaphoreCreateBinary(); # Création du sémaphore
timer = timerBegin(1000000); # Limite du timer à 1 seconde
timerAttachInterrupt(timer, &onTimer); # Exécution de la fonction onTimer à l'expiration du timer
timerAlarm(timer, 1000000, true, 0); # Répétition du timer
}
loop() {
}
