A simple motor driver for the MC33926 chip, commonly found on the Polulu md11a breakout https://www.pololu.com/product/1213.
MC33926.cpp
- Committer:
- sk398
- Date:
- 2017-04-30
- Revision:
- 0:3163bb06484b
File content as of revision 0:3163bb06484b:
/******************************************************************************************** Filename: MC33926.cpp Original Author: Steven Kay Development Group: Steve!! Original Creation Date: April 2017 Description: <Desc> Revision History: Version 1.0 - Initial Release *********************************************************************************************/ #include "mbed.h" #include "MC33926.h" MC33926::MC33926(PinName pinIN1, PinName pinIN2, PinName pinFB, PinName pinSF) { // _pinSF.disable_irq(); _pinIN1 = new PwmOut(pinIN1); _pinIN2 = new PwmOut(pinIN2); _pinFB = new AnalogIn(pinFB); _pinSF = new InterruptIn(pinSF); // Set period to 2ms (frequency 500Hz) _pinIN1 -> period_ms(DRIVER_PWM_PERIOD); _pinIN2 -> period_ms(DRIVER_PWM_PERIOD); // Initialise to 0% Duty Cycle SetPWMPulsewidth(RESET,0); SetPWMPulsewidth(RESET,0); } void MC33926::SetPWMPulsewidth(int direction, float PWM_Pulsewidth) { // FORWARD = 1 if(direction == FORWARD) { _pinIN1 -> write(PWM_Pulsewidth); _pinIN2 -> write(0); } // REVERSE = 0 else if(direction == REVERSE) { _pinIN1 -> write(0); _pinIN2 -> write(PWM_Pulsewidth); } // DEFAUULT or RESET != 1 OR 0 else { _pinIN1 -> write(0); _pinIN2 -> write(0); } } float MC33926::ReadCurrentFeedback() { float temp = _pinFB -> read(); // Insert some conversion formats float currentValue = temp; return currentValue; } //void MC33926::StatusFlagWatch(bool latchPol) //{ // // if == 1, enable IRQ // if(latchPol) // { // _pinSF -> enable_irq(); // _pinSF -> fall(this,&MC33926::StatusFlagISR); // } // // if == 0, disable IRQ // else // { // _pinSF -> disable_irq(); // } //} // // //void MC33926::ResetStatus() //{ // statusFlag = 0; //} // // // //bool MC33926::GetStatus() //{ // return statusFlag; //} // // // //void MC33926::StatusFlagISR() //{ // // An Interrupt has been generated // statusFlag = 1; //}