akiyoshi oguro
/
Nucleo_i2c_master
I2C PWM MOTOR Control for DRV8830
main.cpp
- Committer:
- oguro
- Date:
- 2017-03-09
- Revision:
- 0:7d2d296b12e6
File content as of revision 0:7d2d296b12e6:
#include "mbed.h" // Read temperature from LM75BD Serial pc(USBTX,USBRX); I2C i2c(PB_9, PB_8); AnalogIn V_adc(PB_1); const int addr = 0xC8; int i0=1,i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0,i9=0; float Vr_adc; DigitalIn H1(PA_15); DigitalIn H2(PB_3); DigitalIn H3(PB_10); unsigned short U,V,W; int main() { pc.baud(128000); char cmd[2]; cmd[0] = 0x0; cmd[1] = 0x65; i2c.write(addr,cmd, 2); cmd[0] = 0x1; cmd[1] = 0x80; i2c.write(addr,cmd, 2); while(1){ cmd[0] = 0x1; cmd[1] = 0x80; i2c.write(addr,cmd, 2); Vr_adc=V_adc.read(); if((Vr_adc>0.05f)&&(Vr_adc<=0.1f)&&(i0==1)){ cmd[0] = 0x0; cmd[1] = 0x25; //0.72V i0=0; i1=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.1f)&&(Vr_adc<=0.2f)&&(i1==1)){ cmd[0] = 0x0; cmd[1] = 0x35; //1.04V i0=1; i1=0; i2=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.2f)&&(Vr_adc<=0.3f)&&(i2==1)){ cmd[0] = 0x0; cmd[1] = 0x4D; //1.53V i1=1; i2=0; i3=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.3f)&&(Vr_adc<=0.4f)&&(i3==1)){ cmd[0] = 0x0; cmd[1] = 0x65; //2.01V i1=1; i2=1; i3=0; i4=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.4f)&&(Vr_adc<=0.5f)&&(i4==1)){ cmd[0] = 0x0; cmd[1] = 0x7D; //2.48V i1=1; i2=1; i3=1; i4=0; i5=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.5f)&&(Vr_adc<=0.6f)&&(i5==1)){ cmd[0] = 0x0; cmd[1] = 0x99; //3.05V i1=1; i2=1; i3=1; i4=1; i5=0; i6=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.6f)&&(Vr_adc<=0.7f)&&(i6==1)){ cmd[0] = 0x0; cmd[1] = 0xB1; //3.53V i1=1; i2=1; i3=1; i4=1; i5=1; i6=0; i7=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.7f)&&(Vr_adc<=0.8f)&&(i7==1)){ cmd[0] = 0x0; cmd[1] = 0xC9; //4.02V i1=1; i2=1; i3=1; i4=1; i5=1; i6=1; i7=0; i8=1; i2c.write(addr,cmd, 2); } if((Vr_adc>0.8f)&&(i8==1)){ cmd[0] = 0x0; cmd[1] = 0xE1; //4.50V i1=1; i2=1; i3=1; i4=1; i5=1; i6=1; i7=1; i8=0; i2c.write(addr,cmd, 2); } U=H1; V=H2; W=H3; pc.printf("%d,%d,%d \r" ,U,V,W); } }