Allegro A3930 BLDC driver

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;
 }