Allegro A3930 BLDC driver
Diff: a3930.cpp
- Revision:
- 1:464cd2cb852e
- Parent:
- 0:a6123d12f08b
--- a/a3930.cpp Mon Nov 04 17:04:34 2013 +0000 +++ b/a3930.cpp Sun Nov 10 15:36:47 2013 +0000 @@ -29,10 +29,21 @@ extIO->setPin(coastPinNumber); extIO->clearPin(dirPinNumber); - interruptDiro.rise(this, &A3930::diroRise); - interruptDiro.fall(this, &A3930::diroFall); + /*interruptDiro.rise(this, &A3930::diroRise); + interruptDiro.fall(this, &A3930::diroFall);*/ interruptTacho.rise(this, &A3930::tachoChanged); interruptTacho.fall(this, &A3930::tachoChanged); + + interruptDiro.attach_asserted(this, &A3930::diroRise); + interruptDiro.attach_deasserted(this, &A3930::diroFall); + /*interruptTacho.attach_asserted(this, &A3930::tachoChanged); + interruptTacho.attach_deasserted(this, &A3930::tachoChanged);*/ + + interruptDiro.setSamplesTillAssert(3); + //interruptTacho.setSamplesTillAssert(2); + + interruptDiro.setSampleFrequency(500); + //interruptTacho.setSampleFrequency(1000); } void A3930::setPWM(float newPWM) { @@ -40,16 +51,23 @@ if (newPWM < -0.5) { pwm = -1 * newPWM; extIO->setPin(dirPinNumber); - extIO->setPin(coastPinNumber); + //extIO->setPin(coastPinNumber); + extIO->setPin(brakePinNumber); } else if (newPWM > 0.5) { pwm = newPWM; extIO->clearPin(dirPinNumber); - extIO->setPin(coastPinNumber); + //extIO->setPin(coastPinNumber); + extIO->setPin(brakePinNumber); } else { - extIO->clearPin(coastPinNumber); + extIO->clearPin(brakePinNumber); } } +void A3930::setRawPWM(float newPWM) { + currentPWM = newPWM; + pwm = newPWM; +} + int A3930::getSpeed() { return currentSpeed; }