A test utility for mma8452

Dependencies:   MMA8452 mbed

Committer:
nherriot
Date:
Fri Oct 04 14:48:20 2013 +0000
Revision:
2:0587772b03b0
Parent:
1:0c1dd02be97a
Child:
3:6d888ac31d2c
initial commit for mma8452

Who changed what in which revision?

UserRevisionLine numberNew contents of line
matsu 0:904e837fccc5 1 #include "mbed.h"
nherriot 2:0587772b03b0 2 //#include <bitset>
nherriot 2:0587772b03b0 3 #include "MMA8452.h"
matsu 0:904e837fccc5 4
nherriot 2:0587772b03b0 5
nherriot 2:0587772b03b0 6 // I2C i2c(p28,p27);
nherriot 2:0587772b03b0 7 Accelerometer_MMA8452 acclerometer(p28, p29, 40000);
nherriot 2:0587772b03b0 8
matsu 0:904e837fccc5 9 Serial pc(USBTX, USBRX);
matsu 0:904e837fccc5 10 DigitalOut led1(LED1);
matsu 0:904e837fccc5 11 DigitalOut led2(LED2);
matsu 0:904e837fccc5 12 DigitalOut led3(LED3);
matsu 0:904e837fccc5 13
matsu 0:904e837fccc5 14 int main() {
matsu 0:904e837fccc5 15 led1 = 0;
matsu 0:904e837fccc5 16 led2 = 0;
matsu 0:904e837fccc5 17 led3 = 0;
matsu 0:904e837fccc5 18 char cmd[6];
matsu 0:904e837fccc5 19 char add[1];
matsu 0:904e837fccc5 20 char init[2];
nherriot 2:0587772b03b0 21 add[0] = 0x01; // x-axis register
nherriot 2:0587772b03b0 22 init[0] = 0x2A; // control register 1
nherriot 2:0587772b03b0 23 init[1] = 0x01; // set to active
matsu 0:904e837fccc5 24 int number=0;
nherriot 2:0587772b03b0 25 //i2c.frequency(40000);
matsu 0:904e837fccc5 26
nherriot 2:0587772b03b0 27 // just playing with address values
nherriot 2:0587772b03b0 28 char mcu_address = 0x00;
nherriot 2:0587772b03b0 29 pc.printf("\nmcu_address is: 0x%x ", mcu_address);
nherriot 2:0587772b03b0 30 mcu_address = MMA8452_ADDRESS;
nherriot 2:0587772b03b0 31 pc.printf("\nmcu_address is: 0x%x ", mcu_address);
nherriot 2:0587772b03b0 32 mcu_address = (mcu_address << 1); // shifting address by 1 bit as i2c is a 7 bit encoding, and this is 8bit encoded
nherriot 2:0587772b03b0 33 pc.printf("\nmcu_address is now : 0x%x ", mcu_address);
nherriot 2:0587772b03b0 34
matsu 0:904e837fccc5 35 wait(0.5);
matsu 0:904e837fccc5 36 //init
nherriot 2:0587772b03b0 37 //set active mode
nherriot 2:0587772b03b0 38 pc.printf("\nWriting to master register register\n");
nherriot 2:0587772b03b0 39 // while(i2c.write(mcu_address,init,2));
matsu 0:904e837fccc5 40 led1 = 1;
matsu 0:904e837fccc5 41 led2 = 1;
matsu 0:904e837fccc5 42 led3 = 1;
matsu 0:904e837fccc5 43
matsu 0:904e837fccc5 44 //get analog data
nherriot 2:0587772b03b0 45 pc.printf("Getting analog data");
nherriot 2:0587772b03b0 46 /*
nherriot 2:0587772b03b0 47 while(1)
nherriot 2:0587772b03b0 48 {
matsu 0:904e837fccc5 49 //send procedure
matsu 0:904e837fccc5 50 wait(0.07);
matsu 0:904e837fccc5 51 switch(number){
matsu 0:904e837fccc5 52 case 0:
nherriot 2:0587772b03b0 53 if(i2c.write(mcu_address,add,1) == 0){
matsu 0:904e837fccc5 54 number++;
nherriot 2:0587772b03b0 55 pc.printf("In case 0 loop. The number is: %d \n", number);
matsu 0:904e837fccc5 56 led1 = 1;
matsu 0:904e837fccc5 57 }else{
matsu 0:904e837fccc5 58 number=0;
nherriot 2:0587772b03b0 59 pc.printf("In case 0 loop. The number is reset to: %d \n", number);
matsu 0:904e837fccc5 60 led1 = 0;
matsu 0:904e837fccc5 61 led2 = 0;
matsu 0:904e837fccc5 62 led3 = 1;
matsu 0:904e837fccc5 63 }
matsu 0:904e837fccc5 64 break;
matsu 0:904e837fccc5 65 case 1:
nherriot 2:0587772b03b0 66 if(i2c.read(mcu_address,cmd,6) == 0){
matsu 0:904e837fccc5 67 number++;
nherriot 2:0587772b03b0 68 pc.printf("In case 1 loop. The number is: %d \n", number);
matsu 0:904e837fccc5 69 led2 = 1;
matsu 0:904e837fccc5 70 }else{
matsu 0:904e837fccc5 71 number=0;
nherriot 2:0587772b03b0 72 pc.printf("In case 1 loop. The number is reset to: %d \n", number);
matsu 0:904e837fccc5 73 led1 = 0;
matsu 0:904e837fccc5 74 led2 = 0;
matsu 0:904e837fccc5 75 led3 = 0;
matsu 0:904e837fccc5 76 }
matsu 0:904e837fccc5 77 break;
matsu 0:904e837fccc5 78 case 2:
matsu 1:0c1dd02be97a 79 //get analog data
nherriot 2:0587772b03b0 80 pc.printf("\r X = %d,Y = %d,Z = %d \n",cmd[1],cmd[3],cmd[5]);
matsu 0:904e837fccc5 81 led3 = 1;
matsu 0:904e837fccc5 82 wait(0.5);
matsu 0:904e837fccc5 83 led1 = 0;
matsu 0:904e837fccc5 84 led2 = 0;
matsu 0:904e837fccc5 85 led3 = 0;
matsu 0:904e837fccc5 86 number=0;
matsu 0:904e837fccc5 87 break;
matsu 0:904e837fccc5 88 }
nherriot 2:0587772b03b0 89 }*/
nherriot 2:0587772b03b0 90
matsu 0:904e837fccc5 91 }