Subversion Repositories FlightCtrl

Rev

Rev 1179 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1179 Rev 1180
Line 1... Line 1...
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
// + Copyright (c) 04.2007 Holger Buss
2
// + Copyright (c) 04.2007 Holger Buss
3
// + only for non-profit use
3
// + Nur für den privaten Gebrauch
4
// + www.MikroKopter.com
4
// + www.MikroKopter.com
5
// + see the File "License.txt" for further Informations
-
 
6
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
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.
-
 
8
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
-
 
9
// + bzgl. der Nutzungsbedingungen aufzunehmen.
-
 
10
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
-
 
11
// + Verkauf von Luftbildaufnahmen, usw.
7
 
-
 
-
 
12
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
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
-
 
15
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
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"
-
 
18
// + eindeutig als Ursprung verlinkt werden
-
 
19
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
20
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
-
 
21
// + Benutzung auf eigene Gefahr
-
 
22
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
-
 
23
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
24
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
-
 
25
// + mit unserer Zustimmung zulässig
-
 
26
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
27
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
-
 
28
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
29
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
-
 
30
// + this list of conditions and the following disclaimer.
-
 
31
// +   * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
-
 
32
// +     from this software without specific prior written permission.
-
 
33
// +   * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
-
 
34
// +     for non-commercial use (directly or indirectly)
-
 
35
// +     Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
-
 
36
// +     with our written permission
-
 
37
// +   * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
-
 
38
// +     clearly linked as origin
-
 
39
// +   * porting to systems other than hardware from www.mikrokopter.de is not allowed
-
 
40
// +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-
 
41
// +  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-
 
42
// +  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-
 
43
// +  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-
 
44
// +  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-
 
45
// +  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-
 
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// +  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
// +  POSSIBILITY OF SUCH DAMAGE.
-
 
50
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8
#include <stdlib.h>
51
#include <stdlib.h>
9
#include <inttypes.h>
52
#include <inttypes.h>
10
#include "main.h"
53
#include "main.h"
11
#include "eeprom.h"
54
#include "eeprom.h"
12
#include "timer2.h"
55
#include "timer2.h"
13
#include "fc.h"
56
#include "fc.h"
14
#include "rc.h"
57
#include "rc.h"
15
#include "uart.h"
58
#include "uart0.h"
16
#include "printf_P.h"
59
#include "printf_P.h"
17
#include "analog.h"
60
#include "analog.h"
Line 18... Line 61...
18
 
61
 
19
#ifdef USE_KILLAGREG
62
#ifdef USE_KILLAGREG
Line 22... Line 65...
22
 
65
 
23
#if (defined (USE_KILLAGREG) || defined (USE_MK3MAG))
66
#if (defined (USE_KILLAGREG) || defined (USE_MK3MAG))
24
#include "ubx.h"
67
#include "ubx.h"
Line 25... Line -...
25
#endif
-
 
26
 
-
 
27
#include "_Settings.h"
68
#endif
28
 
69
 
29
#if (!defined (USE_KILLAGREG) && !defined (USE_MK3MAG))
70
#if (!defined (USE_KILLAGREG) && !defined (USE_MK3MAG))
30
uint8_t MaxMenuItem = 11;
71
uint8_t MaxMenuItem = 11;
31
#else
72
#else
Line 97... Line 138...
97
        switch(MenuItem)
138
        switch(MenuItem)
98
        {
139
        {
99
    case 0:// Version Info Menu Item
140
    case 0:// Version Info Menu Item
100
           LCD_printfxy(0,0,"+ MikroKopter +");
141
           LCD_printfxy(0,0,"+ MikroKopter +");
101
           LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",BoardRelease/10,BoardRelease%10,VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH+'a');
142
           LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",BoardRelease/10,BoardRelease%10,VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH+'a');
-
 
143
           #ifndef USE_QUADRO
-
 
144
                   LCD_printfxy(0,2,"OCTO    Setting: %d ", GetActiveParamSet());
-
 
145
           #else
102
           LCD_printfxy(0,2,"Setting: %d ", GetActiveParamSet());
146
           LCD_printfxy(0,2,"QUADRO  Setting: %d ", GetActiveParamSet());
-
 
147
           #endif
103
           LCD_printfxy(0,3,"(c) Holger Buss");
148
           LCD_printfxy(0,3,"(c) Holger Buss");
104
           break;
149
           break;
105
    case 1:// Height Control Menu Item
150
    case 1:// Height Control Menu Item
106
          if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)
151
          if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)
107
           {
152
           {
Line 117... Line 162...
117
           }
162
           }
Line 118... Line 163...
118
 
163
 
119
           break;
164
           break;
120
    case 2:// Attitude Menu Item
165
    case 2:// Attitude Menu Item
121
           LCD_printfxy(0,0,"Attitude");
166
           LCD_printfxy(0,0,"Attitude");
