driver for gyro

Dependencies:   COG4050_ADT7420

Fork of COG4050_adxl355_adxl357-ver2 by ADI_CAC

Committer:
vtoffoli
Date:
Tue Aug 21 13:25:37 2018 +0000
Revision:
8:9e6ead2ee8d7
Parent:
7:5aaa09c40283
Child:
9:1afd906c5ed2
COG+ADXL355

Who changed what in which revision?

UserRevisionLine numberNew contents of line
APS_Lab 0:74a0756399ff 1 #include "mbed.h"
vtoffoli 8:9e6ead2ee8d7 2 #include <math.h>
vtoffoli 4:23b53636b576 3 #include <inttypes.h>
vtoffoli 2:14dc1ec57f3b 4 #include "ADXL355.h"
vtoffoli 7:5aaa09c40283 5 #include "ADXRS290.h"
vtoffoli 8:9e6ead2ee8d7 6 #include "CALIBRATION.h"
vtoffoli 2:14dc1ec57f3b 7
vtoffoli 2:14dc1ec57f3b 8 Serial pc(USBTX, USBRX);
vtoffoli 2:14dc1ec57f3b 9
vtoffoli 7:5aaa09c40283 10 ADXL355 accl(SPI1_CS0, SPI1_MOSI, SPI1_MISO, SPI1_SCLK); // PMOD port
vtoffoli 7:5aaa09c40283 11 ADXRS290 gyro(SPI0_CS2, SPI0_MOSI, SPI0_MISO, SPI0_SCLK); // PMOD port
vtoffoli 8:9e6ead2ee8d7 12 CALIBRATION test;
vtoffoli 8:9e6ead2ee8d7 13 float angle[3][12] = { {-55, -125, -147, 33, -128, 52, 0, 0, 0, 0, 0, 0},
vtoffoli 8:9e6ead2ee8d7 14 {6, -6, 20, -20, -69, 69, 0, 0, 0, 0, 0, 0 },
vtoffoli 8:9e6ead2ee8d7 15 {1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}};
vtoffoli 8:9e6ead2ee8d7 16 float meas[3][12] = { {-0.09, 0.16, -0.31, 0.37, 0.91, -0.88},
vtoffoli 8:9e6ead2ee8d7 17 {-0.78, 0.81, -0.46, 0.49, -0.28, 0.32},
vtoffoli 8:9e6ead2ee8d7 18 {0.54, -0.55, -0.78, 0.76, -0.20, 0.20}};
vtoffoli 2:14dc1ec57f3b 19 int main(){
vtoffoli 2:14dc1ec57f3b 20 pc.baud(9600);
vtoffoli 2:14dc1ec57f3b 21 pc.printf("SPI ADXL355 and ADXL357 Demo\n");
vtoffoli 2:14dc1ec57f3b 22 pc.printf("GET device ID\n");
vtoffoli 4:23b53636b576 23 accl.reset();
vtoffoli 4:23b53636b576 24 uint8_t d;
vtoffoli 7:5aaa09c40283 25 d=accl.read_reg(accl.DEVID_AD);
vtoffoli 7:5aaa09c40283 26 pc.printf("AD id = %x \r\n",d);
vtoffoli 7:5aaa09c40283 27 d=accl.read_reg(accl.DEVID_MST);
vtoffoli 7:5aaa09c40283 28 pc.printf("MEMS id = %x \r\n",d);
vtoffoli 7:5aaa09c40283 29 d=accl.read_reg(accl.PARTID);
vtoffoli 7:5aaa09c40283 30 pc.printf("device id = %x \r\n",d);
vtoffoli 7:5aaa09c40283 31 d=accl.read_reg(accl.REVID);
vtoffoli 7:5aaa09c40283 32 pc.printf("revision id = %x \r\n",d);
vtoffoli 4:23b53636b576 33 pc.printf("GET device data [x, y, z, t] \r\n");
vtoffoli 4:23b53636b576 34 accl.set_power_ctl_reg(accl.MEASUREMENT);
vtoffoli 4:23b53636b576 35 d=accl.read_reg(accl.POWER_CTL);
vtoffoli 4:23b53636b576 36 pc.printf("power control on measurement mode = %x \r\n",d);
vtoffoli 6:45d2393ef468 37 float x, y,z;
vtoffoli 6:45d2393ef468 38 float t;
vtoffoli 7:5aaa09c40283 39 // save data info a file
vtoffoli 8:9e6ead2ee8d7 40 for(int i=0; i<100; i++) {
vtoffoli 7:5aaa09c40283 41 x = accl.convert(accl.scanx())*accl.axis355_sens;
vtoffoli 7:5aaa09c40283 42 y = accl.convert(accl.scany())*accl.axis355_sens;
vtoffoli 7:5aaa09c40283 43 z = accl.convert(accl.scanz())*accl.axis355_sens;
vtoffoli 6:45d2393ef468 44 t = 25+float(accl.scant()-1852)/(-9.05);
vtoffoli 6:45d2393ef468 45 pc.printf("%f \t %f \t %f \t %f \r\n" , x,y,z,t);
vtoffoli 8:9e6ead2ee8d7 46 wait(0.1);} // test the calibration procedure
vtoffoli 8:9e6ead2ee8d7 47 // test.matrix_reset();
vtoffoli 8:9e6ead2ee8d7 48 // test.matrix_g(angle);
vtoffoli 8:9e6ead2ee8d7 49 // test.matrix_x(meas);
vtoffoli 8:9e6ead2ee8d7 50 // int i, j;
vtoffoli 8:9e6ead2ee8d7 51
vtoffoli 8:9e6ead2ee8d7 52 /* output each array element's value */
vtoffoli 8:9e6ead2ee8d7 53 /*
vtoffoli 8:9e6ead2ee8d7 54 pc.printf("power control on measurement mode = %x \r\n",d);
vtoffoli 8:9e6ead2ee8d7 55 for ( i = 0; i < 3; i++ ) {
vtoffoli 8:9e6ead2ee8d7 56 for ( j = 0; j < 12; j++ ) {
vtoffoli 8:9e6ead2ee8d7 57 pc.printf( "%f\n", i,j, test.g_matrix[i][j] );
vtoffoli 8:9e6ead2ee8d7 58 }
vtoffoli 8:9e6ead2ee8d7 59 pc.printf("\r\n");
vtoffoli 8:9e6ead2ee8d7 60 */
vtoffoli 8:9e6ead2ee8d7 61
vtoffoli 8:9e6ead2ee8d7 62 //}
vtoffoli 8:9e6ead2ee8d7 63
vtoffoli 2:14dc1ec57f3b 64 }
vtoffoli 6:45d2393ef468 65