semf
frequencyin.cpp
Go to the documentation of this file.
1
13
14namespace semf
15{
17: m_inputCapture(inputCapture)
18{
19 m_inputCapture.dataAvailable.connect(m_onDataAvailableSlot);
20}
21
23{
24 SEMF_INFO("start");
25 m_inputCapture.start();
26}
27
29{
30 SEMF_INFO("stop");
31 m_inputCapture.stop();
32}
33
35{
36 SEMF_INFO("reset");
37 m_lastPeriod = 0;
38}
39
41{
43 uint32_t lastPeriod = m_lastPeriod;
45 return lastPeriod;
46}
47
49{
50 unsigned int ticksPerSecond = m_inputCapture.ticksPerSecond();
51 if (ticksPerSecond == 0)
52 return 0;
53 else
54 return (periodTicks() * 1000) / ticksPerSecond;
55}
56
57uint32_t FrequencyIn::frequency() const
58{
59 uint32_t ticks = periodTicks();
60 if (ticks == 0)
61 return 0;
62 return (m_inputCapture.ticksPerSecond() / ticks);
63}
64
66{
68 uint32_t currentTicks = m_inputCapture.ticks();
69
70 if (m_lastTicks < currentTicks)
71 {
72 m_lastPeriod = currentTicks - m_lastTicks;
73 }
74 else
75 {
76 m_lastPeriod = (m_inputCapture.maxTicks() - m_lastTicks) + currentTicks;
77 }
78 m_lastTicks = currentTicks;
80 // call a signal
82}
83} /* namespace semf */
void start() override
Definition: frequencyin.cpp:22
void stop() override
Definition: frequencyin.cpp:28
uint32_t periodTicks() const override
Returns the measured ticks of a signal period (directly after capturing it and emitted dataAvailable ...
Definition: frequencyin.cpp:40
void reset() override
Definition: frequencyin.cpp:34
virtual void onDataAvailable()
Definition: frequencyin.cpp:65
FrequencyIn(InputCapture &inputCapture)
Constructor.
Definition: frequencyin.cpp:16
uint32_t periodInMs() const override
Returns the measured time in milliseconds of 2 successive captured signals.
Definition: frequencyin.cpp:48
uint32_t frequency() const override
Returns the measured frequency.
Definition: frequencyin.cpp:57
Class for utilizing the input capture from the uC.
Definition: inputcapture.h:24
virtual unsigned int maxTicks() const =0
Get the maximum number of ticks from the timer.
virtual void stop()=0
virtual unsigned int ticks()=0
Get the latest number of ticks (at the last change of the input).
virtual void start()=0
virtual unsigned int ticksPerSecond() const =0
Returns the the number of ticks per second (Hardware timer frequency).
void connect(SlotBase< Arguments... > &slot)
Connect a method to the signal.
Definition: signal.h:94
#define SEMF_INFO(...)
Definition: debug.h:41