122
           LCD_printfxy(0,1,"Nick:      %5i",IntegralNick/1024);
167
           LCD_printfxy(0,1,"Nick:      %5i",IntegralGyroNick/1024);
123
           LCD_printfxy(0,2,"Roll:      %5i",IntegralRoll/1024);
168
           LCD_printfxy(0,2,"Roll:      %5i",IntegralGyroRoll/1024);
124
           LCD_printfxy(0,3,"Heading:   %5i",CompassHeading);
169
           LCD_printfxy(0,3,"Heading:   %5i",CompassHeading);
125
           break;
170
           break;
126
    case 3:// Remote Control Channel Menu Item
171
    case 3:// Remote Control Channel Menu Item
127
           LCD_printfxy(0,0,"C1:%4i  C2:%4i ",PPM_in[1],PPM_in[2]);
172
           LCD_printfxy(0,0,"C1:%4i  C2:%4i ",PPM_in[1],PPM_in[2]);
Line 138... Line 183...
138
        case 5:// Gyro Sensor Menu Item
183
        case 5:// Gyro Sensor Menu Item
139
           LCD_printfxy(0,0,"Gyro - Sensor");
184
           LCD_printfxy(0,0,"Gyro - Sensor");
140
           switch(BoardRelease)
185
           switch(BoardRelease)
141
           {
186
           {
142
                        case 10:
187
                        case 10:
143
                           LCD_printfxy(0,1,"Nick %4i (%3i)",AdValueGyrNick - AdNeutralNick, AdNeutralNick);
188
                           LCD_printfxy(0,1,"Nick %4i (%3i.%i)",AdValueGyroNick - BiasHiResGyroNick / HIRES_GYRO_AMPLIFY, BiasHiResGyroNick / HIRES_GYRO_AMPLIFY, BiasHiResGyroNick % HIRES_GYRO_AMPLIFY);
144
                           LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll);
189
                           LCD_printfxy(0,2,"Roll %4i (%3i.%i)",AdValueGyroRoll - BiasHiResGyroRoll / HIRES_GYRO_AMPLIFY, BiasHiResGyroRoll / HIRES_GYRO_AMPLIFY, BiasHiResGyroRoll % HIRES_GYRO_AMPLIFY);
145
                           LCD_printfxy(0,3,"Yaw  %4i (%3i)",AdNeutralYaw  - AdValueGyrYaw , AdNeutralYaw);
190
                           LCD_printfxy(0,3,"Yaw  %4i (%3i)",AdBiasGyroYaw  - AdValueGyroYaw , AdBiasGyroYaw);
146
                           break;
191
                           break;
Line 147... Line 192...
147
 
192
 
148
                        case 11:
193
                        case 11:
149
                        case 12:
194
                        case 12:
150
                        case 20:
195
                        case 20: // divice Offests by 2 becuse 2 samples are added in adc isr
151
                           LCD_printfxy(0,1,"Nick %4i (%3i)",AdValueGyrNick - AdNeutralNick, AdNeutralNick/2);
196
                           LCD_printfxy(0,1,"Nick %4i (%3i.%i)",AdValueGyroNick - BiasHiResGyroNick/HIRES_GYRO_AMPLIFY, BiasHiResGyroNick / (HIRES_GYRO_AMPLIFY * 2), (BiasHiResGyroNick % (HIRES_GYRO_AMPLIFY * 2)) / 2); // division by 2 to push the reminder below 10 (15/2 = 7)
152
                           LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll/2);
197
                           LCD_printfxy(0,2,"Roll %4i (%3i.%i)",AdValueGyroRoll - BiasHiResGyroRoll/HIRES_GYRO_AMPLIFY, BiasHiResGyroRoll / (HIRES_GYRO_AMPLIFY * 2), (BiasHiResGyroRoll % (HIRES_GYRO_AMPLIFY * 2)) / 2); // division by 2 to push the reminder below 10 (15/2 = 7)
153
                           LCD_printfxy(0,3,"Yaw  %4i (%3i)",AdNeutralYaw  - AdValueGyrYaw , AdNeutralYaw/2);
198
                           LCD_printfxy(0,3,"Yaw  %4i (%3i)",AdBiasGyroYaw  - AdValueGyroYaw , AdBiasGyroYaw/2);
Line 154... Line 199...
154
                           break;
199
                           break;
155
 
200
 
156
                        case 13:
201
                        case 13:
157
                        default:
202
                        default: // divice Offests by 2 becuse 2 samples are added in adc isr
158
                           LCD_printfxy(0,1,"Nick %4i (%3i)(%3i)",AdValueGyrNick - AdNeutralNick, AdNeutralNick/2, AnalogOffsetNick);
