Slight Mod

Dependencies:   mbed-dsp mbed

Fork of Hat_Board_v5 by John Scharf

Committer:
drnow
Date:
Thu Mar 20 02:50:57 2014 +0000
Revision:
0:34bad5aca893
Child:
1:2efeed26d93a
works with x

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