Rev 1961 | Rev 1964 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1961 | Rev 1963 | ||
---|---|---|---|
Line 2... | Line 2... | ||
2 | // + Copyright (c) 04.2007 Holger Buss |
2 | // + Copyright (c) 04.2007 Holger Buss |
3 | // + Nur für den privaten Gebrauch |
3 | // + Nur für den privaten Gebrauch |
4 | // + www.MikroKopter.com |
4 | // + www.MikroKopter.com |
5 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
5 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
6 | // + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
6 | // + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation), |
7 | // + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist. |
7 | // + dass eine Nutzung (auch auszugsweise) nur f�r den privaten und nicht-kommerziellen Gebrauch zulässig ist. |
8 | // + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
8 | // + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt |
9 | // + bzgl. der Nutzungsbedingungen aufzunehmen. |
9 | // + bzgl. der Nutzungsbedingungen aufzunehmen. |
10 | // + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
10 | // + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen, |
11 | // + Verkauf von Luftbildaufnahmen, usw. |
11 | // + Verkauf von Luftbildaufnahmen, usw. |
12 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
12 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
13 | // + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
13 | // + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht, |
14 | // + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
14 | // + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen |
15 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
15 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
16 | // + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
16 | // + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts |
17 | // + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
17 | // + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de" |
18 | // + eindeutig als Ursprung verlinkt werden |
18 | // + eindeutig als Ursprung verlinkt und genannt werden |
19 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
19 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
20 | // + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
20 | // + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion |
21 | // + Benutzung auf eigene Gefahr |
21 | // + Benutzung auf eigene Gefahr |
22 | // + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
22 | // + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden |
23 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
23 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Line 42... | Line 42... | ||
42 | // + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
42 | // + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
43 | // + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
43 | // + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
44 | // + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
44 | // + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
45 | // + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
45 | // + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
46 | // + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
46 | // + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
- | 47 | // + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
47 | // + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
48 | // + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
48 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
49 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
49 | // + POSSIBILITY OF SUCH DAMAGE. |
50 | // + POSSIBILITY OF SUCH DAMAGE. |
50 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
51 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
51 | #include <avr/io.h> |
52 | #include <avr/io.h> |
52 | #include <avr/interrupt.h> |
53 | #include <avr/interrupt.h> |
Line 248... | Line 249... | ||
248 | startADC(); |
249 | startADC(); |
249 | } |
250 | } |
Line 250... | Line 251... | ||
250 | 251 | ||
251 | /***************************************************** |
252 | /***************************************************** |
252 | * Interrupt Service Routine for ADC |
253 | * Interrupt Service Routine for ADC |
253 | * Runs at 312.5 kHz or 3.2 µs. When all states are |
254 | * Runs at 312.5 kHz or 3.2 �s. When all states are |
254 | * processed further conversions are stopped. |
255 | * processed further conversions are stopped. |
255 | *****************************************************/ |
256 | *****************************************************/ |
256 | ISR(ADC_vect) { |
257 | ISR(ADC_vect) { |
257 | static uint8_t ad_channel = AD_GYRO_PITCH, state = 0; |
258 | static uint8_t ad_channel = AD_GYRO_PITCH, state = 0; |
Line 492... | Line 493... | ||
492 | } |
493 | } |
Line 493... | Line 494... | ||
493 | 494 | ||
494 | void analog_calibrateGyros(void) { |
495 | void analog_calibrateGyros(void) { |
495 | #define GYRO_OFFSET_CYCLES 32 |
496 | #define GYRO_OFFSET_CYCLES 32 |
496 | uint8_t i, axis; |
497 | uint8_t i, axis; |
497 | int32_t deltaOffsets[3] = { 0, 0, 0 }; |
498 | int32_t offsets[3] = { 0, 0, 0 }; |
Line 498... | Line 499... | ||
498 | gyro_calibrate(); |
499 | gyro_calibrate(); |
499 | 500 | ||
500 | // determine gyro bias by averaging (requires that the copter does not rotate around any axis!) |
501 | // determine gyro bias by averaging (requires that the copter does not rotate around any axis!) |
501 | for (i = 0; i < GYRO_OFFSET_CYCLES; i++) { |
502 | for (i = 0; i < GYRO_OFFSET_CYCLES; i++) { |
502 | delay_ms_Mess(20); |
503 | delay_ms_Mess(20); |
503 | for (axis = PITCH; axis <= YAW; axis++) { |
504 | for (axis = PITCH; axis <= YAW; axis++) { |
504 | deltaOffsets[axis] += rawGyroSum[axis]; |
505 | offsets[axis] += rawGyroSum[axis]; |
Line 505... | Line 506... | ||
505 | } |
506 | } |
506 | } |
507 | } |
507 | - | ||
508 | for (axis = PITCH; axis <= YAW; axis++) { |
508 | |
Line 509... | Line 509... | ||
509 | gyroOffset.offsets[axis] = (deltaOffsets[axis] + GYRO_OFFSET_CYCLES / 2) / GYRO_OFFSET_CYCLES; |
509 | for (axis = PITCH; axis <= YAW; axis++) { |
510 | debugOut.analog[6+axis] = gyroOffset.offsets[axis]; |
510 | gyroOffset.offsets[axis] = (offsets[axis] + GYRO_OFFSET_CYCLES / 2) / GYRO_OFFSET_CYCLES; |
Line 523... | Line 523... | ||
523 | void analog_calibrateAcc(void) { |
523 | void analog_calibrateAcc(void) { |
524 | #define ACC_OFFSET_CYCLES 10 |
524 | #define ACC_OFFSET_CYCLES 10 |
525 | uint8_t i, axis; |
525 | uint8_t i, axis; |
526 | int32_t deltaOffset[3] = { 0, 0, 0 }; |
526 | int32_t deltaOffset[3] = { 0, 0, 0 }; |
527 | int16_t filteredDelta; |
527 | int16_t filteredDelta; |
528 | // int16_t pressureDiff, savedRawAirPressure; |
- | |
Line 529... | Line 528... | ||
529 | 528 | ||
530 | for (i = 0; i < ACC_OFFSET_CYCLES; i++) { |
529 | for (i = 0; i < ACC_OFFSET_CYCLES; i++) { |
531 | delay_ms_Mess(10); |
530 | delay_ms_Mess(10); |
532 | for (axis = PITCH; axis <= YAW; axis++) { |
531 | for (axis = PITCH; axis <= YAW; axis++) { |