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",
|
"string": "cpp",
|
||||||
"unordered_map": "cpp",
|
"unordered_map": "cpp",
|
||||||
"vector": "cpp",
|
"vector": "cpp",
|
||||||
"system_error": "cpp"
|
"system_error": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"ostream": "cpp"
|
||||||
},
|
},
|
||||||
"C_Cpp.errorSquiggles": "disabled"
|
"C_Cpp.errorSquiggles": "disabled"
|
||||||
}
|
}
|
||||||
@@ -3,12 +3,22 @@
|
|||||||
#include "Stm32F4_Encoder.h"
|
#include "Stm32F4_Encoder.h"
|
||||||
#include <CircularBuffer.h>
|
#include <CircularBuffer.h>
|
||||||
#define RINGBUFFERLEN 101
|
#define RINGBUFFERLEN 101
|
||||||
// EncoderInit.SetCount(Tim3, 0);
|
|
||||||
// EncoderInit.SetCount(Tim4, 0);
|
|
||||||
// EncoderInit.SetCount(Tim8, 0);
|
|
||||||
class MyEncoder
|
class MyEncoder
|
||||||
{
|
{
|
||||||
public:
|
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;
|
int32_t previousEncoderCounterValue = 0;
|
||||||
double PosScaleRes = 1.0;
|
double PosScaleRes = 1.0;
|
||||||
uint32_t CurPosScale = 1;
|
uint32_t CurPosScale = 1;
|
||||||
@@ -23,18 +33,6 @@ public:
|
|||||||
double curPos;
|
double curPos;
|
||||||
|
|
||||||
TIM_TypeDef *tim_base;
|
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
|
#endif
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -36,11 +36,11 @@ void MyEncoder::indexPulse(void)
|
|||||||
pleaseZeroTheCounter = 0;
|
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
|
// Set starting count value
|
||||||
EncoderInit.SetCount(timer, 0);
|
EncoderInit.SetCount(0);
|
||||||
// EncoderInit.SetCount(Tim3, 0);
|
// EncoderInit.SetCount(Tim3, 0);
|
||||||
// EncoderInit.SetCount(Tim4, 0);
|
// EncoderInit.SetCount(Tim4, 0);
|
||||||
// EncoderInit.SetCount(Tim8, 0);
|
// EncoderInit.SetCount(Tim8, 0);
|
||||||
|
|||||||
@@ -5,45 +5,21 @@
|
|||||||
Created on: Nov 20, 2020
|
Created on: Nov 20, 2020
|
||||||
Author: GoktugH.
|
Author: GoktugH.
|
||||||
*/
|
*/
|
||||||
|
// TIM2, TIM3, TIM4, TIM8
|
||||||
Encoder::Encoder()
|
Encoder::Encoder()
|
||||||
{
|
{
|
||||||
int unit;
|
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;
|
||||||
}
|
}
|
||||||
|
// uint16_t Encoder::GetCount(enum EncTimer enc)
|
||||||
void Encoder::attachh(int encoNumber)
|
uint16_t Encoder::GetCount()
|
||||||
{
|
{
|
||||||
eattach(encoNumber);
|
return tim_base->CNT;
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GpioConfigPortA(GPIO_TypeDef *GPIOx)
|
void GpioConfigPortA(GPIO_TypeDef *GPIOx)
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ void setup(void)
|
|||||||
rcc_config();
|
rcc_config();
|
||||||
|
|
||||||
Step1.setScale(500);
|
Step1.setScale(500);
|
||||||
Encoder1.init(Tim2, TIM2);
|
Encoder1.init(TIM2);
|
||||||
|
|
||||||
ecat_slv_init(&config);
|
ecat_slv_init(&config);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user