Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
Référence du fichier drv_encoders.h

Interface du driver des encodeurs rotatifs (TIM + soft quadrature). Plus de détails...

#include "ch.h"
#include "brick_config.h"
#include "hal.h"

Aller au code source de ce fichier.

Énumérations

enum  encoder_id_t { ENC1 = 0 , ENC2 , ENC3 , ENC4 }
 Identifiants des 4 encodeurs physiques. Plus de détails...
 

Fonctions

void drv_encoders_start (void)
 Initialise le sous-système des encodeurs.
 
int16_t drv_encoder_get (encoder_id_t id)
 Retourne la valeur brute du compteur d’un encodeur.
 
void drv_encoder_reset (encoder_id_t id)
 Réinitialise la position et l’état d’un encodeur.
 
int16_t drv_encoder_get_delta (encoder_id_t id)
 Calcule l’incrément depuis le dernier appel (lecture brute).
 
int16_t drv_encoder_get_delta_accel (encoder_id_t id)
 Calcule l’incrément avec accélération dynamique (EMA + flick).
 

Description détaillée

Interface du driver des encodeurs rotatifs (TIM + soft quadrature).

Fournit une API unifiée pour la lecture des 4 encodeurs :

  • ENC1 → TIM8 matériel
  • ENC2 → TIM4
  • ENC3 → Décodage quadrature logiciel (interruptions GPIO)
  • ENC4 → TIM2

Fonctions principales :

  • Lecture brute et remise à zéro
  • Calcul d’incrément (delta) depuis le dernier appel
  • Mode accéléré avec filtrage exponentiel (EMA) et détection de "flick"
Note
La configuration du matériel (TIM, GPIO, callbacks) est faite par drv_encoders_start().

Documentation du type de l'énumération

◆ encoder_id_t

Identifiants des 4 encodeurs physiques.

Valeurs énumérées
ENC1 

Encodeur principal (TIM8)

ENC2 

Encodeur secondaire (TIM4)

ENC3 

Encodeur logiciel GPIO

ENC4 

Encodeur additionnel (TIM2)

Documentation des fonctions

◆ drv_encoder_get()

int16_t drv_encoder_get ( encoder_id_t  id)

Retourne la valeur brute du compteur d’un encodeur.

Paramètres
idIdentifiant de l’encodeur.
Renvoie
Valeur signée du compteur.

◆ drv_encoder_get_delta()

int16_t drv_encoder_get_delta ( encoder_id_t  id)

Calcule l’incrément depuis le dernier appel (lecture brute).

Paramètres
idIdentifiant de l’encodeur.
Renvoie
Incrément normalisé en “pas utilisateur”.

◆ drv_encoder_get_delta_accel()

int16_t drv_encoder_get_delta_accel ( encoder_id_t  id)

Calcule l’incrément avec accélération dynamique (EMA + flick).

Utilise un filtre exponentiel sur la vitesse et un système d’impulsion temporaire lors des mouvements rapides pour améliorer la réactivité.

Paramètres
idIdentifiant de l’encodeur.
Renvoie
Incrément accéléré normalisé en “pas utilisateur”.

◆ drv_encoder_reset()

void drv_encoder_reset ( encoder_id_t  id)

Réinitialise la position et l’état d’un encodeur.

Paramètres
idIdentifiant de l’encodeur à réinitialiser.

◆ drv_encoders_start()

void drv_encoders_start ( void  )

Initialise le sous-système des encodeurs.

Configure les timers matériels et les GPIO nécessaires, ainsi que les interruptions pour l’encodeur logiciel (ENC3).