Jim Cooke
/
Hat_Board_v5_1
Slight Mod
Fork of Hat_Board_v5 by
main.cpp@3:8334f137c151, 2014-03-21 (annotated)
- Committer:
- drnow
- Date:
- Fri Mar 21 01:13:05 2014 +0000
- Revision:
- 3:8334f137c151
- Parent:
- 2:3a8cd127b72a
- Child:
- 4:e9df42113893
working, trimmed version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
drnow | 0:34bad5aca893 | 1 | //Hat Board Test by James Cooke 3/18/2014 |
drnow | 0:34bad5aca893 | 2 | //Goal of program: read and output data from LIS3DH accelerometer |
drnow | 0:34bad5aca893 | 3 | //Started with Si_4088_PC working program: able to get data from Si1142 on new hat board |
drnow | 0:34bad5aca893 | 4 | |
drnow | 0:34bad5aca893 | 5 | #include "mbed.h" |
drnow | 0:34bad5aca893 | 6 | #include "SI_LIS.h" |
drnow | 0:34bad5aca893 | 7 | #include <time.h> |
drnow | 0:34bad5aca893 | 8 | |
drnow | 0:34bad5aca893 | 9 | DigitalOut myled3(LED3); |
drnow | 0:34bad5aca893 | 10 | DigitalOut myled4(LED4); |
drnow | 0:34bad5aca893 | 11 | Serial pc(USBTX,USBRX); |
drnow | 0:34bad5aca893 | 12 | DigitalIn int_pin(p8); |
drnow | 0:34bad5aca893 | 13 | Timer t; |
drnow | 0:34bad5aca893 | 14 | |
drnow | 0:34bad5aca893 | 15 | int reading_IR,reading_660,LSB,MSB; |
drnow | 0:34bad5aca893 | 16 | char rx_data[4]; |
drnow | 1:2efeed26d93a | 17 | char accel_data[6]; |
drnow | 0:34bad5aca893 | 18 | char temp_val; |
drnow | 3:8334f137c151 | 19 | short int dataX; // short int: 16 bits. This allows easy negative results |
drnow | 3:8334f137c151 | 20 | short int dataY; // short int: 16 bits. This allows easy negative results |
drnow | 3:8334f137c151 | 21 | short int dataZ; // short int: 16 bits. This allows easy negative results |
drnow | 2:3a8cd127b72a | 22 | float t_msec; |
drnow | 3:8334f137c151 | 23 | float dataX_fl; |
drnow | 3:8334f137c151 | 24 | float dataY_fl; |
drnow | 3:8334f137c151 | 25 | float dataZ_fl; |
drnow | 3:8334f137c151 | 26 | float accel_fl; |
drnow | 0:34bad5aca893 | 27 | |
drnow | 0:34bad5aca893 | 28 | int main() |
drnow | 0:34bad5aca893 | 29 | { |
drnow | 3:8334f137c151 | 30 | // To test: Block data update (CTRL_REG4); 1.25 KHz data; low power vs normal power |
drnow | 0:34bad5aca893 | 31 | |
drnow | 0:34bad5aca893 | 32 | myled4 = 0; // ODD: if this line not included, there is a compiler "internal error" |
drnow | 3:8334f137c151 | 33 | pc.baud(460800); |
drnow | 2:3a8cd127b72a | 34 | Init_Accel(); // starts LIS3DH |
drnow | 2:3a8cd127b72a | 35 | restart(); // starts Si1142 |
drnow | 0:34bad5aca893 | 36 | |
drnow | 2:3a8cd127b72a | 37 | wait_ms(30); |
drnow | 2:3a8cd127b72a | 38 | command (PS_AUTO); //start measuring |
drnow | 2:3a8cd127b72a | 39 | wait (0.5); |
drnow | 0:34bad5aca893 | 40 | |
drnow | 2:3a8cd127b72a | 41 | while(1) { |
drnow | 2:3a8cd127b72a | 42 | if(!int_pin) { |
drnow | 2:3a8cd127b72a | 43 | t.reset(); |
drnow | 2:3a8cd127b72a | 44 | t.start(); |
drnow | 1:2efeed26d93a | 45 | |
drnow | 2:3a8cd127b72a | 46 | write_reg(IRQ_STATUS,0x04); // clear the interrupt. |
drnow | 1:2efeed26d93a | 47 | |
drnow | 2:3a8cd127b72a | 48 | read_reg2(PS1_DATA0); |
drnow | 3:8334f137c151 | 49 | reading_IR = rx_data[1] << 8 | rx_data[0]; |
drnow | 3:8334f137c151 | 50 | reading_660 = rx_data[3] << 8 | rx_data[1]; |
drnow | 1:2efeed26d93a | 51 | |
drnow | 2:3a8cd127b72a | 52 | pc.printf ("%d, %d, ", reading_IR,reading_660); |
drnow | 0:34bad5aca893 | 53 | |
drnow | 2:3a8cd127b72a | 54 | Get_Accel_Reg_6 (0x28); |
drnow | 0:34bad5aca893 | 55 | |
drnow | 3:8334f137c151 | 56 | dataX = accel_data[1] << 8 | accel_data[0]; |
drnow | 3:8334f137c151 | 57 | dataX_fl = (float) dataX; |
drnow | 3:8334f137c151 | 58 | dataY = accel_data[3] << 8 | accel_data[2]; |
drnow | 3:8334f137c151 | 59 | dataY_fl = (float) dataY; |
drnow | 3:8334f137c151 | 60 | dataZ = accel_data[5] << 8 | accel_data[4]; |
drnow | 3:8334f137c151 | 61 | dataZ_fl = (float) dataZ; |
drnow | 3:8334f137c151 | 62 | accel_fl = sqrt( (dataX_fl*dataX_fl) + (dataY_fl*dataY_fl) + (dataZ_fl*dataZ_fl) ); |
drnow | 3:8334f137c151 | 63 | pc.printf ("%6.0f ",accel_fl); |
drnow | 0:34bad5aca893 | 64 | |
drnow | 2:3a8cd127b72a | 65 | t.stop(); |
drnow | 2:3a8cd127b72a | 66 | t_msec = t.read() * 1000; |
drnow | 3:8334f137c151 | 67 | printf("%6.3f msec\n", t_msec); |
drnow | 2:3a8cd127b72a | 68 | } |
drnow | 2:3a8cd127b72a | 69 | } |
drnow | 0:34bad5aca893 | 70 | } |
drnow | 0:34bad5aca893 | 71 | /* |
drnow | 0:34bad5aca893 | 72 | Notes on RJ-45: Pin 1: Vcc Pin 2: GND Pin 3: SDA > 9 on 4088 |
drnow | 0:34bad5aca893 | 73 | Pin 4: SCL >> 10 on 4088 Pin 6: INT > 8 on 4088 |
drnow | 0:34bad5aca893 | 74 | |
drnow | 0:34bad5aca893 | 75 | Bluetooth: Tx on 4088: Pin 37 >> RX Rx on 4088: Pin 31 >> TX |
drnow | 0:34bad5aca893 | 76 | PC COMM port on Square board: 12 |
drnow | 0:34bad5aca893 | 77 | |
drnow | 0:34bad5aca893 | 78 | */ |