Nicholas Herriot
/
MMA8452_test
A test utility for mma8452
main.cpp@2:0587772b03b0, 2013-10-04 (annotated)
- 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?
User | Revision | Line number | New 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 | } |