SDFileSystem

Dependencies:   mbed PowerControl SDFileSystem

Fork of SDFilesystem by 智也 大野

Committer:
MEXT1
Date:
Thu Dec 15 04:53:16 2016 +0000
Revision:
3:e61ac065965e
Parent:
0:8d235efb1150
SDFileSystem

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomoya123 0:8d235efb1150 1 #include "HeptaAccel.h"
tomoya123 0:8d235efb1150 2 #include "mbed.h"
tomoya123 0:8d235efb1150 3
tomoya123 0:8d235efb1150 4 HeptaAccel::HeptaAccel(PinName sda, PinName scl, int aaddr ) : accel(sda,scl),addr(aaddr)
tomoya123 0:8d235efb1150 5 {
tomoya123 0:8d235efb1150 6 _cmd[0] = 0x2A;//CTL_REG
tomoya123 0:8d235efb1150 7 _cmd[1] = 0x01;//ACTIVE
tomoya123 0:8d235efb1150 8 accel.write(addr, _cmd, 2);
tomoya123 0:8d235efb1150 9 accel.start();
tomoya123 0:8d235efb1150 10 accel.write(addr);
tomoya123 0:8d235efb1150 11 accel.stop();
tomoya123 0:8d235efb1150 12 }
tomoya123 0:8d235efb1150 13
tomoya123 0:8d235efb1150 14 void HeptaAccel::setup()
tomoya123 0:8d235efb1150 15 {
tomoya123 0:8d235efb1150 16 _cmd[0] = 0x2A;
tomoya123 0:8d235efb1150 17 _cmd[1] = 0x01;
tomoya123 0:8d235efb1150 18 accel.frequency(100000);
tomoya123 0:8d235efb1150 19 accel.write(addr, _cmd, 2);
tomoya123 0:8d235efb1150 20 accel.start();
tomoya123 0:8d235efb1150 21 accel.write(addr);
tomoya123 0:8d235efb1150 22 accel.stop();
tomoya123 0:8d235efb1150 23 }
tomoya123 0:8d235efb1150 24
tomoya123 0:8d235efb1150 25 void HeptaAccel::sensing(float *ax,float *ay,float *az)
tomoya123 0:8d235efb1150 26 {
tomoya123 0:8d235efb1150 27 int16_t acc;
tomoya123 0:8d235efb1150 28 accel.start();//start
tomoya123 0:8d235efb1150 29 accel.write(addr);//write address
tomoya123 0:8d235efb1150 30 accel.write(0x01);//X-axis_MSB_REG
tomoya123 0:8d235efb1150 31 accel.start();//restart, switch from write to read
tomoya123 0:8d235efb1150 32 accel.write(addr|0x01);//read address
tomoya123 0:8d235efb1150 33 _xmsb = accel.read(0);//read from selected register with NACK
tomoya123 0:8d235efb1150 34 accel.stop();
tomoya123 0:8d235efb1150 35 accel.start();
tomoya123 0:8d235efb1150 36 accel.write(addr);
tomoya123 0:8d235efb1150 37 accel.write(0x02);//X-axis_LSB_REG
tomoya123 0:8d235efb1150 38 accel.start();
tomoya123 0:8d235efb1150 39 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 40 _xlsb = accel.read(0);
tomoya123 0:8d235efb1150 41 accel.stop();
tomoya123 0:8d235efb1150 42 acc = (_xmsb << 6) | (_xlsb >> 2);
tomoya123 0:8d235efb1150 43 if (acc > UINT14_MAX/2)
tomoya123 0:8d235efb1150 44 {
tomoya123 0:8d235efb1150 45 acc -= UINT14_MAX;
tomoya123 0:8d235efb1150 46 }
tomoya123 0:8d235efb1150 47 *ax = acc/4096.0*9.81;
tomoya123 0:8d235efb1150 48
tomoya123 0:8d235efb1150 49 accel.start();
tomoya123 0:8d235efb1150 50 accel.write(addr);
tomoya123 0:8d235efb1150 51 accel.write(0x03);
tomoya123 0:8d235efb1150 52 accel.start();
tomoya123 0:8d235efb1150 53 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 54 _ymsb = accel.read(0);
tomoya123 0:8d235efb1150 55 accel.stop();
tomoya123 0:8d235efb1150 56 accel.start();
tomoya123 0:8d235efb1150 57 accel.write(addr);
tomoya123 0:8d235efb1150 58 accel.write(0x04);
tomoya123 0:8d235efb1150 59 accel.start();
tomoya123 0:8d235efb1150 60 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 61 _ylsb = accel.read(0);
tomoya123 0:8d235efb1150 62 accel.stop();
tomoya123 0:8d235efb1150 63 acc = (_ymsb << 6) | (_ylsb >> 2);
tomoya123 0:8d235efb1150 64 if (acc > UINT14_MAX/2)
tomoya123 0:8d235efb1150 65 {
tomoya123 0:8d235efb1150 66 acc -= UINT14_MAX;
tomoya123 0:8d235efb1150 67 }
tomoya123 0:8d235efb1150 68 *ay = acc/4096.0*9.81;
tomoya123 0:8d235efb1150 69
tomoya123 0:8d235efb1150 70 accel.start();
tomoya123 0:8d235efb1150 71 accel.write(addr);
tomoya123 0:8d235efb1150 72 accel.write(0x05);
tomoya123 0:8d235efb1150 73 accel.start();
tomoya123 0:8d235efb1150 74 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 75 _zmsb = accel.read(0);
tomoya123 0:8d235efb1150 76 accel.stop();
tomoya123 0:8d235efb1150 77 accel.start();
tomoya123 0:8d235efb1150 78 accel.write(addr);
tomoya123 0:8d235efb1150 79 accel.write(0x06);
tomoya123 0:8d235efb1150 80 accel.start();
tomoya123 0:8d235efb1150 81 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 82 _zlsb = accel.read(0);
tomoya123 0:8d235efb1150 83 accel.stop();
tomoya123 0:8d235efb1150 84 acc = (_zmsb << 6) | (_zlsb >> 2);
tomoya123 0:8d235efb1150 85 if (acc > UINT14_MAX/2)
tomoya123 0:8d235efb1150 86 {
tomoya123 0:8d235efb1150 87 acc -= UINT14_MAX;
tomoya123 0:8d235efb1150 88 }
tomoya123 0:8d235efb1150 89 *az = acc/4096.0*9.81;
tomoya123 0:8d235efb1150 90 }
tomoya123 0:8d235efb1150 91
tomoya123 0:8d235efb1150 92 float HeptaAccel::x()
tomoya123 0:8d235efb1150 93 {
tomoya123 0:8d235efb1150 94 int16_t acc;
tomoya123 0:8d235efb1150 95 float ax;
tomoya123 0:8d235efb1150 96 accel.start();
tomoya123 0:8d235efb1150 97 accel.write(addr);
tomoya123 0:8d235efb1150 98 accel.write(0x01);
tomoya123 0:8d235efb1150 99 accel.start();
tomoya123 0:8d235efb1150 100 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 101 _xmsb = accel.read(0);
tomoya123 0:8d235efb1150 102 accel.stop();
tomoya123 0:8d235efb1150 103 accel.start();
tomoya123 0:8d235efb1150 104 accel.write(addr);
tomoya123 0:8d235efb1150 105 accel.write(0x02);
tomoya123 0:8d235efb1150 106 accel.start();
tomoya123 0:8d235efb1150 107 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 108 _xlsb = accel.read(0);
tomoya123 0:8d235efb1150 109 accel.stop();
tomoya123 0:8d235efb1150 110 acc = (_xmsb << 6) | (_xlsb >> 2);
tomoya123 0:8d235efb1150 111 if (acc > UINT14_MAX/2)
tomoya123 0:8d235efb1150 112 {
tomoya123 0:8d235efb1150 113 acc -= UINT14_MAX;
tomoya123 0:8d235efb1150 114 }
tomoya123 0:8d235efb1150 115 ax = acc/4096.0*9.81;
tomoya123 0:8d235efb1150 116 return(ax);
tomoya123 0:8d235efb1150 117 }
tomoya123 0:8d235efb1150 118
tomoya123 0:8d235efb1150 119 float HeptaAccel::y()
tomoya123 0:8d235efb1150 120 {
tomoya123 0:8d235efb1150 121 int16_t acc;
tomoya123 0:8d235efb1150 122 float ay;
tomoya123 0:8d235efb1150 123 accel.start();
tomoya123 0:8d235efb1150 124 accel.write(addr);
tomoya123 0:8d235efb1150 125 accel.write(0x03);
tomoya123 0:8d235efb1150 126 accel.start();
tomoya123 0:8d235efb1150 127 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 128 _ymsb = accel.read(0);
tomoya123 0:8d235efb1150 129 accel.stop();
tomoya123 0:8d235efb1150 130 accel.start();
tomoya123 0:8d235efb1150 131 accel.write(addr);
tomoya123 0:8d235efb1150 132 accel.write(0x04);
tomoya123 0:8d235efb1150 133 accel.start();
tomoya123 0:8d235efb1150 134 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 135 _ylsb = accel.read(0);
tomoya123 0:8d235efb1150 136 accel.stop();
tomoya123 0:8d235efb1150 137 acc = (_ymsb << 6) | (_ylsb >> 2);
tomoya123 0:8d235efb1150 138 if (acc > UINT14_MAX/2)
tomoya123 0:8d235efb1150 139 {
tomoya123 0:8d235efb1150 140 acc -= UINT14_MAX;
tomoya123 0:8d235efb1150 141 }
tomoya123 0:8d235efb1150 142 ay = acc/4096.0*9.81;
tomoya123 0:8d235efb1150 143 return(ay);
tomoya123 0:8d235efb1150 144 }
tomoya123 0:8d235efb1150 145
tomoya123 0:8d235efb1150 146 float HeptaAccel::z()
tomoya123 0:8d235efb1150 147 {
tomoya123 0:8d235efb1150 148 int16_t acc;
tomoya123 0:8d235efb1150 149 float az;
tomoya123 0:8d235efb1150 150 accel.start();
tomoya123 0:8d235efb1150 151 accel.write(addr);
tomoya123 0:8d235efb1150 152 accel.write(0x2C);
tomoya123 0:8d235efb1150 153 accel.start();
tomoya123 0:8d235efb1150 154 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 155 _zmsb = accel.read(0);
tomoya123 0:8d235efb1150 156 accel.stop();
tomoya123 0:8d235efb1150 157 accel.start();
tomoya123 0:8d235efb1150 158 accel.write(addr);
tomoya123 0:8d235efb1150 159 accel.write(0x2D);
tomoya123 0:8d235efb1150 160 accel.start();
tomoya123 0:8d235efb1150 161 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 162 _zlsb = accel.read(0);
tomoya123 0:8d235efb1150 163 accel.stop();
tomoya123 0:8d235efb1150 164 acc = (_zmsb << 6) | (_zlsb >> 2);
tomoya123 0:8d235efb1150 165 if (acc > UINT14_MAX/2)
tomoya123 0:8d235efb1150 166 {
tomoya123 0:8d235efb1150 167 acc -= UINT14_MAX;
tomoya123 0:8d235efb1150 168 }
tomoya123 0:8d235efb1150 169 az = acc/4096.0*9.81;
tomoya123 0:8d235efb1150 170 return(az);
tomoya123 0:8d235efb1150 171 }
tomoya123 0:8d235efb1150 172
tomoya123 0:8d235efb1150 173 void HeptaAccel::sensing_u16(char* ax_u16,char* ay_u16,char* az_u16, int *dsize)
tomoya123 0:8d235efb1150 174 {
tomoya123 0:8d235efb1150 175 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:8d235efb1150 176 accel.start();
tomoya123 0:8d235efb1150 177 accel.write(addr);
tomoya123 0:8d235efb1150 178 accel.write(0x01);
tomoya123 0:8d235efb1150 179 accel.start();
tomoya123 0:8d235efb1150 180 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 181 _xmsb = accel.read(0);
tomoya123 0:8d235efb1150 182 accel.stop();
tomoya123 0:8d235efb1150 183 accel.start();
tomoya123 0:8d235efb1150 184 accel.write(addr);
tomoya123 0:8d235efb1150 185 accel.write(0x02);
tomoya123 0:8d235efb1150 186 accel.start();
tomoya123 0:8d235efb1150 187 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 188 _xlsb = accel.read(0);
tomoya123 0:8d235efb1150 189 accel.stop();
tomoya123 0:8d235efb1150 190 sprintf( a1, "%02X", ((_xmsb)) & 0xFF);
tomoya123 0:8d235efb1150 191 sprintf( a2, "%02X", ((_xlsb)) & 0xFF);
tomoya123 0:8d235efb1150 192 ax_u16[0]=a1[0];
tomoya123 0:8d235efb1150 193 ax_u16[1]=a1[1];
tomoya123 0:8d235efb1150 194 ax_u16[2]=a2[0];
tomoya123 0:8d235efb1150 195 ax_u16[3]=a2[1];
tomoya123 0:8d235efb1150 196
tomoya123 0:8d235efb1150 197 accel.start();
tomoya123 0:8d235efb1150 198 accel.write(addr);
tomoya123 0:8d235efb1150 199 accel.write(0x03);
tomoya123 0:8d235efb1150 200 accel.start();
tomoya123 0:8d235efb1150 201 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 202 _ymsb = accel.read(0);
tomoya123 0:8d235efb1150 203 accel.stop();
tomoya123 0:8d235efb1150 204 accel.start();
tomoya123 0:8d235efb1150 205 accel.write(addr);
tomoya123 0:8d235efb1150 206 accel.write(0x04);
tomoya123 0:8d235efb1150 207 accel.start();
tomoya123 0:8d235efb1150 208 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 209 _ylsb = accel.read(0);
tomoya123 0:8d235efb1150 210 accel.stop();
tomoya123 0:8d235efb1150 211 sprintf( a1, "%02X", ((_ymsb)) & 0xFF);
tomoya123 0:8d235efb1150 212 sprintf( a2, "%02X", ((_ylsb)) & 0xFF);
tomoya123 0:8d235efb1150 213 ay_u16[0]=a1[0];
tomoya123 0:8d235efb1150 214 ay_u16[1]=a1[1];
tomoya123 0:8d235efb1150 215 ay_u16[2]=a2[0];
tomoya123 0:8d235efb1150 216 ay_u16[3]=a2[1];
tomoya123 0:8d235efb1150 217
tomoya123 0:8d235efb1150 218 accel.start();
tomoya123 0:8d235efb1150 219 accel.write(addr);
tomoya123 0:8d235efb1150 220 accel.write(0x05);
tomoya123 0:8d235efb1150 221 accel.start();
tomoya123 0:8d235efb1150 222 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 223 _zmsb = accel.read(0);
tomoya123 0:8d235efb1150 224 accel.stop();
tomoya123 0:8d235efb1150 225 accel.start();
tomoya123 0:8d235efb1150 226 accel.write(addr);
tomoya123 0:8d235efb1150 227 accel.write(0x06);
tomoya123 0:8d235efb1150 228 accel.start();
tomoya123 0:8d235efb1150 229 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 230 _zlsb = accel.read(0);
tomoya123 0:8d235efb1150 231 accel.stop();
tomoya123 0:8d235efb1150 232 sprintf( a1, "%02X", ((_zmsb)) & 0xFF);
tomoya123 0:8d235efb1150 233 sprintf( a2, "%02X", ((_zlsb)) & 0xFF);
tomoya123 0:8d235efb1150 234 az_u16[0]=a1[0];
tomoya123 0:8d235efb1150 235 az_u16[1]=a1[1];
tomoya123 0:8d235efb1150 236 az_u16[2]=a2[0];
tomoya123 0:8d235efb1150 237 az_u16[3]=a2[1];
tomoya123 0:8d235efb1150 238 *dsize = 4;
tomoya123 0:8d235efb1150 239 }
tomoya123 0:8d235efb1150 240
tomoya123 0:8d235efb1150 241 void HeptaAccel::x_u16(char* a_u16, int *dsize)
tomoya123 0:8d235efb1150 242 {
tomoya123 0:8d235efb1150 243 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:8d235efb1150 244 accel.start();
tomoya123 0:8d235efb1150 245 accel.write(addr);
tomoya123 0:8d235efb1150 246 accel.write(0x01);
tomoya123 0:8d235efb1150 247 accel.start();
tomoya123 0:8d235efb1150 248 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 249 _xmsb = accel.read(0);
tomoya123 0:8d235efb1150 250 accel.stop();
tomoya123 0:8d235efb1150 251 accel.start();
tomoya123 0:8d235efb1150 252 accel.write(addr);
tomoya123 0:8d235efb1150 253 accel.write(0x02);
tomoya123 0:8d235efb1150 254 accel.start();
tomoya123 0:8d235efb1150 255 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 256 _xlsb = accel.read(0);
tomoya123 0:8d235efb1150 257 accel.stop();
tomoya123 0:8d235efb1150 258 sprintf( a1, "%02X", ((_xmsb)) & 0xFF);
tomoya123 0:8d235efb1150 259 sprintf( a2, "%02X", ((_xlsb)) & 0xFF);
tomoya123 0:8d235efb1150 260 a_u16[0]=a1[0];
tomoya123 0:8d235efb1150 261 a_u16[1]=a1[1];
tomoya123 0:8d235efb1150 262 a_u16[2]=a2[0];
tomoya123 0:8d235efb1150 263 a_u16[3]=a2[1];
tomoya123 0:8d235efb1150 264 *dsize = 4;
tomoya123 0:8d235efb1150 265 }
tomoya123 0:8d235efb1150 266
tomoya123 0:8d235efb1150 267 void HeptaAccel::y_u16(char* a_u16, int *dsize)
tomoya123 0:8d235efb1150 268 {
tomoya123 0:8d235efb1150 269 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:8d235efb1150 270 accel.start();
tomoya123 0:8d235efb1150 271 accel.write(addr);
tomoya123 0:8d235efb1150 272 accel.write(0x03);
tomoya123 0:8d235efb1150 273 accel.start();
tomoya123 0:8d235efb1150 274 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 275 _ymsb = accel.read(0);
tomoya123 0:8d235efb1150 276 accel.stop();
tomoya123 0:8d235efb1150 277 accel.start();
tomoya123 0:8d235efb1150 278 accel.write(addr);
tomoya123 0:8d235efb1150 279 accel.write(0x04);
tomoya123 0:8d235efb1150 280 accel.start();
tomoya123 0:8d235efb1150 281 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 282 _ylsb = accel.read(0);
tomoya123 0:8d235efb1150 283 accel.stop();
tomoya123 0:8d235efb1150 284 sprintf( a1, "%02X", ((_ymsb)) & 0xFF);
tomoya123 0:8d235efb1150 285 sprintf( a2, "%02X", ((_ylsb)) & 0xFF);
tomoya123 0:8d235efb1150 286 a_u16[0]=a1[0];
tomoya123 0:8d235efb1150 287 a_u16[1]=a1[1];
tomoya123 0:8d235efb1150 288 a_u16[2]=a2[0];
tomoya123 0:8d235efb1150 289 a_u16[3]=a2[1];
tomoya123 0:8d235efb1150 290 *dsize = 4;
tomoya123 0:8d235efb1150 291 }
tomoya123 0:8d235efb1150 292
tomoya123 0:8d235efb1150 293 void HeptaAccel::z_u16(char* a_u16, int *dsize)
tomoya123 0:8d235efb1150 294 {
tomoya123 0:8d235efb1150 295 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:8d235efb1150 296 accel.start();
tomoya123 0:8d235efb1150 297 accel.write(addr);
tomoya123 0:8d235efb1150 298 accel.write(0x05);
tomoya123 0:8d235efb1150 299 accel.start();
tomoya123 0:8d235efb1150 300 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 301 _zmsb = accel.read(0);
tomoya123 0:8d235efb1150 302 accel.stop();
tomoya123 0:8d235efb1150 303 accel.start();
tomoya123 0:8d235efb1150 304 accel.write(addr);
tomoya123 0:8d235efb1150 305 accel.write(0x06);
tomoya123 0:8d235efb1150 306 accel.start();
tomoya123 0:8d235efb1150 307 accel.write(addr|0x01);
tomoya123 0:8d235efb1150 308 _zlsb = accel.read(0);
tomoya123 0:8d235efb1150 309 accel.stop();
tomoya123 0:8d235efb1150 310 sprintf( a1, "%02X", ((_zmsb)) & 0xFF);
tomoya123 0:8d235efb1150 311 sprintf( a2, "%02X", ((_zlsb)) & 0xFF);
tomoya123 0:8d235efb1150 312 a_u16[0]=a1[0];
tomoya123 0:8d235efb1150 313 a_u16[1]=a1[1];
tomoya123 0:8d235efb1150 314 a_u16[2]=a2[0];
tomoya123 0:8d235efb1150 315 a_u16[3]=a2[1];
tomoya123 0:8d235efb1150 316 *dsize = 4;
tomoya123 0:8d235efb1150 317 }