Chris Elsholz / Mbed 2 deprecated Quadrocopter

Dependencies:   mbed TextLCD

Fork of Quadrocopter by Marco Friedmann

Committer:
chriselsholz
Date:
Wed Aug 02 12:01:14 2017 +0000
Revision:
5:584acd257531
Parent:
messen.cpp@4:3eaf38e4809f
Child:
6:27a09e8bebfb
messen.cpp um acc_werte erweitert

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MarcoF89 4:3eaf38e4809f 1 #include "mbed.h"
MarcoF89 4:3eaf38e4809f 2 #include "stdio.h"
MarcoF89 4:3eaf38e4809f 3
MarcoF89 4:3eaf38e4809f 4
MarcoF89 4:3eaf38e4809f 5
MarcoF89 4:3eaf38e4809f 6 extern Serial pc(SERIAL_TX, SERIAL_RX);
MarcoF89 4:3eaf38e4809f 7 extern SPI spi(PE_6,PE_5,PE_2); //mosi,miso,sclk
MarcoF89 4:3eaf38e4809f 8 extern DigitalOut ncs(PE_4); //ssel
MarcoF89 4:3eaf38e4809f 9
chriselsholz 5:584acd257531 10 /**********************/
chriselsholz 5:584acd257531 11 /*Initialisieren**Gyro*/
chriselsholz 5:584acd257531 12 /**********************/
chriselsholz 5:584acd257531 13 int initialisierung_gyro()
chriselsholz 5:584acd257531 14 {
chriselsholz 5:584acd257531 15 spi.format(8,0);
chriselsholz 5:584acd257531 16 spi.frequency(1000000);
chriselsholz 5:584acd257531 17
chriselsholz 5:584acd257531 18 ncs = 0;
chriselsholz 5:584acd257531 19 spi.write(0x6B); // Register 107
chriselsholz 5:584acd257531 20 spi.write(0x80); //Reset // Standby off
chriselsholz 5:584acd257531 21 ncs = 1;
chriselsholz 5:584acd257531 22 wait_ms(1000);
chriselsholz 5:584acd257531 23
chriselsholz 5:584acd257531 24
chriselsholz 5:584acd257531 25 ncs=0;
chriselsholz 5:584acd257531 26 spi.write(0x1A); //CONFIG write // DLPF_CFG // Register 26
chriselsholz 5:584acd257531 27 spi.write(0x06); //Bandwidth: 250Hz// Delay: 0.97ms// Fs: 8kHz
chriselsholz 5:584acd257531 28 ncs = 1;
chriselsholz 5:584acd257531 29 wait_ms(1);
chriselsholz 5:584acd257531 30
chriselsholz 5:584acd257531 31 ncs=0;
chriselsholz 5:584acd257531 32 spi.write(0x1B); //Gyro_CONFIG write
chriselsholz 5:584acd257531 33 spi.write(0x18); //Max. Skalenwert//00=+250dps;08=+500dps;10=+1000dps;18=+2000dps
chriselsholz 5:584acd257531 34 ncs = 1;
chriselsholz 5:584acd257531 35 wait_ms(1);
chriselsholz 5:584acd257531 36
chriselsholz 5:584acd257531 37 ncs = 0;
chriselsholz 5:584acd257531 38 spi.write(0x17); // Register 23
chriselsholz 5:584acd257531 39 spi.write(0x00); // Offset High Byte
chriselsholz 5:584acd257531 40 ncs = 1;
chriselsholz 5:584acd257531 41 wait_ms(1);
chriselsholz 5:584acd257531 42
chriselsholz 5:584acd257531 43 ncs = 0;
chriselsholz 5:584acd257531 44 spi.write(0x18); // Register 24
chriselsholz 5:584acd257531 45 spi.write(0x17); // Offset Low Byte
chriselsholz 5:584acd257531 46 ncs = 1;
chriselsholz 5:584acd257531 47 wait_ms(1000);
chriselsholz 5:584acd257531 48 }
chriselsholz 5:584acd257531 49
chriselsholz 5:584acd257531 50 /**********************/
chriselsholz 5:584acd257531 51 /*Initialisieren Acc */
chriselsholz 5:584acd257531 52 /**********************/
chriselsholz 5:584acd257531 53
chriselsholz 5:584acd257531 54 int16_t initialisierung_acc ()
chriselsholz 5:584acd257531 55 {
chriselsholz 5:584acd257531 56 int i,faktor = 0x00;
chriselsholz 5:584acd257531 57 for(i=0;i<=2;i++)
chriselsholz 5:584acd257531 58 {
chriselsholz 5:584acd257531 59 ncs=0;
chriselsholz 5:584acd257531 60 spi.write(0x1c); //ACC_CONFIG write
chriselsholz 5:584acd257531 61 spi.write(faktor); //Skalierung 00=2g;08=4g;10=8g;18=16g
chriselsholz 5:584acd257531 62 ncs=1; //Teilung 16384;8192;4096;2048
chriselsholz 5:584acd257531 63 wait_us(0.1);
chriselsholz 5:584acd257531 64
chriselsholz 5:584acd257531 65 ncs=0;
chriselsholz 5:584acd257531 66 spi.write(0x1d); //ACC_CONFIG_2 08=460Hz;09=184Hz;0a=92Hz
chriselsholz 5:584acd257531 67 spi.write(0x0e); //TP-Filter 0b=41Hz;0c=20Hz;0d=10Hz;0e=5Hz
chriselsholz 5:584acd257531 68 ncs=1;
chriselsholz 5:584acd257531 69 wait_us(0.1);
chriselsholz 5:584acd257531 70 }
chriselsholz 5:584acd257531 71 switch (faktor)
chriselsholz 5:584acd257531 72 {
chriselsholz 5:584acd257531 73 case 0x00: return 16384; break;
chriselsholz 5:584acd257531 74 case 0x08: return 8192; break;
chriselsholz 5:584acd257531 75 case 0x10: return 4096; break;
chriselsholz 5:584acd257531 76 case 0x18: return 2048; break;
chriselsholz 5:584acd257531 77 }
chriselsholz 5:584acd257531 78 }
chriselsholz 5:584acd257531 79
chriselsholz 5:584acd257531 80
chriselsholz 5:584acd257531 81 /***************/
chriselsholz 5:584acd257531 82 /*Messen Gyro Z*/
chriselsholz 5:584acd257531 83 /***************/
MarcoF89 4:3eaf38e4809f 84
MarcoF89 4:3eaf38e4809f 85 int aktuell_gyro_z()
MarcoF89 4:3eaf38e4809f 86 {
MarcoF89 4:3eaf38e4809f 87 int16_t z_high, z_low, z_high_low;
MarcoF89 4:3eaf38e4809f 88 float messwert[7];
MarcoF89 4:3eaf38e4809f 89 char j, i;
MarcoF89 4:3eaf38e4809f 90
MarcoF89 4:3eaf38e4809f 91 ncs = 0;
MarcoF89 4:3eaf38e4809f 92 spi.write(0xc7); //Z_OUT_H
MarcoF89 4:3eaf38e4809f 93 z_high = spi.write(0x0);
MarcoF89 4:3eaf38e4809f 94 ncs = 1;
MarcoF89 4:3eaf38e4809f 95 wait_us(1);
MarcoF89 4:3eaf38e4809f 96
MarcoF89 4:3eaf38e4809f 97 ncs = 0;
MarcoF89 4:3eaf38e4809f 98 spi.write(0xc8); //Z_OUT_L
MarcoF89 4:3eaf38e4809f 99 z_low = spi.write(0x0);
MarcoF89 4:3eaf38e4809f 100 ncs = 1;
MarcoF89 4:3eaf38e4809f 101 wait_us(1);
MarcoF89 4:3eaf38e4809f 102
MarcoF89 4:3eaf38e4809f 103 z_high_low = z_low | z_high << 8; //Low und High Byte zusammenfügen
MarcoF89 4:3eaf38e4809f 104 return z_high_low;
MarcoF89 4:3eaf38e4809f 105 }
MarcoF89 4:3eaf38e4809f 106
chriselsholz 5:584acd257531 107 /************/
chriselsholz 5:584acd257531 108 /*Messen Acc*/
chriselsholz 5:584acd257531 109 /************/
MarcoF89 4:3eaf38e4809f 110
chriselsholz 5:584acd257531 111 int16_t aktuell_acc_x ()
chriselsholz 5:584acd257531 112 {
MarcoF89 4:3eaf38e4809f 113 ncs=0;
chriselsholz 5:584acd257531 114 spi.write(0xbb);
chriselsholz 5:584acd257531 115 int16_t x_high = spi.write(0x0);
chriselsholz 5:584acd257531 116 ncs=1;
chriselsholz 5:584acd257531 117 wait_us(0.1);
chriselsholz 5:584acd257531 118
chriselsholz 5:584acd257531 119 ncs=0;
chriselsholz 5:584acd257531 120 spi.write(0xbc);
chriselsholz 5:584acd257531 121 int16_t x_low = spi.write(0x0);
chriselsholz 5:584acd257531 122 ncs=1;
chriselsholz 5:584acd257531 123 wait_us(0.1);
MarcoF89 4:3eaf38e4809f 124
chriselsholz 5:584acd257531 125 int16_t x = (x_high<<8) | x_low;
chriselsholz 5:584acd257531 126 return x;
chriselsholz 5:584acd257531 127 }
MarcoF89 4:3eaf38e4809f 128
chriselsholz 5:584acd257531 129 int16_t aktuell_acc_y ()
chriselsholz 5:584acd257531 130 {
chriselsholz 5:584acd257531 131 ncs=0;
chriselsholz 5:584acd257531 132 spi.write(0xbd);
chriselsholz 5:584acd257531 133 int16_t y_high = spi.write(0x0);
chriselsholz 5:584acd257531 134 ncs=1;
chriselsholz 5:584acd257531 135 wait_us(0.1);
chriselsholz 5:584acd257531 136
chriselsholz 5:584acd257531 137 ncs=0;
chriselsholz 5:584acd257531 138 spi.write(0xbe);
chriselsholz 5:584acd257531 139 int16_t y_low = spi.write(0x0);
chriselsholz 5:584acd257531 140 ncs=1;
chriselsholz 5:584acd257531 141 wait_us(0.1);
MarcoF89 4:3eaf38e4809f 142
chriselsholz 5:584acd257531 143 int16_t y = (y_high<<8) | y_low;
chriselsholz 5:584acd257531 144 return y;
chriselsholz 5:584acd257531 145 }
MarcoF89 4:3eaf38e4809f 146
chriselsholz 5:584acd257531 147 int16_t aktuell_acc_z ()
chriselsholz 5:584acd257531 148 {
chriselsholz 5:584acd257531 149 ncs=0;
chriselsholz 5:584acd257531 150 spi.write(0xbf);
chriselsholz 5:584acd257531 151 int16_t z_high = spi.write(0x0);
chriselsholz 5:584acd257531 152 ncs=1;
chriselsholz 5:584acd257531 153 wait_us(0.1);
chriselsholz 5:584acd257531 154
chriselsholz 5:584acd257531 155 ncs=0;
chriselsholz 5:584acd257531 156 spi.write(0xc0);
chriselsholz 5:584acd257531 157 int16_t z_low = spi.write(0x0);
chriselsholz 5:584acd257531 158 ncs=1;
chriselsholz 5:584acd257531 159 wait_us(0.1);
chriselsholz 5:584acd257531 160
chriselsholz 5:584acd257531 161 int16_t z = (z_high<<8) | z_low;
chriselsholz 5:584acd257531 162 return z;
chriselsholz 5:584acd257531 163 }