DRV8830/Texas Instruments H-Bridge Voltage-Controlled Motor Driver library for Brushed DC Motor
Dependents: NucleoF401_motor_test_simple Frequency_Counter_w_GPS_1PPS Nucleo_ACM1602_I2C_DC_Angle Frequency_Cntr_1PPS_F746ZG
Diff: DRV8830.cpp
- Revision:
- 4:323a62f5fff3
- Parent:
- 3:98a9369ed390
--- a/DRV8830.cpp Tue Dec 23 23:28:54 2014 +0000 +++ b/DRV8830.cpp Wed Aug 23 09:24:05 2017 +0000 @@ -3,17 +3,11 @@ * Texas Instruments / DRV8830 H-Bridge Voltage-Controlled Motor Driver * http://www.ti.com/product/drv8830 * - * Copyright (c) 2014 Kenji Arai / JH1PJL + * Copyright (c) 2014,'17 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * http://mbed.org/users/kenjiArai/ - * Created: August 6th, 2014 - * Revised: November 28th, 2014 - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * Created: August 6th, 2014 + * Revised: August 23rd, 2017 */ #include "mbed.h" @@ -70,11 +64,15 @@ 4.98, 5.06 }; -DRV8830::DRV8830 (PinName p_sda, PinName p_scl, uint8_t addr) : i2c(p_sda, p_scl){ +DRV8830::DRV8830 (PinName p_sda, PinName p_scl, uint8_t addr) + : _i2c_p(new I2C(p_sda, p_scl)), _i2c(*_i2c_p) +{ DRV8830_addr = (char)addr; } -DRV8830::DRV8830 (I2C& p_i2c, uint8_t addr) : i2c(p_i2c){ +DRV8830::DRV8830 (I2C& p_i2c, uint8_t addr) + : _i2c(p_i2c) +{ DRV8830_addr = (char)addr; } @@ -101,7 +99,7 @@ } dt[0] = DRV8830_CONTROL; dt[1] = (pwm_rate << 2) + direction; - i2c.write((int)DRV8830_addr, (char *)dt, 2); + _i2c.write((int)DRV8830_addr, (char *)dt, 2); } void DRV8830::set_voltage(float volt) { @@ -134,15 +132,15 @@ //printf("volt=%f, pwm=0x%x, dir=%d\r\n", volt, pwm_rate, direction); dt[0] = DRV8830_CONTROL; dt[1] = (pwm_rate << 2) + direction; - i2c.write((int)DRV8830_addr, (char *)dt, 2); + _i2c.write((int)DRV8830_addr, (char *)dt, 2); } uint8_t DRV8830::status() { uint8_t dt[2]; dt[0] = DRV8830_FAULT; - i2c.write((int)DRV8830_addr, (char *)dt, 1); // write register address - i2c.read((int)DRV8830_addr, (char *)dt, 1); // read register content + _i2c.write((int)DRV8830_addr, (char *)dt, 1); // write register address + _i2c.read((int)DRV8830_addr, (char *)dt, 1); // read register content return dt[0]; } @@ -151,6 +149,8 @@ dt[0] = DRV8830_FAULT; dt[1] = DRV8830_F_CLEAR; - i2c.write((int)DRV8830_addr, (char *)dt, 2); + _i2c.write((int)DRV8830_addr, (char *)dt, 2); } + +