Skip to content

Commit 74045ed

Browse files
committed
add function to enable ABI mode in AS5047
1 parent a3581a7 commit 74045ed

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/encoders/as5047/AS5047.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,14 @@ AS5047Settings1 AS5047::readSettings1(){
8282
return result;
8383
}
8484

85+
86+
void AS5047::writeSettings1(AS5047Settings1 settings){
87+
uint16_t command = AS5047_SETTINGS1_REG; // set r=0, result is 0x0018
88+
uint16_t cmdresult = spi_transfer16(command);
89+
cmdresult = spi_transfer16(settings.reg);
90+
}
91+
92+
8593
AS5047Settings2 AS5047::readSettings2(){
8694
uint16_t command = AS5047_SETTINGS2_REG | AS5047_RW; // set r=1, result is 0x4019
8795
uint16_t cmdresult = spi_transfer16(command);
@@ -105,12 +113,16 @@ AS5047Diagnostics AS5047::readDiagnostics(){
105113
void AS5047::enablePWM(bool enable){
106114
AS5047Settings1 settings = readSettings1();
107115
settings.pwmon = enable;
108-
uint16_t command = AS5047_SETTINGS1_REG; // set r=0, result is 0x0018
109-
uint16_t cmdresult = spi_transfer16(command);
110-
cmdresult = spi_transfer16(settings.reg);
111-
// TODO check result...
116+
writeSettings1(settings);
112117
}
113118

119+
void AS5047::enableABI(bool enable){
120+
AS5047Settings1 settings = readSettings1();
121+
settings.uvw_abi = enable?0:1;
122+
writeSettings1(settings);
123+
}
124+
125+
114126

115127
uint16_t AS5047::setZero(uint16_t value){
116128
// TODO implement me!

src/encoders/as5047/AS5047.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,10 @@ class AS5047 {
122122

123123
AS5047Diagnostics readDiagnostics();
124124
AS5047Settings1 readSettings1();
125+
void writeSettings1(AS5047Settings1 settings);
125126
AS5047Settings2 readSettings2();
126-
void enablePWM(bool enable);
127+
void enablePWM(bool enable);
128+
void enableABI(bool enable);
127129

128130
uint16_t setZero(uint16_t);
129131

0 commit comments

Comments
 (0)