Implemented first Hangar-Service

Dependencies:   CalibrateMagneto QuaternionMath

Fork of SML2 by TobyRich GmbH

MotorDriver.cpp

Committer:
pvaibhav
Date:
2015-01-13
Revision:
0:943820483318
Child:
3:ee90a9ada112

File content as of revision 0:943820483318:

#include "MotorDriver.h"
#include <cassert>
#include <cmath>

MotorDriver::MotorDriver(I2C &i2c, const uint8_t address) : I2CPeripheral(i2c, address) {}

void MotorDriver::setVoltage(const float voltage) {
    assert(abs(voltage) >= 0.48);
    assert(abs(voltage) <= 5.06);
    
    const uint8_t DAC_val = floor(abs(voltage) / 0.0804) + 1; // derived from table on DRV8830 datasheet page 10
    const uint8_t direction = (voltage >= 0.0) ? 0x01 : 0x02; // forward or reverse is set through last 2 bits
    
    write_reg(0x00, (DAC_val << 2) | direction);
}

MotorDriver& MotorDriver::operator=(const float voltage) {
    setVoltage(voltage);
    return *this;
}