![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
a simple code with a not-so-simple mbed freeze
Dependencies: MPU6050 mbed-rtos mbed
main.cpp@1:d2011078309d, 2013-02-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |