Jim Cooke
/
Hat_Board_v5_1
Slight Mod
Fork of Hat_Board_v5 by
main.cpp@2:3a8cd127b72a, 2014-03-20 (annotated)
- Committer:
- drnow
- Date:
- Thu Mar 20 09:49:36 2014 +0000
- Revision:
- 2:3a8cd127b72a
- Parent:
- 1:2efeed26d93a
- Child:
- 3:8334f137c151
Cleaned up, sends 2 light and 3 accel, with timing data.
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 | // Check PS_ADC_COUNTER. It's probably wrong. |
drnow | 0:34bad5aca893 | 6 | |
drnow | 0:34bad5aca893 | 7 | #include "mbed.h" |
drnow | 0:34bad5aca893 | 8 | #include "SI_LIS.h" |
drnow | 0:34bad5aca893 | 9 | #include <time.h> |
drnow | 0:34bad5aca893 | 10 | |
drnow | 0:34bad5aca893 | 11 | DigitalOut myled3(LED3); |
drnow | 0:34bad5aca893 | 12 | DigitalOut myled4(LED4); |
drnow | 0:34bad5aca893 | 13 | Serial pc(USBTX,USBRX); |
drnow | 0:34bad5aca893 | 14 | DigitalIn int_pin(p8); |
drnow | 0:34bad5aca893 | 15 | Timer t; |
drnow | 0:34bad5aca893 | 16 | |
drnow | 0:34bad5aca893 | 17 | int reading_IR,reading_660,LSB,MSB; |
drnow | 0:34bad5aca893 | 18 | char rx_data[4]; |
drnow | 1:2efeed26d93a | 19 | char accel_data[6]; |
drnow | 0:34bad5aca893 | 20 | char temp_val; |
drnow | 0:34bad5aca893 | 21 | short int temp_dataX; // short int: 16 bits. This allows easy negative results |
drnow | 0:34bad5aca893 | 22 | short int temp_dataY; // short int: 16 bits. This allows easy negative results |
drnow | 0:34bad5aca893 | 23 | short int temp_dataZ; // short int: 16 bits. This allows easy negative results |
drnow | 2:3a8cd127b72a | 24 | float t_msec; |
drnow | 0:34bad5aca893 | 25 | |
drnow | 0:34bad5aca893 | 26 | int main() |
drnow | 0:34bad5aca893 | 27 | { |
drnow | 0:34bad5aca893 | 28 | unsigned char LowB_IR,HighB_IR,LowB_660,HighB_660; |
drnow | 0:34bad5aca893 | 29 | |
drnow | 0:34bad5aca893 | 30 | myled4 = 0; // ODD: if this line not included, there is a compiler "internal error" |
drnow | 0:34bad5aca893 | 31 | pc.baud(230400); |
drnow | 2:3a8cd127b72a | 32 | Init_Accel(); // starts LIS3DH |
drnow | 2:3a8cd127b72a | 33 | restart(); // starts Si1142 |
drnow | 0:34bad5aca893 | 34 | |
drnow | 2:3a8cd127b72a | 35 | wait_ms(30); |
drnow | 2:3a8cd127b72a | 36 | command (PS_AUTO); //start measuring |
drnow | 2:3a8cd127b72a | 37 | wait (0.5); |
drnow | 0:34bad5aca893 | 38 | |
drnow | 2:3a8cd127b72a | 39 | while(1) { |
drnow | 2:3a8cd127b72a | 40 | if(!int_pin) { |
drnow | 0:34bad5aca893 | 41 | |
drnow | 2:3a8cd127b72a | 42 | myled3 = !myled3; // LED on mbed, to follow along |
drnow | 0:34bad5aca893 | 43 | |
drnow | 2:3a8cd127b72a | 44 | t.reset(); |
drnow | 2:3a8cd127b72a | 45 | t.start(); |
drnow | 1:2efeed26d93a | 46 | |
drnow | 2:3a8cd127b72a | 47 | write_reg(IRQ_STATUS,0x04); // clear the interrupt. |
drnow | 1:2efeed26d93a | 48 | |
drnow | 2:3a8cd127b72a | 49 | read_reg2(PS1_DATA0); |
drnow | 2:3a8cd127b72a | 50 | LowB_IR = rx_data[0]; |
drnow | 2:3a8cd127b72a | 51 | HighB_IR = rx_data[1]; |
drnow | 0:34bad5aca893 | 52 | |
drnow | 2:3a8cd127b72a | 53 | LowB_660 = rx_data[2]; |
drnow | 2:3a8cd127b72a | 54 | HighB_660 = rx_data[3]; |
drnow | 1:2efeed26d93a | 55 | |
drnow | 2:3a8cd127b72a | 56 | reading_IR = (HighB_IR * 256) + LowB_IR; |
drnow | 2:3a8cd127b72a | 57 | reading_660 = (HighB_660 * 256) + LowB_660; |
drnow | 1:2efeed26d93a | 58 | |
drnow | 2:3a8cd127b72a | 59 | pc.printf ("%d, %d, ", reading_IR,reading_660); |
drnow | 0:34bad5aca893 | 60 | |
drnow | 2:3a8cd127b72a | 61 | Get_Accel_Reg_6 (0x28); |
drnow | 0:34bad5aca893 | 62 | |
drnow | 2:3a8cd127b72a | 63 | temp_dataX = (accel_data[1] * 256) + accel_data[0]; |
drnow | 2:3a8cd127b72a | 64 | pc.printf ("%d, ",temp_dataX); |
drnow | 0:34bad5aca893 | 65 | |
drnow | 2:3a8cd127b72a | 66 | temp_dataY = (accel_data[3] * 256) + accel_data[2]; |
drnow | 2:3a8cd127b72a | 67 | pc.printf ("%d, ",temp_dataY); |
drnow | 0:34bad5aca893 | 68 | |
drnow | 2:3a8cd127b72a | 69 | temp_dataZ = (accel_data[5] * 256) + accel_data[4]; |
drnow | 2:3a8cd127b72a | 70 | pc.printf ("%d, ",temp_dataZ); |
drnow | 0:34bad5aca893 | 71 | |
drnow | 2:3a8cd127b72a | 72 | t.stop(); |
drnow | 2:3a8cd127b72a | 73 | t_msec = t.read() * 1000; |
drnow | 2:3a8cd127b72a | 74 | printf("%4.1f msec\n", t_msec); |
drnow | 2:3a8cd127b72a | 75 | } |
drnow | 2:3a8cd127b72a | 76 | } |
drnow | 0:34bad5aca893 | 77 | |
drnow | 0:34bad5aca893 | 78 | |
drnow | 0:34bad5aca893 | 79 | } |
drnow | 0:34bad5aca893 | 80 | /* |
drnow | 0:34bad5aca893 | 81 | Notes on RJ-45: Pin 1: Vcc Pin 2: GND Pin 3: SDA > 9 on 4088 |
drnow | 0:34bad5aca893 | 82 | Pin 4: SCL >> 10 on 4088 Pin 6: INT > 8 on 4088 |
drnow | 0:34bad5aca893 | 83 | |
drnow | 0:34bad5aca893 | 84 | Bluetooth: Tx on 4088: Pin 37 >> RX Rx on 4088: Pin 31 >> TX |
drnow | 0:34bad5aca893 | 85 | PC COMM port on Square board: 12 |
drnow | 0:34bad5aca893 | 86 | |
drnow | 0:34bad5aca893 | 87 | */ |