/Modules/Sensors/IMU01A/SW/PIC16F887/MMA8451Q.c
0,0 → 1,59
void setAK (void) //nastaveni akcelerometru
{
i2c_start();
I2C_Write(AK_W);
I2C_write(0x2A);
I2C_write(0x01); //nastavi aktivni stav
i2c_stop();
}
 
 
int16 akR (int8 H, int8 L) //vycitani hodnot z akcelerometru
{
unsigned int8 XL=0,XH=0;
signed int16 x;
 
i2c_start();
I2C_Write(AK_W);
I2C_write(H);
i2c_start();
I2C_Write(AK_R);
XH=i2c_read(0);
i2c_stop();
 
i2c_start();
I2C_Write(AK_W);
I2C_write(L);
i2c_start();
I2C_Write(AK_R);
XL=i2c_read(0);
i2c_stop();
x = (((unsigned int16) XH << 8) + XL ); //prevod na 16bit hodnotu
x=x/4;
return x;
}
 
int16 akX (void)
{
int16 X;
X= akR (AK_XH, AK_XL);
return X;
}
 
int16 akY (void)
{
int16 Y;
Y= akR (AK_YH, AK_YL);
return Y;
}
 
int16 akZ (void)
{
int16 Z;
Z= akR (AK_ZH, AK_ZL);
return Z;
}