Cleanup encoder code
This commit is contained in:
4
Firmware/.vscode/settings.json
vendored
4
Firmware/.vscode/settings.json
vendored
@@ -8,7 +8,9 @@
|
||||
"string": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"system_error": "cpp"
|
||||
"system_error": "cpp",
|
||||
"numeric": "cpp",
|
||||
"ostream": "cpp"
|
||||
},
|
||||
"C_Cpp.errorSquiggles": "disabled"
|
||||
}
|
||||
@@ -3,12 +3,22 @@
|
||||
#include "Stm32F4_Encoder.h"
|
||||
#include <CircularBuffer.h>
|
||||
#define RINGBUFFERLEN 101
|
||||
// EncoderInit.SetCount(Tim3, 0);
|
||||
// EncoderInit.SetCount(Tim4, 0);
|
||||
// EncoderInit.SetCount(Tim8, 0);
|
||||
|
||||
class MyEncoder
|
||||
{
|
||||
public:
|
||||
MyEncoder(uint8_t _indexPin, void irq(void));
|
||||
int32_t unwrapEncoder(uint16_t in);
|
||||
void indexPulse(void);
|
||||
void init(TIM_TypeDef *_tim_base);
|
||||
uint8_t indexHappened();
|
||||
double currentPos(volatile uint32_t cnt);
|
||||
double frequency(uint64_t time);
|
||||
uint8_t getIndexState();
|
||||
void setScale(double scale);
|
||||
void setLatch(uint8_t latchEnable);
|
||||
|
||||
private:
|
||||
int32_t previousEncoderCounterValue = 0;
|
||||
double PosScaleRes = 1.0;
|
||||
uint32_t CurPosScale = 1;
|
||||
@@ -23,18 +33,6 @@ public:
|
||||
double curPos;
|
||||
|
||||
TIM_TypeDef *tim_base;
|
||||
|
||||
public:
|
||||
MyEncoder(uint8_t _indexPin, void irq(void));
|
||||
int32_t unwrapEncoder(uint16_t in);
|
||||
void indexPulse(void);
|
||||
void init(enum EncTimer timer, TIM_TypeDef *_tim_base);
|
||||
uint8_t indexHappened();
|
||||
double currentPos(volatile uint32_t cnt);
|
||||
double frequency(uint64_t time);
|
||||
uint8_t getIndexState();
|
||||
void setScale(double scale);
|
||||
void setLatch(uint8_t latchEnable);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -36,11 +36,11 @@ void MyEncoder::indexPulse(void)
|
||||
pleaseZeroTheCounter = 0;
|
||||
}
|
||||
}
|
||||
void MyEncoder::init(enum EncTimer timer, TIM_TypeDef *_tim_base)
|
||||
void MyEncoder::init(TIM_TypeDef *_tim_base)
|
||||
{
|
||||
tim_base = _tim_base;
|
||||
EncoderInit.tim_base = _tim_base;
|
||||
// Set starting count value
|
||||
EncoderInit.SetCount(timer, 0);
|
||||
EncoderInit.SetCount(0);
|
||||
// EncoderInit.SetCount(Tim3, 0);
|
||||
// EncoderInit.SetCount(Tim4, 0);
|
||||
// EncoderInit.SetCount(Tim8, 0);
|
||||
|
||||
@@ -5,45 +5,21 @@
|
||||
Created on: Nov 20, 2020
|
||||
Author: GoktugH.
|
||||
*/
|
||||
|
||||
// TIM2, TIM3, TIM4, TIM8
|
||||
Encoder::Encoder()
|
||||
{
|
||||
int unit;
|
||||
}
|
||||
|
||||
void Encoder::eattach(int enco)
|
||||
// void Encoder::SetCount(enum EncTimer enc, int64_t Counter)
|
||||
void Encoder::SetCount(int64_t Counter)
|
||||
{
|
||||
tim_base->CNT = Counter;
|
||||
}
|
||||
|
||||
void Encoder::attachh(int encoNumber)
|
||||
// uint16_t Encoder::GetCount(enum EncTimer enc)
|
||||
uint16_t Encoder::GetCount()
|
||||
{
|
||||
eattach(encoNumber);
|
||||
}
|
||||
|
||||
void Encoder::SetCount(enum EncTimer enc, int64_t Counter)
|
||||
{
|
||||
|
||||
if (enc == Tim2)
|
||||
TIM2->CNT = Counter;
|
||||
else if (enc == Tim3)
|
||||
TIM3->CNT = Counter;
|
||||
else if (enc == Tim4)
|
||||
TIM4->CNT = Counter;
|
||||
else if (enc == Tim8)
|
||||
TIM8->CNT = Counter;
|
||||
}
|
||||
uint16_t Encoder::GetCount(enum EncTimer enc)
|
||||
{
|
||||
|
||||
if (enc == Tim2)
|
||||
c = (TIM2->CNT);
|
||||
else if (enc == Tim3)
|
||||
c = (TIM3->CNT);
|
||||
else if (enc == Tim4)
|
||||
c = (TIM4->CNT);
|
||||
else if (enc == Tim8)
|
||||
c = (TIM8->CNT);
|
||||
return c;
|
||||
return tim_base->CNT;
|
||||
}
|
||||
|
||||
void GpioConfigPortA(GPIO_TypeDef *GPIOx)
|
||||
|
||||
@@ -83,7 +83,7 @@ void setup(void)
|
||||
rcc_config();
|
||||
|
||||
Step1.setScale(500);
|
||||
Encoder1.init(Tim2, TIM2);
|
||||
Encoder1.init(TIM2);
|
||||
|
||||
ecat_slv_init(&config);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user