tutrcos
読み取り中…
検索中…
一致する文字列を見つけられません
incremental_encoder.hpp
[詳解]
1#pragma once
2
3#include <cstdint>
4
6#include "tutrcos/utility.hpp"
7
8#include "encoder_base.hpp"
9
10namespace tutrcos {
11namespace module {
12
14public:
16 : EncoderBase{ppr * 4}, tim_{tim} {
17 TUTRCOS_VERIFY(tim_.start_encoder(TIM_CHANNEL_ALL));
18 }
19
20 ~IncrementalEncoder() { TUTRCOS_VERIFY(tim_.stop_encoder(TIM_CHANNEL_ALL)); }
21
22 void update() {
23 int16_t delta = tim_.get_counter();
24 tim_.set_counter(0);
25 count_ += delta;
26 set_count(count_);
27 }
28
29private:
30 peripheral::TIM &tim_;
31 int64_t count_ = 0;
32};
33
34} // namespace module
35} // namespace tutrcos
Definition encoder_base.hpp:10
void set_count(int64_t count)
Definition encoder_base.hpp:28
Definition incremental_encoder.hpp:13
void update()
Definition incremental_encoder.hpp:22
IncrementalEncoder(peripheral::TIM &tim, int16_t ppr)
Definition incremental_encoder.hpp:15
~IncrementalEncoder()
Definition incremental_encoder.hpp:20
Definition tim.hpp:10
uint32_t get_counter()
Definition tim.hpp:34
bool stop_encoder(uint32_t channel)
Definition tim.hpp:30
bool start_encoder(uint32_t channel)
Definition tim.hpp:26
void set_counter(uint32_t count)
Definition tim.hpp:36
Definition kernel.hpp:7
#define TUTRCOS_VERIFY(expr)
Definition utility.hpp:16