Jim Cooke
/
Hat_Board_v5_1
Slight Mod
Fork of Hat_Board_v5 by
Revision 1:2efeed26d93a, committed 2014-03-20
- Comitter:
- drnow
- Date:
- Thu Mar 20 09:03:12 2014 +0000
- Parent:
- 0:34bad5aca893
- Child:
- 2:3a8cd127b72a
- Commit message:
- X,Y,Z work. Now needs clean up.
Changed in this revision
--- a/SI_LIS.cpp Thu Mar 20 02:50:57 2014 +0000 +++ b/SI_LIS.cpp Thu Mar 20 09:03:12 2014 +0000 @@ -7,7 +7,7 @@ unsigned int IR; extern char rx_data[4]; extern char accel_2_data[2]; -extern char accel_data; +extern char accel_data[6]; void restart() { @@ -104,7 +104,6 @@ return 0; } - char read_reg (/*unsigned*/ char address, int num_data) // Read a register { char tx[1]; @@ -119,7 +118,6 @@ void write_reg(char address, char num_data) // Write a resigter { char tx[2]; - tx[0] = address; tx[1] = num_data; i2c.write((IR_ADDRESS << 1) & 0xFE, tx, 2); @@ -143,7 +141,7 @@ i2c.write((LIS_Addr << 1) & 0xFE , ®, 1 ); // Write register number i2c.read ((LIS_Addr << 1) | 0x01, &data, 1 ); // Receive Byte from Slave - accel_data = data; + accel_data[0] = data; } void Get_Accel_Register_2 (char Reg_Num) // Read 2 registers @@ -159,6 +157,14 @@ i2c.read((LIS_Addr << 1) | 0x01, accel_2_data, 2); } +void Get_Accel_Reg_6 (char Reg_Num) // Read 6 registers +{ + char reg; + reg = Reg_Num | 0x80; // set bit 7 high + i2c.write((LIS_Addr << 1) & 0xFE, ®, 1); + i2c.read((LIS_Addr << 1) | 0x01, accel_data, 6); +} + void i2c_start() // also set by photodiode setup/reset { i2c.frequency(400000);
--- a/SI_LIS.h Thu Mar 20 02:50:57 2014 +0000 +++ b/SI_LIS.h Thu Mar 20 09:03:12 2014 +0000 @@ -158,6 +158,8 @@ void Get_Accel_Register_2 (char Reg_Num); // Read 2 registers +void Get_Accel_Reg_6 (char Reg_Num); // Read 6 registers + void i2c_start(); #endif \ No newline at end of file
--- a/main.cpp Thu Mar 20 02:50:57 2014 +0000 +++ b/main.cpp Thu Mar 20 09:03:12 2014 +0000 @@ -17,25 +17,14 @@ int reading_IR,reading_660,LSB,MSB; char rx_data[4]; char accel_2_data[2]; +char accel_data[6]; char temp_val; -char accel_data; // for getting 8-bit value from accelerometer short int temp_dataX; // short int: 16 bits. This allows easy negative results short int temp_dataY; // short int: 16 bits. This allows easy negative results short int temp_dataZ; // short int: 16 bits. This allows easy negative results /* From AccelWaveForms In Loop: - Get_Accel_Register(0x2A, LIS_Addr); //Y Data Low - LSB = Accel_Data; - Get_Accel_Register(0x2B, LIS_Addr); //Y Data High - MSB = Accel_Data; - temp_dataY = (MSB * 256) + LSB; - - Get_Accel_Register(0x2C, LIS_Addr); //Z Data Low - LSB = Accel_Data; - Get_Accel_Register(0x2D, LIS_Addr); //Z Data High - MSB = Accel_Data; - temp_dataZ = (MSB * 256) + LSB; */ int main() @@ -63,31 +52,27 @@ pc.printf ("Hello\n"); Get_Accel_Register (0x0F); - pc.printf ("I am: %x",accel_data); //in hex + pc.printf ("I am: %x",accel_data[0]); //in hex while (1) { - Get_Accel_Register(0x28); //X Data Low - LSB = accel_data; - Get_Accel_Register(0x29); //X Data High - MSB = accel_data; - temp_dataX = (MSB * 256) + LSB; - pc.printf ("%d ",temp_dataX); - - Get_Accel_Register_2 (0x28); - LSB = accel_2_data[0]; - MSB = accel_2_data[1]; + + Get_Accel_Reg_6 (0x28); + LSB = accel_data[0]; + MSB = accel_data[1]; temp_dataX = (MSB * 256) + LSB; - pc.printf ("%d\n",temp_dataX); + pc.printf ("%d, ",temp_dataX); + + LSB = accel_data[2]; + MSB = accel_data[3]; + temp_dataY = (MSB * 256) + LSB; + pc.printf ("%d, ",temp_dataY); -/* -void Get_Accel_Register_2 (char Reg_Num) // Read 2 registers -{ - char reg; - reg = Reg_Num; - i2c.write((LIS_Addr << 1) & 0xFE, ®, 1); - i2c.read((LIS_Addr << 1) | 0x01, accel_2_data, 2); -} -*/ + LSB = accel_data[4]; + MSB = accel_data[5]; + temp_dataZ = (MSB * 256) + LSB; + pc.printf ("%d\n",temp_dataZ); + + wait(0.02); } /*