diff --git a/implementation/accelerometer.c b/implementation/accelerometer.c index 6055f8a..2c8cf4e 100644 --- a/implementation/accelerometer.c +++ b/implementation/accelerometer.c @@ -31,29 +31,41 @@ void Init_accelerometre() MySPI_Set_NSS();//CS HIGH } -void Lecture_accelerometre(float *GX, float* GY, float* GZ) +void Lecture_accelerometre(float* GX, float* GY, float* GZ) { - int dataX ; - int dataY ; - int dataZ ; + int16_t dataX ; + int16_t dataY ; + int16_t dataZ ; MySPI_Clear_NSS(); //CS LOW MySPI_Send(0xF2);//lecture 1er registre accéléromètre + lecture multibytes - dataX = MySPI_Read()<<8; // données sur 13 bits passage 8 bit en PF + dataX = MySPI_Read()<<8; // données sur 13 (12 data + sign) bits passage 8 bit en PF dataX |= MySPI_Read(); //lecture SPI - dataX &= 0xE; //masquage au dessus du bit 13 + dataX &= 0x1FFF; //masquage au dessus du bit 13 + if (dataX > 511) + { + dataX -= 1024; + } *GX = dataX*0.004;//valeur du registre x pas accelerometre - + dataY = MySPI_Read()<<8; dataY |= MySPI_Read(); - dataY &= 0xE; - *GY = dataY*0.004; + dataY &= 0x1FFF; + if (dataY > 511) + { + dataY -= 1024; + } + *GY = dataY*0.004;//valeur du registre x pas accelerometre - dataZ = MySPI_Read()<<8; - dataZ |= MySPI_Read(); - dataZ &= 0xE; - *GZ = dataZ*0.004; + dataZ = ((MySPI_Read()<<8)|MySPI_Read()); + dataZ &= 0x1FFF; +/* if (dataZ > 511) + { + dataZ -= 1024; + } +*/ + *GZ = dataZ*0.004;//valeur du registre x pas accelerometre MySPI_Set_NSS();//CS HIGH } \ No newline at end of file