Dependencies:   TextLCD mbed

Committer:
esmiwa
Date:
Sun Jun 17 01:16:54 2012 +0000
Revision:
0:bc64cc811377

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
esmiwa 0:bc64cc811377 1 #include "mbed.h"
esmiwa 0:bc64cc811377 2 #include "TextLCD.h"
esmiwa 0:bc64cc811377 3
esmiwa 0:bc64cc811377 4 // Accelerometer KXP-84 I2C Mode Register
esmiwa 0:bc64cc811377 5 //#define X_H 0x00
esmiwa 0:bc64cc811377 6 //#define X_L 0x01
esmiwa 0:bc64cc811377 7
esmiwa 0:bc64cc811377 8 // slave adress 0011 000X X: 0 send 1 receve
esmiwa 0:bc64cc811377 9
esmiwa 0:bc64cc811377 10 DigitalOut reset(p11);
esmiwa 0:bc64cc811377 11 DigitalIn ff(p12);
esmiwa 0:bc64cc811377 12 DigitalIn mot(p13);
esmiwa 0:bc64cc811377 13 DigitalOut sign(LED1);
esmiwa 0:bc64cc811377 14
esmiwa 0:bc64cc811377 15 TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7
esmiwa 0:bc64cc811377 16
esmiwa 0:bc64cc811377 17 I2C i2c(p9, p10); // sda, scl
esmiwa 0:bc64cc811377 18
esmiwa 0:bc64cc811377 19
esmiwa 0:bc64cc811377 20 int main() {
esmiwa 0:bc64cc811377 21 char cmd[1];
esmiwa 0:bc64cc811377 22 char data[6];
esmiwa 0:bc64cc811377 23 int x,y,z;
esmiwa 0:bc64cc811377 24 int dx,dy,dz;
esmiwa 0:bc64cc811377 25 //reset=0;
esmiwa 0:bc64cc811377 26 i2c.frequency(400000);
esmiwa 0:bc64cc811377 27 //CTRL_REGB
esmiwa 0:bc64cc811377 28 i2c.start();
esmiwa 0:bc64cc811377 29 wait_us(1);
esmiwa 0:bc64cc811377 30 i2c.write(0x30);
esmiwa 0:bc64cc811377 31 wait_us(1);
esmiwa 0:bc64cc811377 32 *cmd=0x06;
esmiwa 0:bc64cc811377 33 i2c.write(0x0B,cmd,1);
esmiwa 0:bc64cc811377 34 wait_us(1);
esmiwa 0:bc64cc811377 35 i2c.stop();
esmiwa 0:bc64cc811377 36 //CTRL_REGC
esmiwa 0:bc64cc811377 37 i2c.start();
esmiwa 0:bc64cc811377 38 wait_us(1);
esmiwa 0:bc64cc811377 39 i2c.write(0x30);
esmiwa 0:bc64cc811377 40 wait_us(1);
esmiwa 0:bc64cc811377 41 *cmd=0x00;
esmiwa 0:bc64cc811377 42 i2c.write(0x0A,cmd,1);
esmiwa 0:bc64cc811377 43 wait_us(1);
esmiwa 0:bc64cc811377 44 i2c.stop();
esmiwa 0:bc64cc811377 45 //FF_INT
esmiwa 0:bc64cc811377 46 i2c.start();
esmiwa 0:bc64cc811377 47 wait_us(1);
esmiwa 0:bc64cc811377 48 i2c.write(0x30);
esmiwa 0:bc64cc811377 49 wait_us(1);
esmiwa 0:bc64cc811377 50 *cmd=0x14;
esmiwa 0:bc64cc811377 51 i2c.write(0x06,cmd,1);
esmiwa 0:bc64cc811377 52 wait_us(1);
esmiwa 0:bc64cc811377 53 i2c.stop();
esmiwa 0:bc64cc811377 54 //FF_DELAY
esmiwa 0:bc64cc811377 55 i2c.start();
esmiwa 0:bc64cc811377 56 wait_us(1);
esmiwa 0:bc64cc811377 57 i2c.write(0x30);
esmiwa 0:bc64cc811377 58 wait_us(1);
esmiwa 0:bc64cc811377 59 *cmd=0x14;
esmiwa 0:bc64cc811377 60 i2c.write(0x07,cmd,1);
esmiwa 0:bc64cc811377 61 wait_us(1);
esmiwa 0:bc64cc811377 62 i2c.stop();
esmiwa 0:bc64cc811377 63 //MOT_INT
esmiwa 0:bc64cc811377 64 i2c.start();
esmiwa 0:bc64cc811377 65 wait_us(1);
esmiwa 0:bc64cc811377 66 i2c.write(0x30);
esmiwa 0:bc64cc811377 67 wait_us(1);
esmiwa 0:bc64cc811377 68 *cmd=0x4D;
esmiwa 0:bc64cc811377 69 i2c.write(0x08,cmd,1);
esmiwa 0:bc64cc811377 70 wait_us(1);
esmiwa 0:bc64cc811377 71 i2c.stop();
esmiwa 0:bc64cc811377 72 //MOT_DELAYC
esmiwa 0:bc64cc811377 73 i2c.start();
esmiwa 0:bc64cc811377 74 wait_us(1);
esmiwa 0:bc64cc811377 75 i2c.write(0x30);
esmiwa 0:bc64cc811377 76 wait_us(1);
esmiwa 0:bc64cc811377 77 *cmd=0x14;
esmiwa 0:bc64cc811377 78 i2c.write(0x09,cmd,1);
esmiwa 0:bc64cc811377 79 wait_us(1);
esmiwa 0:bc64cc811377 80 i2c.stop();
esmiwa 0:bc64cc811377 81
esmiwa 0:bc64cc811377 82 //data_OUT
esmiwa 0:bc64cc811377 83 lcd.locate(0,0);lcd.printf(" x y z");
esmiwa 0:bc64cc811377 84 while(1){
esmiwa 0:bc64cc811377 85 i2c.start();
esmiwa 0:bc64cc811377 86 wait_us(1);
esmiwa 0:bc64cc811377 87 i2c.write(0x30);
esmiwa 0:bc64cc811377 88 wait_us(1);
esmiwa 0:bc64cc811377 89 i2c.write(0x00);
esmiwa 0:bc64cc811377 90 wait_us(1);
esmiwa 0:bc64cc811377 91 i2c.read(0x30,data,6);
esmiwa 0:bc64cc811377 92 wait_us(1);
esmiwa 0:bc64cc811377 93 i2c.stop();
esmiwa 0:bc64cc811377 94
esmiwa 0:bc64cc811377 95 dx=data[0]<<4 | data[1]>>4;
esmiwa 0:bc64cc811377 96 dy=data[2]<<4 | data[3]>>4;
esmiwa 0:bc64cc811377 97 dz=data[4]<<4 | data[5]>>4;
esmiwa 0:bc64cc811377 98
esmiwa 0:bc64cc811377 99 if(dx>2048)x=dx-2048;
esmiwa 0:bc64cc811377 100 else x=dx;
esmiwa 0:bc64cc811377 101 if(dy>2048)y=dy-2048;
esmiwa 0:bc64cc811377 102 else y=dy;
esmiwa 0:bc64cc811377 103 if(dz>2048)z=dz-2048;
esmiwa 0:bc64cc811377 104 else z=dz;
esmiwa 0:bc64cc811377 105
esmiwa 0:bc64cc811377 106 lcd.locate(0,1);;lcd.printf("%5d%5d%5d",x,y,z);
esmiwa 0:bc64cc811377 107 wait_ms(10);
esmiwa 0:bc64cc811377 108 }
esmiwa 0:bc64cc811377 109 }