1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#include "mbed.h"
SPI spi(D11, D12, D13);
DigitalOut cs(D10);
Serial pc(USBTX, USBRX);
Timer t_angle;
int STATUS_GYRO = 0;
int OUT_X_H = 0;
int OUT_X_L = 0;
int OUT_X = 0;
int ANGLE_X = 0;
int tn;
int X[100];
int zero = 0;
int b = 0;
int axe_x = 0;
void spi_write(int registre, int data)
{
cs = 0;
spi.write(registre);
spi.write(data);
cs=1;
}
int spi_read(int registre)
{
registre = registre + 0x80;
cs = 0;
spi.write(registre);
int buffer = spi.write(0x00);
cs=1;
return buffer;
}
int main()
{
cs=1;
spi.format(8,3);
spi.frequency(900000);
wait(1);
spi_write(0x20, 0x0F);
wait(1);
int whoami = spi_read(0x0F);
pc.printf("Who Am I = 0x%X\r\n", whoami);
wait(0.1);
spi_write(0x23, 0x80);
while(1) {
t_angle.start();
STATUS_GYRO = spi_read(0x27);
//pc.printf("STATUS = %-d \r\n", STATUS_GYRO);
for (b=0; b<=9; b++) {
OUT_X_L = spi_read(0x28);
OUT_X_H = spi_read(0x29);
OUT_X = (OUT_X_H << 8) + OUT_X_L;
axe_x = axe_x + OUT_X;
}
axe_x = axe_x/10;
tn = t_angle.read_ms();
pc.printf("X = %-i, T = %-i \r\n", axe_x, tn);
t_angle.stop();
t_angle.reset();
}
} |