Gestion pont-H pour moteur CC

Revision:
4:3dce01a56e06
Parent:
3:5181bcf1f0a6
--- a/yMOTOR.cpp	Sun Sep 13 15:55:29 2015 +0000
+++ b/yMOTOR.cpp	Tue Sep 15 19:25:32 2015 +0000
@@ -4,7 +4,7 @@
  /**
  * @file    yMOTOR.cpp
  * @brief   Class 'yMOTOR'
- * @version V0.5
+ * @version V0.7
  * @date    Sept-2015
  * @note    by Jean92 \n
  *          Controlleur pour Pont-H (MC33886)" \n
@@ -17,7 +17,8 @@
 yMOTOR::yMOTOR(PinName pwm, PinName av, PinName ar):
                 _pwm(pwm), _av(av), _ar(ar) {
      // herite de PWM et DO
-     // init PWM
+     // init PWM, init deadband
+    this->m_DB = yDB_def;
     _pwm.period(yPeriod_def);
     _pwm = 0.0;
     
@@ -33,17 +34,17 @@
 /** Traiter le changement de vitesse */
 void yMOTOR::Speed(float speed) {
     if (this->m_run) {              // moteur running?
-        if (abs(speed) < yDB_def) {     // oui, consigne suffisante?
+        if (abs(speed) < this->m_DB) {     // oui, consigne suffisante?
             _ar = 0;                    // non, les 2 cdes à zéro
             _av = 0;
             _pwm = 0.0;                 // reset PWM
             this->m_speed = 0.0;        // memoriser vitesse nulle
         }
-        else {                          // oui, en dehors de la bande morte
-            _av = (speed > yDB_def);    // en avant
-            _ar = (speed < -yDB_def);   // ou en arriere
-            _pwm = abs(speed);          // a la vitesse demandée
-            this->m_speed = speed;      // memoire vitesse
+        else {                             // oui, en dehors de la bande morte
+            _av = (speed > this->m_DB);    // en avant
+            _ar = (speed < -this->m_DB);   // ou en arriere
+            _pwm = abs(speed);             // a la vitesse demandée
+            this->m_speed = speed;         // memoire vitesse
         }
     } 
 } 
@@ -53,11 +54,16 @@
     _pwm.period(seconds);
 }
 
+/** Change DeadBand */
+void yMOTOR::DeadBand(float db) {
+    this->m_DB = db;
+}
+
 /** Marche/Arret request */
 void yMOTOR::MarArr(int mararr) {
     if (mararr == yMARCHE) {
+        this->m_run = 1;        // memoriser l'état
         Speed(this->m_speed);   // appliquer la vitesse demandée
-        this->m_run = 1;        // memoriser l'état
     }
     else if (mararr == yARRET) {
         _ar = 0;                // mettre les 2 cdes a zero