Open FFBoard
Open source force feedback firmware
ADS111X.h
Go to the documentation of this file.
1/*
2 * ADS111X.h
3 *
4 * Created on: 21.04.2022
5 * Author: Yannick
6 */
7
8#ifndef USEREXTENSIONS_SRC_ADS111X_H_
9#define USEREXTENSIONS_SRC_ADS111X_H_
10
11#include "I2C.h"
12#include "CommandHandler.h"
13#include "AnalogSource.h"
14#include "PersistentStorage.h"
15#include "thread.hpp"
16#include "cpp_target_config.h"
17#include "target_constants.h"
19
20#ifdef I2C_PORT
21
22class ADS111X : public I2CDevice {
23
24public:
25 ADS111X(I2CPort &port,uint8_t address = 0x48);
26 virtual ~ADS111X();
27
28 void readRegIT(const uint8_t reg,uint16_t* data);
29 void writeRegIT(const uint8_t reg,uint16_t data);
30 uint16_t readReg(const uint8_t reg);
31 void writeReg(const uint8_t reg,uint16_t data);
32
33 void startConversion(uint8_t channel, bool differential=false);
34
35 void setGain(uint16_t gain);
36
37 void setDatarate(uint16_t rate);
38
41
42 void setThresh(uint16_t loTh,uint16_t hiTh);
43
44
45protected:
47 //I2C_InitTypeDef config;
48
49 uint8_t address;
50 uint8_t datarate = 4;
51 uint8_t gain = 2;
52 uint16_t conversions[4] = {0};
53
54 struct {
55 uint16_t config = 0x8583; // 0x01
56 uint16_t lothresh = 0x8000; // 0x02
57 uint16_t hithresh = 0x7FFF; // 0x03
59private:
60 uint16_t writeItBuffer = 0;
61};
62
63#ifdef ADS111XANALOG
65 enum class ADS111X_AnalogSource_commands : uint32_t {
67 };
68
69 enum class ADS111X_AnalogSource_state : uint8_t {
71 };
72
73public:
76
77 void saveFlash();
78 void restoreFlash();
79
80 void Run();
81
84 void i2cError(I2CPort* port);
85
86 std::vector<int32_t>* getAxes();
87
88 const virtual ClassIdentifier getInfo();
90 static bool isCreatable() {return true;};
91 std::string getHelpstring(){return "ADS1113/4/5 analog source";}
92
94
95 void initialize();
96 CommandStatus command(const ParsedCommand& cmd,std::vector<CommandReply>& replies);
97
98private:
99 void setAxes(uint8_t axes, bool differential);
101 uint16_t configRegBuf = 0;
102 uint8_t axes=1;
103 uint8_t lastAxis = 0;
104 uint32_t lastSuccess = 0;
105 bool differentialMode = false;
106 std::vector<int32_t> rawbuf;
108};
109#endif
110#endif /* USEREXTENSIONS_SRC_ADS111X_H_ */
111#endif
ClassType
Definition: ClassIDs.h:12
CommandStatus
uint16_t configRegBuf
Definition: ADS111X.h:101
void setAxes(uint8_t axes, bool differential)
Definition: ADS111X.cpp:336
void i2cTxCompleted(I2CPort *port)
Definition: ADS111X.cpp:306
static bool isCreatable()
Definition: ADS111X.h:90
std::string getHelpstring()
Definition: ADS111X.h:91
static ClassIdentifier info
Definition: ADS111X.h:89
std::vector< int32_t > rawbuf
Definition: ADS111X.h:106
CommandStatus command(const ParsedCommand &cmd, std::vector< CommandReply > &replies)
Definition: ADS111X.cpp:343
int16_t sampleBuffer
Definition: ADS111X.h:100
void i2cRxCompleted(I2CPort *port)
Definition: ADS111X.cpp:280
void i2cError(I2CPort *port)
Definition: ADS111X.cpp:223
uint32_t lastSuccess
Definition: ADS111X.h:104
virtual const ClassIdentifier getInfo()
Definition: ADS111X.cpp:164
const ClassType getClassType() override
returns the used classchooser selection id of this instance
Definition: ADS111X.h:93
std::vector< int32_t > * getAxes()
Definition: ADS111X.cpp:318
volatile ADS111X_AnalogSource_state state
Definition: ADS111X.h:107
struct ADS111X::@675 registers
void startI2CTransfer(I2CPort *port)
Definition: ADS111X.cpp:147
uint16_t conversions[4]
Definition: ADS111X.h:52
uint8_t gain
Definition: ADS111X.h:51
void setGain(uint16_t gain)
Definition: ADS111X.cpp:60
uint16_t config
Definition: ADS111X.h:55
virtual ~ADS111X()
Definition: ADS111X.cpp:14
uint16_t writeItBuffer
Definition: ADS111X.h:60
void endI2CTransfer(I2CPort *port)
Definition: ADS111X.cpp:151
void writeReg(const uint8_t reg, uint16_t data)
Definition: ADS111X.cpp:38
void writeRegIT(const uint8_t reg, uint16_t data)
Definition: ADS111X.cpp:31
void setThresh(uint16_t loTh, uint16_t hiTh)
Definition: ADS111X.cpp:44
ADS111X(I2CPort &port, uint8_t address=0x48)
Definition: ADS111X.cpp:10
I2CPort & port
Definition: ADS111X.h:46
uint8_t address
Definition: ADS111X.h:49
void startConversion(uint8_t channel, bool differential=false)
Definition: ADS111X.cpp:98
uint16_t lothresh
Definition: ADS111X.h:56
uint16_t readReg(const uint8_t reg)
Definition: ADS111X.cpp:24
void readRegIT(const uint8_t reg, uint16_t *data)
Definition: ADS111X.cpp:19
void setDatarate(uint16_t rate)
Definition: ADS111X.cpp:79
uint16_t hithresh
Definition: ADS111X.h:57
uint8_t datarate
Definition: ADS111X.h:50
Definition: I2C.h:106
Definition: I2C.h:43
static struct @612 data