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@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 | */ |
