IL programma di acquisizione dati dall'accelerometro. Acquisisce 5000 campioni al secondo. Bisogna fare la parte di scrittura su SD. Per la board Nucleo!

Dependencies:   SDFileSystemFunzionante mbed

Fork of Nucleo_rtos_basic_copyProva_Quirino by Unina_corse

Committer:
giuseppe_guida
Date:
Tue Dec 05 19:19:18 2017 +0000
Revision:
1:c7794bb235e9
Parent:
0:7d3cc2de8dd2
Child:
2:61afd3fd7d6e
Programma di prova

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giuseppe_guida 0:7d3cc2de8dd2 1 #include "mbed.h"
giuseppe_guida 0:7d3cc2de8dd2 2 #include "rtos.h"
giuseppe_guida 0:7d3cc2de8dd2 3 #include "header.h"
giuseppe_guida 0:7d3cc2de8dd2 4 #include <time.h>
giuseppe_guida 0:7d3cc2de8dd2 5 #include "SDFileSystem.h"
giuseppe_guida 0:7d3cc2de8dd2 6 #include "MPU6050.h"
giuseppe_guida 0:7d3cc2de8dd2 7
giuseppe_guida 0:7d3cc2de8dd2 8 //SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd");
giuseppe_guida 0:7d3cc2de8dd2 9 SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd");
giuseppe_guida 0:7d3cc2de8dd2 10 Serial pc(USBTX,USBRX,9600);
giuseppe_guida 0:7d3cc2de8dd2 11
giuseppe_guida 0:7d3cc2de8dd2 12 Mutex mutex_ac;
giuseppe_guida 0:7d3cc2de8dd2 13 Mutex mutex_cs;
giuseppe_guida 0:7d3cc2de8dd2 14
giuseppe_guida 0:7d3cc2de8dd2 15 /**********Funzioni***********/
giuseppe_guida 0:7d3cc2de8dd2 16 int ok_produzione_ac = 1;
giuseppe_guida 0:7d3cc2de8dd2 17 int ok_consumo_ac = 0;
giuseppe_guida 0:7d3cc2de8dd2 18 int ok_produzione_cs = 1;
giuseppe_guida 0:7d3cc2de8dd2 19 int ok_consumo_cs = 0;
giuseppe_guida 0:7d3cc2de8dd2 20
giuseppe_guida 0:7d3cc2de8dd2 21 /*********Inizia Thread Acquisizione********/
giuseppe_guida 0:7d3cc2de8dd2 22 void funzione_acquisisci(){
giuseppe_guida 0:7d3cc2de8dd2 23 float sum = 0;
giuseppe_guida 0:7d3cc2de8dd2 24 uint32_t sumCount = 0;
giuseppe_guida 0:7d3cc2de8dd2 25
giuseppe_guida 0:7d3cc2de8dd2 26 MPU6050 mpu6050;
giuseppe_guida 0:7d3cc2de8dd2 27
giuseppe_guida 0:7d3cc2de8dd2 28 Timer t;
giuseppe_guida 0:7d3cc2de8dd2 29
giuseppe_guida 0:7d3cc2de8dd2 30 t.start();
giuseppe_guida 0:7d3cc2de8dd2 31
giuseppe_guida 0:7d3cc2de8dd2 32 // Read the WHO_AM_I register, this is a good test of communication
giuseppe_guida 0:7d3cc2de8dd2 33 uint8_t whoami = mpu6050.readByte(MPU6050_ADDRESS, WHO_AM_I_MPU6050); // Read WHO_AM_I register for MPU-6050
giuseppe_guida 0:7d3cc2de8dd2 34 //pc.printf("I AM 0x%x\n\r", whoami); pc.printf("I SHOULD BE 0x68\n\r");
giuseppe_guida 0:7d3cc2de8dd2 35
giuseppe_guida 0:7d3cc2de8dd2 36 if (whoami == 0x68) // WHO_AM_I should always be 0x68
giuseppe_guida 0:7d3cc2de8dd2 37 {
giuseppe_guida 0:7d3cc2de8dd2 38 //pc.printf("MPU6050 is online...");
giuseppe_guida 0:7d3cc2de8dd2 39 //wait(1);
giuseppe_guida 0:7d3cc2de8dd2 40
giuseppe_guida 0:7d3cc2de8dd2 41 mpu6050.MPU6050SelfTest(SelfTest); // Start by performing self test and reporting values
giuseppe_guida 0:7d3cc2de8dd2 42
giuseppe_guida 0:7d3cc2de8dd2 43 if(SelfTest[0] < 1.0f && SelfTest[1] < 1.0f && SelfTest[2] < 1.0f && SelfTest[3] < 1.0f && SelfTest[4] < 1.0f && SelfTest[5] < 1.0f){
giuseppe_guida 0:7d3cc2de8dd2 44 mpu6050.resetMPU6050(); // Reset registers to default in preparation for device calibration
giuseppe_guida 0:7d3cc2de8dd2 45 mpu6050.calibrateMPU6050(gyroBias, accelBias); // Calibrate gyro and accelerometers, load biases in bias registers
giuseppe_guida 0:7d3cc2de8dd2 46 mpu6050.initMPU6050(); pc.printf("MPU6050 initialized for active data mode....\n\r"); // Initialize device for active mode read of acclerometer, gyroscope, and temperature
giuseppe_guida 0:7d3cc2de8dd2 47 }
giuseppe_guida 0:7d3cc2de8dd2 48 else
giuseppe_guida 0:7d3cc2de8dd2 49 pc.printf("Device did not the pass self-test!\n\r");
giuseppe_guida 0:7d3cc2de8dd2 50 }
giuseppe_guida 0:7d3cc2de8dd2 51 else{
giuseppe_guida 0:7d3cc2de8dd2 52 pc.printf("Could not connect to MPU6050: \n\r");
giuseppe_guida 0:7d3cc2de8dd2 53 pc.printf("%#x \n", whoami);
giuseppe_guida 0:7d3cc2de8dd2 54
giuseppe_guida 0:7d3cc2de8dd2 55 while(1) ; // Loop forever if communication doesn't happen
giuseppe_guida 0:7d3cc2de8dd2 56 }
giuseppe_guida 0:7d3cc2de8dd2 57
giuseppe_guida 0:7d3cc2de8dd2 58 srand(time(NULL));
giuseppe_guida 0:7d3cc2de8dd2 59 int i;
giuseppe_guida 0:7d3cc2de8dd2 60 static const int off_set_a=400;
giuseppe_guida 0:7d3cc2de8dd2 61 time_t rawtime;
giuseppe_guida 0:7d3cc2de8dd2 62 struct tm* timeinfo;
giuseppe_guida 0:7d3cc2de8dd2 63 Timer temp3;
giuseppe_guida 0:7d3cc2de8dd2 64 temp3.start();
giuseppe_guida 0:7d3cc2de8dd2 65 for(i = 0; i < BLOCCO; i++){
giuseppe_guida 0:7d3cc2de8dd2 66
giuseppe_guida 0:7d3cc2de8dd2 67 // If data ready bit set, all data registers have new data
giuseppe_guida 0:7d3cc2de8dd2 68 if(mpu6050.readByte(MPU6050_ADDRESS, INT_STATUS) & 0x01) { // check if data ready interrupt
giuseppe_guida 0:7d3cc2de8dd2 69 mpu6050.readAccelData(accelCount); // Read the x/y/z adc values
giuseppe_guida 0:7d3cc2de8dd2 70 mpu6050.getAres();
giuseppe_guida 0:7d3cc2de8dd2 71
giuseppe_guida 0:7d3cc2de8dd2 72 // Now we'll calculate the accleration value into actual g's
giuseppe_guida 0:7d3cc2de8dd2 73 ax = (float)accelCount[0]*aRes - accelBias[0]; // get actual g value, this depends on scale being set
giuseppe_guida 0:7d3cc2de8dd2 74 ay = (float)accelCount[1]*aRes - accelBias[1];
giuseppe_guida 0:7d3cc2de8dd2 75 az = (float)accelCount[2]*aRes - accelBias[2];
giuseppe_guida 0:7d3cc2de8dd2 76
giuseppe_guida 0:7d3cc2de8dd2 77 time ( &rawtime );
giuseppe_guida 0:7d3cc2de8dd2 78 timeinfo = localtime ( &rawtime );
giuseppe_guida 0:7d3cc2de8dd2 79 vettore[i].x = ax;
giuseppe_guida 0:7d3cc2de8dd2 80 vettore[i].y = ay;
giuseppe_guida 0:7d3cc2de8dd2 81 vettore[i].z = az;
giuseppe_guida 0:7d3cc2de8dd2 82 vettore[i].t = asctime(timeinfo);
giuseppe_guida 0:7d3cc2de8dd2 83
giuseppe_guida 0:7d3cc2de8dd2 84 mpu6050.readGyroData(gyroCount); // Read the x/y/z adc values
giuseppe_guida 0:7d3cc2de8dd2 85 mpu6050.getGres();
giuseppe_guida 0:7d3cc2de8dd2 86
giuseppe_guida 0:7d3cc2de8dd2 87 // Calculate the gyro value into actual degrees per second
giuseppe_guida 0:7d3cc2de8dd2 88 gx = (float)gyroCount[0]*gRes; // - gyroBias[0]; // get actual gyro value, this depends on scale being set
giuseppe_guida 0:7d3cc2de8dd2 89 gy = (float)gyroCount[1]*gRes; // - gyroBias[1];
giuseppe_guida 0:7d3cc2de8dd2 90 gz = (float)gyroCount[2]*gRes; // - gyroBias[2];
giuseppe_guida 0:7d3cc2de8dd2 91
giuseppe_guida 0:7d3cc2de8dd2 92 tempCount = mpu6050.readTempData(); // Read the x/y/z adc values
giuseppe_guida 0:7d3cc2de8dd2 93 temperature = (tempCount) / 340. + 36.53; // Temperature in degrees Centigrade
giuseppe_guida 0:7d3cc2de8dd2 94 }
giuseppe_guida 0:7d3cc2de8dd2 95
giuseppe_guida 0:7d3cc2de8dd2 96 Now = t.read_us();
giuseppe_guida 0:7d3cc2de8dd2 97 deltat = (float)((Now - lastUpdate)/1000000.0f) ; // set integration time by time elapsed since last filter update
giuseppe_guida 0:7d3cc2de8dd2 98 lastUpdate = Now;
giuseppe_guida 0:7d3cc2de8dd2 99
giuseppe_guida 0:7d3cc2de8dd2 100 sum += deltat;
giuseppe_guida 0:7d3cc2de8dd2 101 sumCount++;
giuseppe_guida 0:7d3cc2de8dd2 102
giuseppe_guida 0:7d3cc2de8dd2 103 if(lastUpdate - firstUpdate > 10000000.0f) {
giuseppe_guida 0:7d3cc2de8dd2 104 beta = 0.04; // decrease filter gain after stabilized
giuseppe_guida 0:7d3cc2de8dd2 105 zeta = 0.015; // increasey bias drift gain after stabilized
giuseppe_guida 0:7d3cc2de8dd2 106 }
giuseppe_guida 0:7d3cc2de8dd2 107
giuseppe_guida 0:7d3cc2de8dd2 108 // Pass gyro rate as rad/s
giuseppe_guida 0:7d3cc2de8dd2 109 mpu6050.MadgwickQuaternionUpdate(ax, ay, az, gx*PI/180.0f, gy*PI/180.0f, gz*PI/180.0f);
giuseppe_guida 0:7d3cc2de8dd2 110
giuseppe_guida 0:7d3cc2de8dd2 111 // Serial print and/or display at 0.5 s rate independent of data rates
giuseppe_guida 0:7d3cc2de8dd2 112 delt_t = t.read_ms() - count;
giuseppe_guida 0:7d3cc2de8dd2 113 if (delt_t > 100) { // update LCD once per half-second independent of read rate
giuseppe_guida 0:7d3cc2de8dd2 114 yaw = atan2(2.0f * (q[1] * q[2] + q[0] * q[3]), q[0] * q[0] + q[1] * q[1] - q[2] * q[2] - q[3] * q[3]);
giuseppe_guida 0:7d3cc2de8dd2 115 pitch = -asin(2.0f * (q[1] * q[3] - q[0] * q[2]));
giuseppe_guida 0:7d3cc2de8dd2 116 roll = atan2(2.0f * (q[0] * q[1] + q[2] * q[3]), q[0] * q[0] - q[1] * q[1] - q[2] * q[2] + q[3] * q[3]);
giuseppe_guida 0:7d3cc2de8dd2 117 pitch *= 180.0f / PI;
giuseppe_guida 0:7d3cc2de8dd2 118 yaw *= 180.0f / PI;
giuseppe_guida 0:7d3cc2de8dd2 119 roll *= 180.0f / PI;
giuseppe_guida 0:7d3cc2de8dd2 120
giuseppe_guida 0:7d3cc2de8dd2 121 myled= !myled;
giuseppe_guida 0:7d3cc2de8dd2 122 count = t.read_ms();
giuseppe_guida 0:7d3cc2de8dd2 123 sum = 0;
giuseppe_guida 0:7d3cc2de8dd2 124 sumCount = 0;
giuseppe_guida 0:7d3cc2de8dd2 125 }
giuseppe_guida 0:7d3cc2de8dd2 126 pc.printf("A%03.0f%03.0f%03.0f",100*vettore[i].x+off_set_a,100*vettore[i].y+off_set_a,100*vettore[i].z+off_set_a);
giuseppe_guida 0:7d3cc2de8dd2 127 //pc.printf("X: %f | Y: %f | Z: %f | Time: %s\n\r",vettore[i].x,vettore[i].y,vettore[i].z,vettore[i].t);
giuseppe_guida 0:7d3cc2de8dd2 128 }
giuseppe_guida 0:7d3cc2de8dd2 129 temp3.stop();
giuseppe_guida 0:7d3cc2de8dd2 130 pc.printf("Tempo impiegato per l'acquisizione di 10 elementi: %f\n\r",temp3.read());
giuseppe_guida 0:7d3cc2de8dd2 131
giuseppe_guida 0:7d3cc2de8dd2 132 }
giuseppe_guida 0:7d3cc2de8dd2 133
giuseppe_guida 0:7d3cc2de8dd2 134 void acquisisci(){
giuseppe_guida 0:7d3cc2de8dd2 135 while (true) {
giuseppe_guida 0:7d3cc2de8dd2 136
giuseppe_guida 0:7d3cc2de8dd2 137 mutex_ac.lock();
giuseppe_guida 0:7d3cc2de8dd2 138 while(ok_produzione_ac == 0){
giuseppe_guida 0:7d3cc2de8dd2 139 mutex_ac.unlock();
giuseppe_guida 0:7d3cc2de8dd2 140 //Thread::wait(100);
giuseppe_guida 0:7d3cc2de8dd2 141 mutex_ac.lock();
giuseppe_guida 0:7d3cc2de8dd2 142 }
giuseppe_guida 0:7d3cc2de8dd2 143
giuseppe_guida 0:7d3cc2de8dd2 144 funzione_acquisisci();
giuseppe_guida 0:7d3cc2de8dd2 145
giuseppe_guida 0:7d3cc2de8dd2 146 ok_produzione_ac = 0;
giuseppe_guida 0:7d3cc2de8dd2 147 ok_consumo_ac = 1;
giuseppe_guida 0:7d3cc2de8dd2 148
giuseppe_guida 0:7d3cc2de8dd2 149 mutex_ac.unlock();
giuseppe_guida 0:7d3cc2de8dd2 150 }
giuseppe_guida 0:7d3cc2de8dd2 151 }
giuseppe_guida 0:7d3cc2de8dd2 152 /*******Fine Thread Acquisizione********/
giuseppe_guida 0:7d3cc2de8dd2 153
giuseppe_guida 0:7d3cc2de8dd2 154
giuseppe_guida 0:7d3cc2de8dd2 155
giuseppe_guida 0:7d3cc2de8dd2 156 /**********Inizio thread copia*******/
giuseppe_guida 0:7d3cc2de8dd2 157 void funzione_copia(){
giuseppe_guida 0:7d3cc2de8dd2 158 int i;
giuseppe_guida 0:7d3cc2de8dd2 159 Timer temp2;
giuseppe_guida 0:7d3cc2de8dd2 160 temp2.start();
giuseppe_guida 0:7d3cc2de8dd2 161 for(i = 0; i < BLOCCO; i++){
giuseppe_guida 0:7d3cc2de8dd2 162
giuseppe_guida 0:7d3cc2de8dd2 163 appoggio[i].x = vettore[i].x;
giuseppe_guida 0:7d3cc2de8dd2 164 appoggio[i].y = vettore[i].y;
giuseppe_guida 0:7d3cc2de8dd2 165 appoggio[i].z = vettore[i].z;
giuseppe_guida 0:7d3cc2de8dd2 166 appoggio[i].t = vettore[i].t;
giuseppe_guida 0:7d3cc2de8dd2 167
giuseppe_guida 0:7d3cc2de8dd2 168 }
giuseppe_guida 0:7d3cc2de8dd2 169 temp2.stop();
giuseppe_guida 0:7d3cc2de8dd2 170 pc.printf("Tempo impiegato per la copia di 10 elementi: %f\n\r",temp2.read());
giuseppe_guida 0:7d3cc2de8dd2 171 }
giuseppe_guida 0:7d3cc2de8dd2 172
giuseppe_guida 0:7d3cc2de8dd2 173 void copia()
giuseppe_guida 0:7d3cc2de8dd2 174 {
giuseppe_guida 0:7d3cc2de8dd2 175 while (true) {
giuseppe_guida 0:7d3cc2de8dd2 176
giuseppe_guida 0:7d3cc2de8dd2 177 mutex_ac.lock();
giuseppe_guida 0:7d3cc2de8dd2 178 while(ok_consumo_ac==0){
giuseppe_guida 0:7d3cc2de8dd2 179 mutex_ac.unlock();
giuseppe_guida 0:7d3cc2de8dd2 180 //Thread::wait(100);
giuseppe_guida 0:7d3cc2de8dd2 181 mutex_ac.lock();
giuseppe_guida 0:7d3cc2de8dd2 182 }
giuseppe_guida 0:7d3cc2de8dd2 183
giuseppe_guida 0:7d3cc2de8dd2 184 mutex_cs.lock();
giuseppe_guida 0:7d3cc2de8dd2 185 while(ok_produzione_cs==0){
giuseppe_guida 0:7d3cc2de8dd2 186 mutex_cs.unlock();
giuseppe_guida 0:7d3cc2de8dd2 187 //Thread::wait(500);
giuseppe_guida 0:7d3cc2de8dd2 188 mutex_cs.lock();
giuseppe_guida 0:7d3cc2de8dd2 189 }
giuseppe_guida 0:7d3cc2de8dd2 190
giuseppe_guida 0:7d3cc2de8dd2 191 funzione_copia();
giuseppe_guida 0:7d3cc2de8dd2 192
giuseppe_guida 0:7d3cc2de8dd2 193 ok_produzione_cs = 0;
giuseppe_guida 0:7d3cc2de8dd2 194 ok_consumo_cs = 1;
giuseppe_guida 0:7d3cc2de8dd2 195 mutex_cs.unlock();
giuseppe_guida 0:7d3cc2de8dd2 196
giuseppe_guida 0:7d3cc2de8dd2 197 ok_produzione_ac = 1;
giuseppe_guida 0:7d3cc2de8dd2 198 ok_consumo_ac = 0;
giuseppe_guida 0:7d3cc2de8dd2 199 mutex_ac.unlock();
giuseppe_guida 0:7d3cc2de8dd2 200 }
giuseppe_guida 0:7d3cc2de8dd2 201 }
giuseppe_guida 0:7d3cc2de8dd2 202 /**********Fine thread copia*********/
giuseppe_guida 0:7d3cc2de8dd2 203
giuseppe_guida 0:7d3cc2de8dd2 204
giuseppe_guida 0:7d3cc2de8dd2 205
giuseppe_guida 0:7d3cc2de8dd2 206 /********Inizio thread salvataggio***********/
giuseppe_guida 0:7d3cc2de8dd2 207 void funzione_salva(){
giuseppe_guida 0:7d3cc2de8dd2 208 int i;
giuseppe_guida 0:7d3cc2de8dd2 209 static const int off_set_a=400;
giuseppe_guida 0:7d3cc2de8dd2 210 Timer temp1;
giuseppe_guida 0:7d3cc2de8dd2 211
giuseppe_guida 0:7d3cc2de8dd2 212 mkdir("/sd/mydir",0777);
giuseppe_guida 0:7d3cc2de8dd2 213
giuseppe_guida 0:7d3cc2de8dd2 214 FILE *fp = fopen("/sd/mydir/sdtest.txt", "a");
giuseppe_guida 0:7d3cc2de8dd2 215 if(fp == NULL)
giuseppe_guida 0:7d3cc2de8dd2 216 pc.printf("Could not open file for write\n\r");
giuseppe_guida 0:7d3cc2de8dd2 217 else{
giuseppe_guida 0:7d3cc2de8dd2 218 temp1.start();
giuseppe_guida 0:7d3cc2de8dd2 219 for(i = 0; i < BLOCCO; i++){
giuseppe_guida 0:7d3cc2de8dd2 220
giuseppe_guida 0:7d3cc2de8dd2 221 //fprintf(fp,"X: %3.3f | Y: %3.3f | Z: %3.3f | Time: %s\r\n",appoggio[i].x,appoggio[i].y,appoggio[i].z,appoggio[i].t);
giuseppe_guida 1:c7794bb235e9 222 fprintf(fp,"A%03.0f%03.0f%03.0f\n\r",100*vettore[i].x+off_set_a,100*vettore[i].y+off_set_a,100*vettore[i].z+off_set_a);
giuseppe_guida 0:7d3cc2de8dd2 223 }
giuseppe_guida 0:7d3cc2de8dd2 224 temp1.stop();
giuseppe_guida 0:7d3cc2de8dd2 225 pc.printf("Tempo impiegato per la scrittura di 10 elementi su file: %f\n\r",temp1.read());
giuseppe_guida 0:7d3cc2de8dd2 226
giuseppe_guida 0:7d3cc2de8dd2 227 fclose(fp);
giuseppe_guida 0:7d3cc2de8dd2 228 }
giuseppe_guida 0:7d3cc2de8dd2 229 }
giuseppe_guida 0:7d3cc2de8dd2 230
giuseppe_guida 0:7d3cc2de8dd2 231 void salva()
giuseppe_guida 0:7d3cc2de8dd2 232 {
giuseppe_guida 0:7d3cc2de8dd2 233 while (true) {
giuseppe_guida 0:7d3cc2de8dd2 234
giuseppe_guida 0:7d3cc2de8dd2 235 mutex_cs.lock();
giuseppe_guida 0:7d3cc2de8dd2 236 while(ok_consumo_cs==0){
giuseppe_guida 0:7d3cc2de8dd2 237 mutex_cs.unlock();
giuseppe_guida 0:7d3cc2de8dd2 238 //Thread::wait(100);
giuseppe_guida 0:7d3cc2de8dd2 239 mutex_cs.lock();
giuseppe_guida 0:7d3cc2de8dd2 240 }
giuseppe_guida 0:7d3cc2de8dd2 241
giuseppe_guida 0:7d3cc2de8dd2 242 funzione_salva();
giuseppe_guida 0:7d3cc2de8dd2 243
giuseppe_guida 0:7d3cc2de8dd2 244 ok_produzione_cs = 1;
giuseppe_guida 0:7d3cc2de8dd2 245 ok_consumo_cs = 0;
giuseppe_guida 0:7d3cc2de8dd2 246 mutex_cs.unlock();
giuseppe_guida 0:7d3cc2de8dd2 247 }
giuseppe_guida 0:7d3cc2de8dd2 248 }
giuseppe_guida 0:7d3cc2de8dd2 249 /************Fine thread salvataggio*************/
giuseppe_guida 0:7d3cc2de8dd2 250
giuseppe_guida 0:7d3cc2de8dd2 251 /*********Fine Funzioni**********/
giuseppe_guida 0:7d3cc2de8dd2 252
giuseppe_guida 0:7d3cc2de8dd2 253 Thread Acquisizione; //(acquisisci, NULL, osPriorityNormal, DEFAULT_STACK_SIZE);
giuseppe_guida 0:7d3cc2de8dd2 254 Thread Copia; //(copia, NULL, osPriorityNormal, DEFAULT_STACK_SIZE);
giuseppe_guida 0:7d3cc2de8dd2 255 Thread Salvataggio; //(salva, NULL, osPriorityNormal, DEFAULT_STACK_SIZE);
giuseppe_guida 0:7d3cc2de8dd2 256
giuseppe_guida 0:7d3cc2de8dd2 257 int main()
giuseppe_guida 0:7d3cc2de8dd2 258 {
giuseppe_guida 0:7d3cc2de8dd2 259 i2c.frequency(400000);
giuseppe_guida 0:7d3cc2de8dd2 260 int i;
giuseppe_guida 0:7d3cc2de8dd2 261 for(i = 0; i < BLOCCO; i++){
giuseppe_guida 0:7d3cc2de8dd2 262
giuseppe_guida 0:7d3cc2de8dd2 263 vettore[i].x = 0;
giuseppe_guida 0:7d3cc2de8dd2 264 vettore[i].y = 0;
giuseppe_guida 0:7d3cc2de8dd2 265 vettore[i].z = 0;
giuseppe_guida 0:7d3cc2de8dd2 266 //vettore[i][j].t = 0;
giuseppe_guida 0:7d3cc2de8dd2 267 appoggio[i].x = 0;
giuseppe_guida 0:7d3cc2de8dd2 268 appoggio[i].y = 0;
giuseppe_guida 0:7d3cc2de8dd2 269 appoggio[i].z = 0;
giuseppe_guida 0:7d3cc2de8dd2 270 //appoggio[i][j].t = '';
giuseppe_guida 0:7d3cc2de8dd2 271
giuseppe_guida 0:7d3cc2de8dd2 272 }
giuseppe_guida 0:7d3cc2de8dd2 273
giuseppe_guida 0:7d3cc2de8dd2 274 while (true) {
giuseppe_guida 0:7d3cc2de8dd2 275 Acquisizione.start(callback(acquisisci));
giuseppe_guida 0:7d3cc2de8dd2 276 Copia.start(callback(copia));
giuseppe_guida 0:7d3cc2de8dd2 277 Salvataggio.start(callback(salva));
giuseppe_guida 0:7d3cc2de8dd2 278
giuseppe_guida 0:7d3cc2de8dd2 279 }
giuseppe_guida 0:7d3cc2de8dd2 280 }