Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 | */ |