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

Driver encodeurs rotatifs (TIM + quadrature soft) pour Brick. Plus de détails...

#include "ch.h"
#include "hal.h"
#include "board.h"
#include "drv_encoders.h"
#include <math.h>

Structures de données

struct  encoder_state_t
 
struct  enc_accel_state_t
 

Macros

#define ENC_TICKS_PER_STEP   8
 

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 encoder_reset (encoder_id_t id)
 
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

Driver encodeurs rotatifs (TIM + quadrature soft) pour Brick.

Gère jusqu’à 4 encodeurs rotatifs :

  • ENC1 → TIM8 (hardware quadrature)
  • ENC2 → TIM4
  • ENC3 → quadrature logicielle sur GPIO
  • ENC4 → TIM2

Fournit :

  • Lecture brute et delta normalisé
  • Accélération dynamique (EMA + flick)

Documentation des macros

◆ ENC_TICKS_PER_STEP

#define ENC_TICKS_PER_STEP   8

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_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).

◆ encoder_reset()

void encoder_reset ( encoder_id_t  id)