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); |