203
                           LCD_printfxy(0,1,"Nick %4i (%3i.%i)(%3i)",AdValueGyroNick - BiasHiResGyroNick/HIRES_GYRO_AMPLIFY, BiasHiResGyroNick / (HIRES_GYRO_AMPLIFY * 2), (BiasHiResGyroNick % (HIRES_GYRO_AMPLIFY * 2))/2, DacOffsetGyroNick); // division by 2 to push the reminder below 10 (15/2 = 7)
159
                           LCD_printfxy(0,2,"Roll %4i (%3i)(%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll/2, AnalogOffsetRoll);
204
                           LCD_printfxy(0,2,"Roll %4i (%3i.%i)(%3i)",AdValueGyroRoll - BiasHiResGyroRoll/HIRES_GYRO_AMPLIFY, BiasHiResGyroRoll / (HIRES_GYRO_AMPLIFY * 2), (BiasHiResGyroRoll % (HIRES_GYRO_AMPLIFY * 2))/2, DacOffsetGyroRoll); // division by 2 to push the reminder below 10 (15/2 = 7)
160
                           LCD_printfxy(0,3,"Yaw  %4i (%3i)(%3i)",AdNeutralYaw  - AdValueGyrYaw , AdNeutralYaw/2 , AnalogOffsetYaw );
205
                           LCD_printfxy(0,3,"Yaw  %4i (%3i)(%3i)",AdBiasGyroYaw  - AdValueGyroYaw , AdBiasGyroYaw/2, DacOffsetGyroYaw );
161
                           break;
206
                           break;
162
          }
207
          }
163
          break;
208
          break;
164
    case 6:// Acceleration Sensor Menu Item
209
    case 6:// Acceleration Sensor Menu Item
165
           LCD_printfxy(0,0,"ACC - Sensor");
210
           LCD_printfxy(0,0,"ACC - Sensor");
166
           LCD_printfxy(0,1,"Nick   %4i (%3i)",AdValueAccNick, NeutralAccX);
211
           LCD_printfxy(0,1,"Nick   %4i (%3i)",AdValueAccNick/2, AdBiasAccNick/2); // factor 2 because of adding 2 samples in ADC ISR
167
           LCD_printfxy(0,2,"Roll   %4i (%3i)",AdValueAccRoll, NeutralAccY);
212
           LCD_printfxy(0,2,"Roll   %4i (%3i)",AdValueAccRoll/2, AdBiasAccRoll/2); // factor 2 because of adding 2 samples in ADC ISR
168
           LCD_printfxy(0,3,"Height %4i (%3i)",Mean_AccTop, (int)NeutralAccZ);
213
           LCD_printfxy(0,3,"Height %4i (%3i)",AdValueAccTop, (int16_t)AdBiasAccTop);
169
           break;
214
           break;
170
    case 7:// Accumulator Voltage / Remote Control Level
215
    case 7:// Accumulator Voltage / Remote Control Level
171
           LCD_printfxy(0,1,"Voltage:  %5i",UBat);
216
           LCD_printfxy(0,1,"Voltage:  %3i.%1iV",UBat/10, UBat%10);
172
           LCD_printfxy(0,2,"RC-Level: %5i",RC_Quality);
217
           LCD_printfxy(0,2,"RC-Level: %5i",RC_Quality);
173
           break;
218
           break;
174
    case 8:// Compass Menu Item
219
    case 8:// Compass Menu Item
Line 184... Line 229...
184
                   LCD_printfxy(0,3,"Po4: %3i Po8: %3i" ,Poti4,Poti8); //PPM24-Extesion
229
                   LCD_printfxy(0,3,"Po4: %3i Po8: %3i" ,Poti4,Poti8); //PPM24-Extesion
185
           break;
230
           break;
186
    case 10:// Servo Menu Item
231
    case 10:// Servo Menu Item
187
           LCD_printfxy(0,0,"Servo  " );
232
           LCD_printfxy(0,0,"Servo  " );
188
           LCD_printfxy(0,1,"Setpoint  %3i",FCParam.ServoNickControl);
233
           LCD_printfxy(0,1,"Setpoint  %3i",FCParam.ServoNickControl);
189
           LCD_printfxy(0,2,"Position: %3i",ServoValue);
234
           LCD_printfxy(0,2,"Position: %3i",ServoNickValue);
190
           LCD_printfxy(0,3,"Range:%3i-%3i",ParamSet.ServoNickMin, ParamSet.ServoNickMax);
235
           LCD_printfxy(0,3,"Range:%3i-%3i",ParamSet.ServoNickMin, ParamSet.ServoNickMax);
191
           break;
236
           break;
192
    case 11://Extern Control
237
    case 11://Extern Control
193
           LCD_printfxy(0,0,"ExternControl  " );
238
           LCD_printfxy(0,0,"ExternControl  " );
194
           LCD_printfxy(0,1,"Ni:%4i  Ro:%4i ",ExternControl.Nick, ExternControl.Roll);
239
           LCD_printfxy(0,1,"Ni:%4i  Ro:%4i ",ExternControl.Nick, ExternControl.Roll);