Revision 753ccd04

View differences:

components/MotorControl.cpp
534 534
    }
535 535

  
536 536
    for (int idxPWM = 0; idxPWM < 2; idxPWM++)
537
      pwmEnableChannel(this->pwmDriver, (idxWheel * 2) + idxPWM, widths[idxPWM]);
537
      pwmEnableChannel(this->pwmDriver, (idxWheel * 2) + idxPWM, motorEnable ? widths[idxPWM] : 0);
538 538
  }
539 539
}
540

  
541

  
542
void MotorControl::setGains(motorGains *motorConfig){
543
  chSysLock();
544
  this->pGain = motorConfig->pGain;
545
  this->iGain = motorConfig->iGain;
546
  this->dGain = motorConfig->dGain;
547
  chSysUnlock();
548
}
549

  
550
void MotorControl::getGains(motorGains *motorConfig){
551
  motorGains gains;
552
  motorConfig->pGain = this->pGain;
553
  motorConfig->iGain = this->iGain;
554
  motorConfig->dGain = this->dGain;
555
}
556

  
557
void MotorControl::setMotorEnable(bool enable){
558
  this->motorEnable = enable;
559
}
560

  
561
bool MotorControl::getMotorEnable(){
562
  return this->motorEnable;
563
}
564

  
565
void MotorControl::toggleMotorEnable(){
566
  this->motorEnable = !this->motorEnable;
567
}
include/amiro/MotorControl.h
8 8

  
9 9
namespace amiro {
10 10

  
11
  struct motorGains
12
  {
13
    int pGain = 0;
14
    float iGain = 0.0;
15
    float dGain = 0.0;
16
  };
17

  
11 18
  class MotorControl : public chibios_rt::BaseStaticThread<512> {
12 19
  public:
13 20
    /**
......
135 142
     */
136 143
    void resetGains();
137 144

  
145
    void setGains(motorGains *motorConfig);
146

  
147
    void getGains(motorGains *motorConfig);
148

  
149
    void setMotorEnable(bool enable);
150
    bool getMotorEnable();
151
    void toggleMotorEnable();
138 152
  protected:
139 153
    virtual msg_t main(void);
140 154

  
......
262 276
    bool startedZieglerCalibration = false;
263 277
    bool startedWheelCalibration = false;
264 278
    bool motorCalibration = true;
279
    bool motorEnable = true;
265 280

  
266 281

  
267 282

  

Also available in: Unified diff