Skip to content

Commit cb988f4

Browse files
authored
Bugfix: MAX_ANGLE/MIN_ANGLE are 16-bit data fields on servo. (#25)
Also the function 'angleToPosition' correctly return a uint16_t. Therefore the function 'writeWordCmd' needs to be used to write actual 2-Bytes/16-Bit, otherwise the 'L' part of the angle will be never written.
1 parent 038f15a commit cb988f4

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/lib/motors/SmartServo.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,25 +297,25 @@ void SmartServoClass::setStallProtectionTime(uint8_t const id, uint8_t const ti
297297

298298
void SmartServoClass::setMinAngle(float const angle) {
299299
mutex.lock();
300-
writeByteCmd(BROADCAST, REG(SmartServoRegister::MIN_ANGLE_LIMIT_H), angleToPosition(angle));
300+
writeWordCmd(BROADCAST, REG(SmartServoRegister::MIN_ANGLE_LIMIT_H), angleToPosition(angle));
301301
mutex.unlock();
302302
}
303303

304304
void SmartServoClass::setMinAngle(uint8_t const id, float const angle) {
305305
mutex.lock();
306-
writeByteCmd(id, REG(SmartServoRegister::MIN_ANGLE_LIMIT_H), angleToPosition(angle));
306+
writeWordCmd(id, REG(SmartServoRegister::MIN_ANGLE_LIMIT_H), angleToPosition(angle));
307307
mutex.unlock();
308308
}
309309

310310
void SmartServoClass::setMaxAngle(float const angle) {
311311
mutex.lock();
312-
writeByteCmd(BROADCAST, REG(SmartServoRegister::MAX_ANGLE_LIMIT_H), angleToPosition(angle));
312+
writeWordCmd(BROADCAST, REG(SmartServoRegister::MAX_ANGLE_LIMIT_H), angleToPosition(angle));
313313
mutex.unlock();
314314
}
315315

316316
void SmartServoClass::setMaxAngle(uint8_t const id, float const angle) {
317317
mutex.lock();
318-
writeByteCmd(id, REG(SmartServoRegister::MAX_ANGLE_LIMIT_H), angleToPosition(angle));
318+
writeWordCmd(id, REG(SmartServoRegister::MAX_ANGLE_LIMIT_H), angleToPosition(angle));
319319
mutex.unlock();
320320
}
321321

0 commit comments

Comments
 (0)