a simple code with a not-so-simple mbed freeze

Dependencies:   MPU6050 mbed-rtos mbed

Committer:
pommzorz
Date:
Mon Feb 18 11:02:59 2013 +0000
Revision:
1:d2011078309d
Parent:
0:b1322cbc592f
Child:
2:141571165c57
sauvegarde avant reecriture;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pommzorz 0:b1322cbc592f 1 #include "mbed.h"
pommzorz 0:b1322cbc592f 2 #include "MPU6050.h"
pommzorz 1:d2011078309d 3 #include "rtos.h"
pommzorz 0:b1322cbc592f 4
pommzorz 0:b1322cbc592f 5 DigitalOut myled(LED1);
pommzorz 1:d2011078309d 6 Serial pc1(USBTX, USBRX);
pommzorz 0:b1322cbc592f 7 MPU6050 mpu(0x69);
pommzorz 0:b1322cbc592f 8
pommzorz 1:d2011078309d 9 int moyZ=0;
pommzorz 0:b1322cbc592f 10 int16_t moy[64];
pommzorz 1:d2011078309d 11
pommzorz 0:b1322cbc592f 12
pommzorz 0:b1322cbc592f 13 void moyennage_Z()
pommzorz 0:b1322cbc592f 14 {
pommzorz 0:b1322cbc592f 15 for (int n=0; n<64; n++) {
pommzorz 0:b1322cbc592f 16 moyZ=moyZ+moy[n];
pommzorz 0:b1322cbc592f 17
pommzorz 0:b1322cbc592f 18
pommzorz 0:b1322cbc592f 19 }
pommzorz 1:d2011078309d 20 moyZ=(int)moyZ/64;
pommzorz 0:b1322cbc592f 21 }
pommzorz 0:b1322cbc592f 22
pommzorz 0:b1322cbc592f 23
pommzorz 1:d2011078309d 24 void mon_thr(void const *args)
pommzorz 1:d2011078309d 25 {
pommzorz 1:d2011078309d 26 while (true) {
pommzorz 1:d2011078309d 27 myled=!myled;
pommzorz 1:d2011078309d 28 }
pommzorz 1:d2011078309d 29 }
pommzorz 0:b1322cbc592f 30
pommzorz 0:b1322cbc592f 31
pommzorz 0:b1322cbc592f 32 int main()
pommzorz 1:d2011078309d 33
pommzorz 0:b1322cbc592f 34 {
pommzorz 1:d2011078309d 35
pommzorz 1:d2011078309d 36 Thread thread(mon_thr);
pommzorz 1:d2011078309d 37 pc1.printf("MPU6050 test\n\n\r");
pommzorz 1:d2011078309d 38 pc1.printf("MPU6050 initialize \n\r");
pommzorz 0:b1322cbc592f 39
pommzorz 0:b1322cbc592f 40 mpu.initialize();
pommzorz 1:d2011078309d 41 pc1.printf("MPU6050 testConnection \n\r");
pommzorz 1:d2011078309d 42
pommzorz 1:d2011078309d 43 int16_t ax, ay, az;
pommzorz 1:d2011078309d 44 int16_t gx, gy, gz;
pommzorz 1:d2011078309d 45
pommzorz 1:d2011078309d 46
pommzorz 1:d2011078309d 47 int comptFin=0;
pommzorz 1:d2011078309d 48 int comptDeb=0;
pommzorz 1:d2011078309d 49
pommzorz 0:b1322cbc592f 50
pommzorz 0:b1322cbc592f 51 bool mpu6050TestResult = mpu.testConnection();
pommzorz 0:b1322cbc592f 52 if(mpu6050TestResult) {
pommzorz 1:d2011078309d 53 pc1.printf("MPU6050 test passed \n\r");
pommzorz 0:b1322cbc592f 54
pommzorz 0:b1322cbc592f 55 while(comptFin<64) {
pommzorz 0:b1322cbc592f 56 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
pommzorz 0:b1322cbc592f 57 moy[comptFin]=az;
pommzorz 0:b1322cbc592f 58 comptFin++;
pommzorz 0:b1322cbc592f 59
pommzorz 0:b1322cbc592f 60 }
pommzorz 0:b1322cbc592f 61 moyennage_Z();
pommzorz 0:b1322cbc592f 62 while(1) {
pommzorz 1:d2011078309d 63 while(comptFin<64) {
pommzorz 1:d2011078309d 64 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
pommzorz 1:d2011078309d 65 moy[comptFin]=az;
pommzorz 1:d2011078309d 66 comptFin++;
pommzorz 1:d2011078309d 67 wait(0.01);
pommzorz 1:d2011078309d 68 }
pommzorz 1:d2011078309d 69
pommzorz 1:d2011078309d 70
pommzorz 0:b1322cbc592f 71 comptFin%=64;
pommzorz 1:d2011078309d 72 moyZ-=(int)moy[comptDeb]/64;
pommzorz 0:b1322cbc592f 73 comptDeb++;
pommzorz 0:b1322cbc592f 74 comptDeb%=64;
pommzorz 1:d2011078309d 75 moyZ+=(int)moy[comptFin]/64;
pommzorz 1:d2011078309d 76 //moyennage_Z();
pommzorz 0:b1322cbc592f 77 printf("%i\n\r",moyZ+17000);
pommzorz 1:d2011078309d 78 wait(0.01);
pommzorz 0:b1322cbc592f 79
pommzorz 0:b1322cbc592f 80
pommzorz 0:b1322cbc592f 81
pommzorz 0:b1322cbc592f 82
pommzorz 0:b1322cbc592f 83 }
pommzorz 0:b1322cbc592f 84
pommzorz 0:b1322cbc592f 85
pommzorz 0:b1322cbc592f 86 } else {
pommzorz 1:d2011078309d 87 pc1.printf("MPU6050 test failed \n\r");
pommzorz 0:b1322cbc592f 88 }
pommzorz 0:b1322cbc592f 89
pommzorz 1:d2011078309d 90
pommzorz 0:b1322cbc592f 91 }