Slight Mod

Dependencies:   mbed-dsp mbed

Fork of Hat_Board_v5 by John Scharf

Committer:
drnow
Date:
Thu Mar 20 09:03:12 2014 +0000
Revision:
1:2efeed26d93a
Parent:
0:34bad5aca893
Child:
2:3a8cd127b72a
X,Y,Z work.  Now needs clean up.

Who changed what in which revision?

UserRevisionLine numberNew 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 0:34bad5aca893 19 char accel_2_data[2];
drnow 1:2efeed26d93a 20 char accel_data[6];
drnow 0:34bad5aca893 21 char temp_val;
drnow 0:34bad5aca893 22 short int temp_dataX; // short int: 16 bits. This allows easy negative results
drnow 0:34bad5aca893 23 short int temp_dataY; // short int: 16 bits. This allows easy negative results
drnow 0:34bad5aca893 24 short int temp_dataZ; // short int: 16 bits. This allows easy negative results
drnow 0:34bad5aca893 25
drnow 0:34bad5aca893 26 /* From AccelWaveForms
drnow 0:34bad5aca893 27 In Loop:
drnow 0:34bad5aca893 28 */
drnow 0:34bad5aca893 29
drnow 0:34bad5aca893 30 int main()
drnow 0:34bad5aca893 31 {
drnow 0:34bad5aca893 32 unsigned char LowB_IR,HighB_IR,LowB_660,HighB_660;
drnow 0:34bad5aca893 33 char Reg_Val = 0x00;
drnow 0:34bad5aca893 34 char Reg_Num;
drnow 0:34bad5aca893 35
drnow 0:34bad5aca893 36 myled4 = 0; // ODD: if this line not included, there is a compiler "internal error"
drnow 0:34bad5aca893 37 pc.baud(230400);
drnow 0:34bad5aca893 38 i2c_start(); //sets i2c bus at 400,000. Also set by photodiode setup/reset
drnow 0:34bad5aca893 39
drnow 0:34bad5aca893 40 Reg_Num = 0x20; // CTRL_REG1
drnow 0:34bad5aca893 41 Reg_Val = 0x57; // Nib 1 of 0101: Normal mode, 100 Hz; Nib 2 of 0111: Normal mode, XYZ enabled
drnow 0:34bad5aca893 42 Init_Accel (Reg_Num, Reg_Val);
drnow 0:34bad5aca893 43
drnow 0:34bad5aca893 44 wait(0.050); // Delay needed, or 2nd write doesn't work
drnow 0:34bad5aca893 45
drnow 0:34bad5aca893 46 Reg_Num = 0x21; // CTRL_REG2
drnow 0:34bad5aca893 47 Reg_Val = 0xA0; // 7-6 10: Normal filter mode; 5-4 10: Cut off freq; 3-0 0000: bypass interrupts
drnow 0:34bad5aca893 48 // High-pass filter bits 5-4: @ 100 Hz: 00 - 2Hz 01 - 1Hz 10- 0.5Hz 11- 0.2Hz
drnow 0:34bad5aca893 49 Init_Accel (Reg_Num, Reg_Val);
drnow 0:34bad5aca893 50 wait(0.050); // Delay needed?
drnow 0:34bad5aca893 51
drnow 0:34bad5aca893 52 pc.printf ("Hello\n");
drnow 0:34bad5aca893 53
drnow 0:34bad5aca893 54 Get_Accel_Register (0x0F);
drnow 1:2efeed26d93a 55 pc.printf ("I am: %x",accel_data[0]); //in hex
drnow 0:34bad5aca893 56
drnow 0:34bad5aca893 57 while (1) {
drnow 1:2efeed26d93a 58
drnow 1:2efeed26d93a 59 Get_Accel_Reg_6 (0x28);
drnow 1:2efeed26d93a 60 LSB = accel_data[0];
drnow 1:2efeed26d93a 61 MSB = accel_data[1];
drnow 0:34bad5aca893 62 temp_dataX = (MSB * 256) + LSB;
drnow 1:2efeed26d93a 63 pc.printf ("%d, ",temp_dataX);
drnow 1:2efeed26d93a 64
drnow 1:2efeed26d93a 65 LSB = accel_data[2];
drnow 1:2efeed26d93a 66 MSB = accel_data[3];
drnow 1:2efeed26d93a 67 temp_dataY = (MSB * 256) + LSB;
drnow 1:2efeed26d93a 68 pc.printf ("%d, ",temp_dataY);
drnow 0:34bad5aca893 69
drnow 1:2efeed26d93a 70 LSB = accel_data[4];
drnow 1:2efeed26d93a 71 MSB = accel_data[5];
drnow 1:2efeed26d93a 72 temp_dataZ = (MSB * 256) + LSB;
drnow 1:2efeed26d93a 73 pc.printf ("%d\n",temp_dataZ);
drnow 1:2efeed26d93a 74
drnow 1:2efeed26d93a 75
drnow 0:34bad5aca893 76 wait(0.02);
drnow 0:34bad5aca893 77 }
drnow 0:34bad5aca893 78 /*
drnow 0:34bad5aca893 79 restart();
drnow 0:34bad5aca893 80 wait_ms(30);
drnow 0:34bad5aca893 81 command (PS_AUTO); //start measuring
drnow 0:34bad5aca893 82 wait (0.5);
drnow 0:34bad5aca893 83
drnow 0:34bad5aca893 84 while(1) {
drnow 0:34bad5aca893 85 if(!int_pin) {
drnow 0:34bad5aca893 86
drnow 0:34bad5aca893 87 myled3 = !myled3; // LED on mbed, to follow along
drnow 0:34bad5aca893 88
drnow 0:34bad5aca893 89 // t.reset();
drnow 0:34bad5aca893 90 // t.start();
drnow 0:34bad5aca893 91 write_reg(IRQ_STATUS,0x04); // clear the interrupt.
drnow 0:34bad5aca893 92
drnow 0:34bad5aca893 93 read_reg2(PS1_DATA0);
drnow 0:34bad5aca893 94 LowB_IR = rx_data[0];
drnow 0:34bad5aca893 95 HighB_IR = rx_data[1];
drnow 0:34bad5aca893 96
drnow 0:34bad5aca893 97 LowB_660 = rx_data[2];
drnow 0:34bad5aca893 98 HighB_660 = rx_data[3];
drnow 0:34bad5aca893 99
drnow 0:34bad5aca893 100 reading_IR = (HighB_IR * 256) + LowB_IR;
drnow 0:34bad5aca893 101 reading_660 = (HighB_660 * 256) + LowB_660;
drnow 0:34bad5aca893 102
drnow 0:34bad5aca893 103 pc.printf ("%d,%d\n", reading_IR,reading_660);
drnow 0:34bad5aca893 104 }
drnow 0:34bad5aca893 105 }
drnow 0:34bad5aca893 106 */
drnow 0:34bad5aca893 107
drnow 0:34bad5aca893 108 }
drnow 0:34bad5aca893 109 /*
drnow 0:34bad5aca893 110 Notes on RJ-45: Pin 1: Vcc Pin 2: GND Pin 3: SDA > 9 on 4088
drnow 0:34bad5aca893 111 Pin 4: SCL >> 10 on 4088 Pin 6: INT > 8 on 4088
drnow 0:34bad5aca893 112
drnow 0:34bad5aca893 113 Bluetooth: Tx on 4088: Pin 37 >> RX Rx on 4088: Pin 31 >> TX
drnow 0:34bad5aca893 114 PC COMM port on Square board: 12
drnow 0:34bad5aca893 115
drnow 0:34bad5aca893 116 */