Minor fixes

Dependencies:   LSM9DS1_Library SDFileSystem mbed nrf51_rtc

Fork of LSM303DLHTest by Toshihisa T

Committer:
afmiee
Date:
Wed Jul 20 21:39:19 2016 +0000
Revision:
8:8f4d7f1c588f
Parent:
7:cbfdcc57f110
Child:
9:61fcd186ac50
Have the interrupot pins INT1 and INT2 working for Data ready on accelerometer and on gyroscope respectively.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
afmiee 5:b1a689c55f59 1 // Latch Inc.
afmiee 5:b1a689c55f59 2 // Antonio F Mondragon
afmiee 5:b1a689c55f59 3 // 20160714
afmiee 5:b1a689c55f59 4 // for the Adafruit 9DOF Modulke and the Sparkfun microSD card shield
tosihisa 0:750784997b84 5
tosihisa 0:750784997b84 6 #include "mbed.h"
afmiee 6:9db9f4bfaf98 7 #include "LSM9DS1.h"
afmiee 5:b1a689c55f59 8 #include "SDFileSystem.h"
afmiee 5:b1a689c55f59 9 #include "nrf51_rtc.h"
afmiee 5:b1a689c55f59 10
afmiee 5:b1a689c55f59 11 #define M_PI 3.14158
afmiee 5:b1a689c55f59 12
afmiee 5:b1a689c55f59 13 // Create objects
afmiee 5:b1a689c55f59 14 Serial debug(USBTX,USBRX);
afmiee 5:b1a689c55f59 15 // For Nordic
afmiee 6:9db9f4bfaf98 16 LSM9DS1 lol(p30, p7, 0xD6, 0x3C);
afmiee 7:cbfdcc57f110 17 I2C i2c(p30, p7);
afmiee 5:b1a689c55f59 18 // Create the SD filesystem
afmiee 5:b1a689c55f59 19 SDFileSystem sd(p25, p28, p29, p20, "sd"); // MOSI, MISO, SCLK, SSEL
afmiee 5:b1a689c55f59 20
afmiee 5:b1a689c55f59 21 // Create a ticker to use the nRF51 RTC
afmiee 5:b1a689c55f59 22 Ticker flipper;
afmiee 5:b1a689c55f59 23
afmiee 5:b1a689c55f59 24 // Assign interrupts to switches
afmiee 5:b1a689c55f59 25 InterruptIn btn1(p17); // Start sampling
afmiee 5:b1a689c55f59 26 InterruptIn btn2(p18); // Stop sampoling
afmiee 5:b1a689c55f59 27
afmiee 5:b1a689c55f59 28 // LED definitions
afmiee 5:b1a689c55f59 29 DigitalOut led1(LED1);
afmiee 5:b1a689c55f59 30 DigitalOut led2(LED2);
afmiee 5:b1a689c55f59 31
afmiee 5:b1a689c55f59 32 // Global variables
afmiee 5:b1a689c55f59 33 int start = 0;
afmiee 5:b1a689c55f59 34 int stop = 0;
afmiee 5:b1a689c55f59 35
tosihisa 0:750784997b84 36
afmiee 5:b1a689c55f59 37 // Generated when button 1 is pressed on rising edge START
afmiee 5:b1a689c55f59 38 void start_smpl()
afmiee 5:b1a689c55f59 39 {
afmiee 5:b1a689c55f59 40 start = 1;
afmiee 5:b1a689c55f59 41 stop = 0;
afmiee 5:b1a689c55f59 42 }
afmiee 5:b1a689c55f59 43
afmiee 5:b1a689c55f59 44 // Generated when button 1 is pressed on rising edge STOP
afmiee 5:b1a689c55f59 45 void stop_smpl()
afmiee 5:b1a689c55f59 46 {
afmiee 5:b1a689c55f59 47 stop = 1;
afmiee 5:b1a689c55f59 48 start = 0;
afmiee 5:b1a689c55f59 49 }
afmiee 5:b1a689c55f59 50
afmiee 7:cbfdcc57f110 51 void parp( int times )
afmiee 7:cbfdcc57f110 52 {
afmiee 7:cbfdcc57f110 53 int i;
afmiee 7:cbfdcc57f110 54 for( i = 0; i < times; i++) {
afmiee 7:cbfdcc57f110 55 led1 = 0;
afmiee 7:cbfdcc57f110 56 wait( 0.05);
afmiee 7:cbfdcc57f110 57 led1 = 1;
afmiee 7:cbfdcc57f110 58 wait( 0.05);
afmiee 7:cbfdcc57f110 59 }
afmiee 7:cbfdcc57f110 60 led2 = 1;
afmiee 7:cbfdcc57f110 61 }
afmiee 7:cbfdcc57f110 62 // Flipped every second
afmiee 5:b1a689c55f59 63 void flip()
afmiee 5:b1a689c55f59 64 {
afmiee 7:cbfdcc57f110 65 led2 = 0;
afmiee 7:cbfdcc57f110 66 wait(0.01);
afmiee 7:cbfdcc57f110 67 led2 = 1;
afmiee 7:cbfdcc57f110 68 }
afmiee 7:cbfdcc57f110 69
afmiee 7:cbfdcc57f110 70
afmiee 7:cbfdcc57f110 71 uint8_t I2CreadByte(uint8_t address, uint8_t subAddress)
afmiee 7:cbfdcc57f110 72 {
afmiee 7:cbfdcc57f110 73 char data;
afmiee 7:cbfdcc57f110 74 char temp= subAddress;
afmiee 7:cbfdcc57f110 75
afmiee 7:cbfdcc57f110 76 i2c.write(address, &temp, 1);
afmiee 7:cbfdcc57f110 77 int a = i2c.read(address, &data, 1);
afmiee 7:cbfdcc57f110 78 return data;
afmiee 5:b1a689c55f59 79 }
afmiee 5:b1a689c55f59 80
afmiee 8:8f4d7f1c588f 81 uint8_t I2CreadBytes(uint8_t address, uint8_t subAddress, uint8_t * dest, uint8_t count)
afmiee 8:8f4d7f1c588f 82 {
afmiee 8:8f4d7f1c588f 83 int i;
afmiee 8:8f4d7f1c588f 84 char temp_dest[count];
afmiee 8:8f4d7f1c588f 85 char temp = subAddress;
afmiee 8:8f4d7f1c588f 86 i2c.write(address, &temp, 1);
afmiee 8:8f4d7f1c588f 87 i2c.read(address, temp_dest, count);
afmiee 8:8f4d7f1c588f 88
afmiee 8:8f4d7f1c588f 89 //i2c doesn't take uint8_ts, but rather chars so do this nasty af conversion
afmiee 8:8f4d7f1c588f 90 for (i=0; i < count; i++) {
afmiee 8:8f4d7f1c588f 91 dest[i] = temp_dest[i];
afmiee 8:8f4d7f1c588f 92 }
afmiee 8:8f4d7f1c588f 93 return count;
afmiee 8:8f4d7f1c588f 94 }
afmiee 8:8f4d7f1c588f 95
afmiee 8:8f4d7f1c588f 96
afmiee 8:8f4d7f1c588f 97
afmiee 8:8f4d7f1c588f 98 void DumpAccelGyroRegs( void )
afmiee 8:8f4d7f1c588f 99 {
afmiee 8:8f4d7f1c588f 100 char dest[ 0x34 ];
afmiee 8:8f4d7f1c588f 101 int i;
afmiee 8:8f4d7f1c588f 102
afmiee 8:8f4d7f1c588f 103 debug.printf("\n\r");
afmiee 8:8f4d7f1c588f 104 //2CreadBytes( 0xD6, 0x04, (uint8_t *)dest, 0x34 );
afmiee 8:8f4d7f1c588f 105
afmiee 8:8f4d7f1c588f 106
afmiee 8:8f4d7f1c588f 107 for( i = 0; i < 0x34; i++ ) {
afmiee 8:8f4d7f1c588f 108 I2CreadByte(0xD6, i + 0x04);
afmiee 8:8f4d7f1c588f 109 switch( i + 0x04 ) {
afmiee 8:8f4d7f1c588f 110 case 0x04:
afmiee 8:8f4d7f1c588f 111 debug.printf("ACT_THS 0x04 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 112 break;
afmiee 8:8f4d7f1c588f 113 case 0x05:
afmiee 8:8f4d7f1c588f 114 debug.printf("ACT_DUR 0x05 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 115 break;
afmiee 8:8f4d7f1c588f 116 case 0x06:
afmiee 8:8f4d7f1c588f 117 debug.printf("INT_GEN_CFG_XL 0x06 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 118 break;
afmiee 8:8f4d7f1c588f 119 case 0x07:
afmiee 8:8f4d7f1c588f 120 debug.printf("INT_GEN_THS_X_XL 0x07 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 121 break;
afmiee 8:8f4d7f1c588f 122 case 0x08:
afmiee 8:8f4d7f1c588f 123 debug.printf("INT_GEN_THS_Y_XL 0x08 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 124 break;
afmiee 8:8f4d7f1c588f 125 case 0x09:
afmiee 8:8f4d7f1c588f 126 debug.printf("INT_GEN_THS_Z_XL 0x09 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 127 break;
afmiee 8:8f4d7f1c588f 128 case 0x0A:
afmiee 8:8f4d7f1c588f 129 debug.printf("INT_GEN_DUR_XL 0x0A %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 130 break;
afmiee 8:8f4d7f1c588f 131 case 0x0B:
afmiee 8:8f4d7f1c588f 132 debug.printf("REFERENCE_G 0x0B %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 133 break;
afmiee 8:8f4d7f1c588f 134 case 0x0C:
afmiee 8:8f4d7f1c588f 135 debug.printf("INT1_CTRL 0x0C %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 136 break;
afmiee 8:8f4d7f1c588f 137 case 0x0D:
afmiee 8:8f4d7f1c588f 138 debug.printf("INT2_CTRL 0x0D %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 139 break;
afmiee 8:8f4d7f1c588f 140 case 0x0F:
afmiee 8:8f4d7f1c588f 141 debug.printf("WHO_AM_I_XG 0x0F %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 142 break;
afmiee 8:8f4d7f1c588f 143 case 0x10:
afmiee 8:8f4d7f1c588f 144 debug.printf("CTRL_REG1_G 0x10 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 145 break;
afmiee 8:8f4d7f1c588f 146 case 0x11:
afmiee 8:8f4d7f1c588f 147 debug.printf("CTRL_REG2_G 0x11 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 148 break;
afmiee 8:8f4d7f1c588f 149 case 0x12:
afmiee 8:8f4d7f1c588f 150 debug.printf("CTRL_REG3_G 0x12 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 151 break;
afmiee 8:8f4d7f1c588f 152 case 0x13:
afmiee 8:8f4d7f1c588f 153 debug.printf("ORIENT_CFG_G 0x13 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 154 break;
afmiee 8:8f4d7f1c588f 155 case 0x14:
afmiee 8:8f4d7f1c588f 156 debug.printf("INT_GEN_SRC_G 0x14 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 157 break;
afmiee 8:8f4d7f1c588f 158 case 0x15:
afmiee 8:8f4d7f1c588f 159 debug.printf("OUT_TEMP_L 0x15 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 160 break;
afmiee 8:8f4d7f1c588f 161 case 0x16:
afmiee 8:8f4d7f1c588f 162 debug.printf("OUT_TEMP_H 0x16 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 163 break;
afmiee 8:8f4d7f1c588f 164 case 0x17:
afmiee 8:8f4d7f1c588f 165 debug.printf("STATUS_REG_0 0x17 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 166 break;
afmiee 8:8f4d7f1c588f 167 case 0x18:
afmiee 8:8f4d7f1c588f 168 debug.printf("OUT_X_L_G 0x18 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 169 break;
afmiee 8:8f4d7f1c588f 170 case 0x19:
afmiee 8:8f4d7f1c588f 171 debug.printf("OUT_X_H_G 0x19 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 172 break;
afmiee 8:8f4d7f1c588f 173 case 0x1A:
afmiee 8:8f4d7f1c588f 174 debug.printf("OUT_Y_L_G 0x1A %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 175 break;
afmiee 8:8f4d7f1c588f 176 case 0x1B:
afmiee 8:8f4d7f1c588f 177 debug.printf("OUT_Y_H_G 0x1B %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 178 break;
afmiee 8:8f4d7f1c588f 179 case 0x1C:
afmiee 8:8f4d7f1c588f 180 debug.printf("OUT_Z_L_G 0x1C %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 181 break;
afmiee 8:8f4d7f1c588f 182 case 0x1D:
afmiee 8:8f4d7f1c588f 183 debug.printf("OUT_Z_H_G 0x1D %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 184 break;
afmiee 8:8f4d7f1c588f 185 case 0x1E:
afmiee 8:8f4d7f1c588f 186 debug.printf("CTRL_REG4 0x1E %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 187 break;
afmiee 8:8f4d7f1c588f 188 case 0x1F:
afmiee 8:8f4d7f1c588f 189 debug.printf("CTRL_REG5_XL 0x1F %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 190 break;
afmiee 8:8f4d7f1c588f 191 case 0x20:
afmiee 8:8f4d7f1c588f 192 debug.printf("CTRL_REG6_XL 0x20 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 193 break;
afmiee 8:8f4d7f1c588f 194 case 0x21:
afmiee 8:8f4d7f1c588f 195 debug.printf("CTRL_REG7_XL 0x21 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 196 break;
afmiee 8:8f4d7f1c588f 197 case 0x22:
afmiee 8:8f4d7f1c588f 198 debug.printf("CTRL_REG8 0x22 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 199 break;
afmiee 8:8f4d7f1c588f 200 case 0x23:
afmiee 8:8f4d7f1c588f 201 debug.printf("CTRL_REG9 0x23 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 202 break;
afmiee 8:8f4d7f1c588f 203 case 0x24:
afmiee 8:8f4d7f1c588f 204 debug.printf("CTRL_REG10 0x24 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 205 break;
afmiee 8:8f4d7f1c588f 206 case 0x26:
afmiee 8:8f4d7f1c588f 207 debug.printf("INT_GEN_SRC_XL 0x26 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 208 break;
afmiee 8:8f4d7f1c588f 209 case 0x27:
afmiee 8:8f4d7f1c588f 210 debug.printf("STATUS_REG_1 0x27 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 211 break;
afmiee 8:8f4d7f1c588f 212 case 0x28:
afmiee 8:8f4d7f1c588f 213 debug.printf("OUT_X_L_XL 0x28 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 214 break;
afmiee 8:8f4d7f1c588f 215 case 0x29:
afmiee 8:8f4d7f1c588f 216 debug.printf("OUT_X_H_XL 0x29 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 217 break;
afmiee 8:8f4d7f1c588f 218 case 0x2A:
afmiee 8:8f4d7f1c588f 219 debug.printf("OUT_Y_L_XL 0x2A %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 220 break;
afmiee 8:8f4d7f1c588f 221 case 0x2B:
afmiee 8:8f4d7f1c588f 222 debug.printf("OUT_Y_H_XL 0x2B %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 223 break;
afmiee 8:8f4d7f1c588f 224 case 0x2C:
afmiee 8:8f4d7f1c588f 225 debug.printf("OUT_Z_L_XL 0x2C %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 226 break;
afmiee 8:8f4d7f1c588f 227 case 0x2D:
afmiee 8:8f4d7f1c588f 228 debug.printf("OUT_Z_H_XL 0x2D %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 229 break;
afmiee 8:8f4d7f1c588f 230 case 0x2E:
afmiee 8:8f4d7f1c588f 231 debug.printf("FIFO_CTRL 0x2E %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 232 break;
afmiee 8:8f4d7f1c588f 233 case 0x2F:
afmiee 8:8f4d7f1c588f 234 debug.printf("FIFO_SRC 0x2F %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 235 break;
afmiee 8:8f4d7f1c588f 236 case 0x30:
afmiee 8:8f4d7f1c588f 237 debug.printf("INT_GEN_CFG_G 0x30 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 238 break;
afmiee 8:8f4d7f1c588f 239 case 0x31:
afmiee 8:8f4d7f1c588f 240 debug.printf("INT_GEN_THS_XH_G 0x31 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 241 break;
afmiee 8:8f4d7f1c588f 242 case 0x32:
afmiee 8:8f4d7f1c588f 243 debug.printf("INT_GEN_THS_XL_G 0x32 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 244 break;
afmiee 8:8f4d7f1c588f 245 case 0x33:
afmiee 8:8f4d7f1c588f 246 debug.printf("INT_GEN_THS_YH_G 0x33 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 247 break;
afmiee 8:8f4d7f1c588f 248 case 0x34:
afmiee 8:8f4d7f1c588f 249 debug.printf("INT_GEN_THS_YL_G 0x34 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 250 break;
afmiee 8:8f4d7f1c588f 251 case 0x35:
afmiee 8:8f4d7f1c588f 252 debug.printf("INT_GEN_THS_ZH_G 0x35 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 253 break;
afmiee 8:8f4d7f1c588f 254 case 0x36:
afmiee 8:8f4d7f1c588f 255 debug.printf("INT_GEN_THS_ZL_G 0x36 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 256 break;
afmiee 8:8f4d7f1c588f 257 case 0x37:
afmiee 8:8f4d7f1c588f 258 debug.printf("INT_GEN_DUR_G 0x37 %02x\n\r", dest[i]);
afmiee 8:8f4d7f1c588f 259 break;
afmiee 8:8f4d7f1c588f 260 default:
afmiee 8:8f4d7f1c588f 261 debug.printf("Register Not Valid 0x%02x\n\r");
afmiee 8:8f4d7f1c588f 262 break;
afmiee 8:8f4d7f1c588f 263 }
afmiee 8:8f4d7f1c588f 264
afmiee 8:8f4d7f1c588f 265 }
afmiee 8:8f4d7f1c588f 266
afmiee 8:8f4d7f1c588f 267
afmiee 8:8f4d7f1c588f 268 }
afmiee 8:8f4d7f1c588f 269
afmiee 8:8f4d7f1c588f 270
afmiee 5:b1a689c55f59 271 int main()
afmiee 5:b1a689c55f59 272 {
afmiee 5:b1a689c55f59 273 led1= 1;
afmiee 5:b1a689c55f59 274 char filename[256];
afmiee 5:b1a689c55f59 275 char secs_str[256];
afmiee 5:b1a689c55f59 276
afmiee 5:b1a689c55f59 277 struct tm t;
afmiee 5:b1a689c55f59 278 time_t seconds;
tosihisa 0:750784997b84 279
afmiee 8:8f4d7f1c588f 280 FILE *fpA;
afmiee 8:8f4d7f1c588f 281 FILE *fpG;
afmiee 8:8f4d7f1c588f 282 FILE *fpM;
afmiee 6:9db9f4bfaf98 283
afmiee 5:b1a689c55f59 284 // Attach functions to interrupts
afmiee 5:b1a689c55f59 285 btn1.rise(&start_smpl);
afmiee 5:b1a689c55f59 286 btn2.rise(&stop_smpl);
afmiee 5:b1a689c55f59 287 flipper.attach(&flip, 1.0); // the address of the function to be attached (flip) and the interval (2 seconds)
afmiee 6:9db9f4bfaf98 288
afmiee 5:b1a689c55f59 289 // Enable serial port
afmiee 5:b1a689c55f59 290 debug.format(8,Serial::None,1);
afmiee 5:b1a689c55f59 291 debug.baud(115200);
afmiee 5:b1a689c55f59 292 debug.printf("LSM303DLH Test\x0d\x0a");
afmiee 5:b1a689c55f59 293
afmiee 6:9db9f4bfaf98 294 // Initialize 9DOF
afmiee 7:cbfdcc57f110 295 //lol.begin();
afmiee 6:9db9f4bfaf98 296 if (!lol.begin()) {
afmiee 6:9db9f4bfaf98 297 debug.printf("Failed to communicate with LSM9DS1.\n");
afmiee 6:9db9f4bfaf98 298 }
afmiee 6:9db9f4bfaf98 299 lol.calibrate();
afmiee 6:9db9f4bfaf98 300
afmiee 8:8f4d7f1c588f 301 lol.configInt(XG_INT1, INT_DRDY_XL, INT_ACTIVE_LOW, INT_PUSH_PULL); //INT1_CTRL (0x0C) + CTRL_REG8 (0x22)
afmiee 8:8f4d7f1c588f 302 lol.configInt(XG_INT2, INT_DRDY_G, INT_ACTIVE_LOW, INT_PUSH_PULL); //INT2_CTRL (0x0D) + CTRL_REG8 (0x22)
afmiee 7:cbfdcc57f110 303
afmiee 7:cbfdcc57f110 304 lol.configAccelInt(YHIE_XL|XHIE_XL, false); // INT_GEN_CFG_XL (06h)
afmiee 7:cbfdcc57f110 305 lol.configAccelThs((uint8_t)0x25, X_AXIS, (uint8_t)0x00, false); // INT_GEN_THS_X_XL (07h)
afmiee 7:cbfdcc57f110 306 lol.configAccelThs((uint8_t)0x25, Y_AXIS, (uint8_t)0x00, false); // INT_GEN_THS_Y_XL (08h)
afmiee 7:cbfdcc57f110 307 lol.configAccelThs((uint8_t)0x25, Z_AXIS, (uint8_t)0x00, false); // INT_GEN_THS_Z_XL (09h)
afmiee 7:cbfdcc57f110 308
afmiee 8:8f4d7f1c588f 309 lol.configGyroInt(ZHIE_G|YHIE_G|XHIE_G, false, false); // INT_GEN_CFG_G (30h)
afmiee 8:8f4d7f1c588f 310 lol.configGyroThs((int16_t )0x300, X_AXIS, (uint8_t) 0x02, false); // INT_GEN_THS_X_G (31h - 32h)
afmiee 8:8f4d7f1c588f 311 lol.configGyroThs((int16_t )0x300, Y_AXIS, (uint8_t) 0x02, false); // INT_GEN_THS_Y_G (33h - 34h)
afmiee 8:8f4d7f1c588f 312 lol.configGyroThs((int16_t )0x300, Z_AXIS, (uint8_t) 0x02, false); // INT_GEN_THS_Z_G (35h - 36h)
afmiee 8:8f4d7f1c588f 313
afmiee 8:8f4d7f1c588f 314
afmiee 7:cbfdcc57f110 315 debug.printf( "\n\r");
afmiee 7:cbfdcc57f110 316 debug.printf( "GyroIntSrc (14h) %02x\n\r", lol.getGyroIntSrc()); // INT_GEN_SRC_G (14h)
afmiee 7:cbfdcc57f110 317 debug.printf( "AccelIntSrc(26h) %02x\n\r", lol.getAccelIntSrc()); // INT_GEN_SRC_XL (26h)
afmiee 7:cbfdcc57f110 318 debug.printf( "MagIntSrc (31h) %02x\n\r", lol.getMagIntSrc()); // INT_SRC_M (31h)
afmiee 7:cbfdcc57f110 319 debug.printf( "Inactivity (17h) %02x\n\r", lol.getInactivity()); // STATUS_REG (17h)
afmiee 7:cbfdcc57f110 320
afmiee 7:cbfdcc57f110 321 debug.printf( "INT1_CTRL (0Ch) %02x\n\r", I2CreadByte(0xD6, 0x0C));
afmiee 8:8f4d7f1c588f 322 debug.printf( "INT2_CTRL (0Dh) %02x\n\r", I2CreadByte(0xD6, 0x0D));
afmiee 7:cbfdcc57f110 323 debug.printf( "CTRL_REG8 (22h) %02x\n\r", I2CreadByte(0xD6, 0x22));
afmiee 8:8f4d7f1c588f 324 debug.printf( "STATUS_REG (27h) %02x\n\r", I2CreadByte(0xD6, 0x27));
afmiee 7:cbfdcc57f110 325 debug.printf( "\n\r");
afmiee 7:cbfdcc57f110 326 debug.printf( "INT_GEN_CFG_XL (06h) %02x\n\r", I2CreadByte(0xD6, 0x06));
afmiee 7:cbfdcc57f110 327 debug.printf( "INT_GEN_SRC_XL (26h) %02x\n\r", I2CreadByte(0xD6, 0x26));
afmiee 7:cbfdcc57f110 328 debug.printf( "INT_GEN_THS_X_XL (07h) %02x\n\r", I2CreadByte(0xD6, 0x07));
afmiee 7:cbfdcc57f110 329 debug.printf( "INT_GEN_THS_Y_XL (08h) %02x\n\r", I2CreadByte(0xD6, 0x08));
afmiee 7:cbfdcc57f110 330 debug.printf( "INT_GEN_THS_Z_XL (09h) %02x\n\r", I2CreadByte(0xD6, 0x09));
afmiee 7:cbfdcc57f110 331 debug.printf( "INT_GEN_DUR_XL (0ah) %02x\n\r", I2CreadByte(0xD6, 0x0a));
afmiee 7:cbfdcc57f110 332 debug.printf( "\n\r");
afmiee 7:cbfdcc57f110 333 debug.printf( "INT_GEN_CFG_G (30h) %02x\n\r", I2CreadByte(0xD6, 0x30));
afmiee 7:cbfdcc57f110 334 debug.printf( "INT_GEN_SRC_G (14h) %02x\n\r", I2CreadByte(0xD6, 0x14));
afmiee 7:cbfdcc57f110 335 debug.printf( "INT_GEN_THS_XH_G (31h) %02x\n\r", I2CreadByte(0xD6, 0x31));
afmiee 7:cbfdcc57f110 336 debug.printf( "INT_GEN_THS_XL_G (32h) %02x\n\r", I2CreadByte(0xD6, 0x32));
afmiee 7:cbfdcc57f110 337 debug.printf( "INT_GEN_THS_YH_G (33h) %02x\n\r", I2CreadByte(0xD6, 0x33));
afmiee 7:cbfdcc57f110 338 debug.printf( "INT_GEN_THS_YL_G (34h) %02x\n\r", I2CreadByte(0xD6, 0x34));
afmiee 7:cbfdcc57f110 339 debug.printf( "INT_GEN_THS_ZH_G (35h) %02x\n\r", I2CreadByte(0xD6, 0x35));
afmiee 7:cbfdcc57f110 340 debug.printf( "INT_GEN_THS_ZL_G (36h) %02x\n\r", I2CreadByte(0xD6, 0x36));
afmiee 7:cbfdcc57f110 341 debug.printf( "INT_GEN_DUR_G (37h) %02x\n\r", I2CreadByte(0xD6, 0x37));
afmiee 7:cbfdcc57f110 342
afmiee 8:8f4d7f1c588f 343 // Dump all registers
afmiee 8:8f4d7f1c588f 344 DumpAccelGyroRegs();
afmiee 6:9db9f4bfaf98 345 // // Initialize current time if needed
afmiee 5:b1a689c55f59 346 // printf("Enter current date and time:\n");
afmiee 5:b1a689c55f59 347 // printf("YYYY MM DD HH MM SS[enter]\n");
afmiee 5:b1a689c55f59 348 // scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday
afmiee 5:b1a689c55f59 349 // , &t.tm_hour, &t.tm_min, &t.tm_sec);
afmiee 5:b1a689c55f59 350
afmiee 5:b1a689c55f59 351 // adjust for tm structure required values
afmiee 5:b1a689c55f59 352 t.tm_year = t.tm_year - 1900;
afmiee 5:b1a689c55f59 353 t.tm_mon = t.tm_mon - 1;
afmiee 5:b1a689c55f59 354
afmiee 5:b1a689c55f59 355 // set the time
afmiee 5:b1a689c55f59 356 rtc.set_time(mktime(&t));
afmiee 5:b1a689c55f59 357
afmiee 5:b1a689c55f59 358 while(1) {
afmiee 5:b1a689c55f59 359 debug.printf("Press Button 1 to Start sampling\n\r");
afmiee 5:b1a689c55f59 360 debug.printf("Press Button 2 to Stop sampling\n\r");
afmiee 5:b1a689c55f59 361 // Check for button 1 pressed
afmiee 5:b1a689c55f59 362 while(!start) {
afmiee 5:b1a689c55f59 363 led1 = 1;
afmiee 5:b1a689c55f59 364 }
afmiee 5:b1a689c55f59 365 // Start sampling
afmiee 7:cbfdcc57f110 366 //led1 = 0;
afmiee 7:cbfdcc57f110 367 parp(5);
afmiee 5:b1a689c55f59 368 debug.printf("Started sampling\n\r");
afmiee 5:b1a689c55f59 369 // Get the time and create a file with the number of seconds in hex appended
afmiee 6:9db9f4bfaf98 370 seconds = rtc.time();
afmiee 5:b1a689c55f59 371 sprintf(secs_str, "%s", ctime(&seconds));
afmiee 5:b1a689c55f59 372 printf("Started at: %s\n\r", secs_str );
afmiee 8:8f4d7f1c588f 373 sprintf(filename, "/sd/latch9DOFA_%08x.csv",seconds);
afmiee 8:8f4d7f1c588f 374 fpA = fopen(filename, "w");
afmiee 5:b1a689c55f59 375 // Verify that file can be created
afmiee 8:8f4d7f1c588f 376 if ( fpA == NULL ) {
afmiee 8:8f4d7f1c588f 377 debug.printf("Cannot create file %s\n\r", filename);
afmiee 8:8f4d7f1c588f 378 wait(0.5);
afmiee 8:8f4d7f1c588f 379 while(1) {
afmiee 8:8f4d7f1c588f 380 led1 = !led1;
afmiee 8:8f4d7f1c588f 381 wait(0.5);
afmiee 8:8f4d7f1c588f 382 }
afmiee 8:8f4d7f1c588f 383 } else
afmiee 8:8f4d7f1c588f 384 debug.printf("File %s created successfully\n\r", filename);
afmiee 8:8f4d7f1c588f 385
afmiee 8:8f4d7f1c588f 386 sprintf(filename, "/sd/latch9DOFG_%08x.csv",seconds);
afmiee 8:8f4d7f1c588f 387 fpG = fopen(filename, "w");
afmiee 8:8f4d7f1c588f 388 // Verify that file can be created
afmiee 8:8f4d7f1c588f 389 if ( fpG == NULL ) {
afmiee 8:8f4d7f1c588f 390 debug.printf("Cannot create file %s\n\r", filename);
afmiee 8:8f4d7f1c588f 391 wait(0.5);
afmiee 8:8f4d7f1c588f 392 while(1) {
afmiee 8:8f4d7f1c588f 393 led1 = !led1;
afmiee 8:8f4d7f1c588f 394 wait(0.5);
afmiee 8:8f4d7f1c588f 395 }
afmiee 8:8f4d7f1c588f 396 } else
afmiee 8:8f4d7f1c588f 397 debug.printf("File %s created successfully\n\r", filename);
afmiee 8:8f4d7f1c588f 398
afmiee 8:8f4d7f1c588f 399 sprintf(filename, "/sd/latch9DOFM_%08x.csv",seconds);
afmiee 8:8f4d7f1c588f 400 fpM = fopen(filename, "w");
afmiee 8:8f4d7f1c588f 401 // Verify that file can be created
afmiee 8:8f4d7f1c588f 402 if ( fpM == NULL ) {
afmiee 5:b1a689c55f59 403 debug.printf("Cannot create file %s\n\r", filename);
afmiee 5:b1a689c55f59 404 wait(0.5);
afmiee 5:b1a689c55f59 405 while(1) {
afmiee 5:b1a689c55f59 406 led1 = !led1;
afmiee 5:b1a689c55f59 407 wait(0.5);
afmiee 5:b1a689c55f59 408 }
afmiee 5:b1a689c55f59 409 } else
afmiee 5:b1a689c55f59 410 debug.printf("File %s created successfully\n\r", filename);
afmiee 6:9db9f4bfaf98 411
afmiee 6:9db9f4bfaf98 412 // Sample until button 2 is pressed
afmiee 5:b1a689c55f59 413 while(!stop) {
afmiee 7:cbfdcc57f110 414 //led1 = 0;
afmiee 8:8f4d7f1c588f 415 //lol.getAccelIntSrc(); // INT_GEN_SRC_XL (26h)
afmiee 8:8f4d7f1c588f 416 //I2CreadByte(0xD6, 0x27);
afmiee 8:8f4d7f1c588f 417 if (lol.accelAvailable()) {
afmiee 8:8f4d7f1c588f 418 lol.readAccel();
afmiee 8:8f4d7f1c588f 419 debug.printf("ACC %d, %d, %d\n\r", lol.ax, lol.ay, lol.az);
afmiee 8:8f4d7f1c588f 420 fprintf(fpA, "%d, %d, %d\n\r", lol.ax, lol.ay, lol.az);
afmiee 8:8f4d7f1c588f 421 }
afmiee 8:8f4d7f1c588f 422 //lol.getMagIntSrc(); // INT_SRC_M (31h)
afmiee 8:8f4d7f1c588f 423 //I2CreadByte(0xD6, 0x27);
afmiee 8:8f4d7f1c588f 424 if ( lol.magAvailable(X_AXIS) && lol.magAvailable(X_AXIS) && lol.magAvailable(X_AXIS)) {
afmiee 8:8f4d7f1c588f 425 lol.readMag();
afmiee 8:8f4d7f1c588f 426 debug.printf("MAG %d, %d, %d\n\r", lol.mx, lol.my, lol.mz);
afmiee 8:8f4d7f1c588f 427 fprintf(fpM, "%d, %d, %d\n\r", lol.mx, lol.my, lol.mz);
afmiee 8:8f4d7f1c588f 428 }
afmiee 8:8f4d7f1c588f 429 //lol.getGyroIntSrc(); // INT_GEN_SRC_G (14h)
afmiee 8:8f4d7f1c588f 430 if ( lol.gyroAvailable()) {
afmiee 8:8f4d7f1c588f 431 lol.readGyro();
afmiee 8:8f4d7f1c588f 432 debug.printf("GYR %d, %d, %d\n\r", lol.gx, lol.gy, lol.gz);
afmiee 8:8f4d7f1c588f 433 fprintf(fpG, "%d, %d, %d\n\r", lol.gx, lol.gy, lol.gz);
afmiee 8:8f4d7f1c588f 434 }
afmiee 8:8f4d7f1c588f 435 //wait(0.1);
afmiee 5:b1a689c55f59 436 }
afmiee 5:b1a689c55f59 437 // Stop Sampling and close file
afmiee 7:cbfdcc57f110 438 parp(10);
afmiee 5:b1a689c55f59 439 led1 = 1;
afmiee 5:b1a689c55f59 440 debug.printf("Stopped sampling\n\r");
afmiee 5:b1a689c55f59 441 debug.printf("Results stored in %s\n\r", filename);
afmiee 8:8f4d7f1c588f 442 fclose(fpA);
afmiee 8:8f4d7f1c588f 443 fclose(fpM);
afmiee 8:8f4d7f1c588f 444 fclose(fpG);
afmiee 6:9db9f4bfaf98 445 }
tosihisa 4:3c677edffb13 446 }
afmiee 7:cbfdcc57f110 447
afmiee 7:cbfdcc57f110 448
afmiee 7:cbfdcc57f110 449