ME 507 Romi++
Cylindrical Differential Drive Robot created for ME 507 at Cal Poly in Spring 2025
Loading...
Searching...
No Matches
encoder.h
Go to the documentation of this file.
1/*
2 * encoder.h
3 *
4 * Created on: May 27, 2025
5 * Author: jacka
6 */
7
8#ifndef INC_ENCODER_H_
9#define INC_ENCODER_H_
10
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22#include "time_utils.h"
23#include <stm32f4xx_hal.h>
24
31typedef struct {
32 TIM_HandleTypeDef *htim;
33 int32_t last_count;
34 int32_t position;
35 uint32_t last_time_us;
36 int32_t delta;
37 float speed_cps;
38} encoder_t;
39
45void encoder_init(encoder_t *encoder, TIM_HandleTypeDef *htim);
46
51void encoder_update(encoder_t *encoder);
52
58int32_t encoder_getposition(encoder_t *encoder);
59
65int32_t encoder_getdelta(encoder_t *encoder);
66
72float encoder_getspeed(encoder_t *encoder);
73
78void encoder_reset(encoder_t *encoder);
79
80#ifdef __cplusplus
81}
82#endif
83
84#endif /* INC_ENCODER_H_ */
void encoder_update(encoder_t *encoder)
Updates the encoder's internal position, delta, and speed.
Definition encoder.c:32
void encoder_init(encoder_t *encoder, TIM_HandleTypeDef *htim)
Initializes an encoder structure with a given timer.
Definition encoder.c:15
int32_t encoder_getposition(encoder_t *encoder)
Returns the current position (accumulated counts) of the encoder.
Definition encoder.c:58
int32_t encoder_getdelta(encoder_t *encoder)
Returns the most recent change in encoder count.
Definition encoder.c:67
float encoder_getspeed(encoder_t *encoder)
Returns the current speed in counts per second.
Definition encoder.c:76
void encoder_reset(encoder_t *encoder)
Resets encoder position and delta tracking.
Definition encoder.c:84
Structure for tracking encoder state and motion data.
Definition encoder.h:31
int32_t last_count
Definition encoder.h:33
int32_t delta
Definition encoder.h:36
float speed_cps
Definition encoder.h:37
uint32_t last_time_us
Definition encoder.h:35
int32_t position
Definition encoder.h:34
TIM_HandleTypeDef * htim
Definition encoder.h:32
Utility functions for microsecond-level timing.