Rev 2081 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2081 | Rev 2093 | ||
---|---|---|---|
Line 56... | Line 56... | ||
56 | volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
56 | volatile int Aktuell_Nick,Aktuell_Roll,Aktuell_Gier,Aktuell_ax, Aktuell_ay,Aktuell_az, UBat = 100; |
57 | volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0; |
57 | volatile int AdWertNickFilter = 0, AdWertRollFilter = 0, AdWertGierFilter = 0; |
58 | volatile int HiResNick = 2500, HiResRoll = 2500; |
58 | volatile int HiResNick = 2500, HiResRoll = 2500; |
59 | volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
59 | volatile int AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0; |
60 | volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
60 | volatile int AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0; |
- | 61 | //volatile char messanzahl_AccHoch = 0; // MartinR |
|
61 | volatile long Luftdruck = 32000; |
62 | volatile long Luftdruck = 32000; |
62 | volatile long SummenHoehe = 0; |
63 | volatile long SummenHoehe = 0; |
63 | volatile int StartLuftdruck; |
64 | volatile int StartLuftdruck; |
64 | volatile unsigned int MessLuftdruck = 1023; |
65 | volatile unsigned int MessLuftdruck = 1023; |
65 | unsigned char DruckOffsetSetting; |
66 | unsigned char DruckOffsetSetting; |
Line 183... | Line 184... | ||
183 | // |
184 | // |
184 | ISR(ADC_vect) |
185 | ISR(ADC_vect) |
185 | //####################################################################################### |
186 | //####################################################################################### |
186 | { |
187 | { |
187 | static unsigned char kanal=0,state = 0; |
188 | static unsigned char kanal=0,state = 0; |
188 | static signed char subcount = 0; |
189 | //static signed char subcount = 0; // MartinR: wird nicht mehr benötigt, da deaktiviert |
189 | static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
190 | static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
190 | static signed int accy, accx; |
191 | static signed int accy, accx; |
191 | static long tmpLuftdruck = 0; |
192 | static long tmpLuftdruck = 0; |
192 | static char messanzahl_Druck = 0; |
193 | static char messanzahl_Druck = 0; |
193 | switch(state++) |
194 | switch(state++) |
Line 230... | Line 231... | ||
230 | UBat = (3 * UBat + ADC / 3) / 4; |
231 | UBat = (3 * UBat + ADC / 3) / 4; |
231 | kanal = AD_ACC_Z; |
232 | kanal = AD_ACC_Z; |
232 | break; |
233 | break; |
233 | case 8: |
234 | case 8: |
234 | AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
235 | AdWertAccHoch = (signed int) ADC - NeutralAccZ; |
- | 236 | ||
- | 237 | /* // MartinR: deaktivieren Anfang |
|
- | 238 | |
|
235 | if(AdWertAccHoch > 1) |
239 | if(AdWertAccHoch > 1) |
236 | { |
240 | { |
237 | if(NeutralAccZ < 750) |
241 | if(NeutralAccZ < 750) |
238 | { |
242 | { |
239 | subcount += 5; |
243 | subcount += 5; |
Line 248... | Line 252... | ||
248 | subcount -= 5; |
252 | subcount -= 5; |
249 | if(modell_fliegt < 500) subcount -= 10; |
253 | if(modell_fliegt < 500) subcount -= 10; |
250 | if(subcount < -100) { NeutralAccZ--; subcount += 100;} |
254 | if(subcount < -100) { NeutralAccZ--; subcount += 100;} |
251 | } |
255 | } |
252 | } |
256 | } |
- | 257 | |
|
- | 258 | */ // MartinR: deaktivieren Ende |
|
- | 259 | ||
253 | // messanzahl_AccHoch = 1; |
260 | //messanzahl_AccHoch = 1; |
254 | Aktuell_az = ADC; |
261 | Aktuell_az = ADC; |
255 | Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
262 | Mess_Integral_Hoch += AdWertAccHoch; // Integrieren |
256 | Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
263 | Mess_Integral_Hoch -= Mess_Integral_Hoch / 1024; // dämfen |
257 | kanal = AD_DRUCK; |
264 | kanal = AD_DRUCK; |
258 | break; |
265 | break; |
Line 285... | Line 292... | ||
285 | case 15: |
292 | case 15: |
286 | nick1 += ADC; |
293 | nick1 += ADC; |
287 | if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; |
294 | if(PlatinenVersion == 10) nick1 *= 2; else nick1 *= 4; |
288 | AdWertNick = nick1 / 8; |
295 | AdWertNick = nick1 / 8; |
289 | nick_filter = (nick_filter + nick1) / 2; |
296 | nick_filter = (nick_filter + nick1) / 2; |
290 | HiResNick = nick_filter - AdNeutralNick; |
297 | //HiResNick = nick_filter - AdNeutralNick; // MartinR: so war es |
- | 298 | HiResNick = (nick_filter - AdNeutralNick + 4 ) / 8 ; // MartinR: + 4um Rundungsfehler zu verbessern |
|
- | 299 | // MartinR: /8 von fc.c nach hier verschoben um Code zu sparen |
|
291 | AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; |
300 | AdWertNickFilter = (AdWertNickFilter + HiResNick) / 2; |
292 | kanal = AD_ROLL; |
301 | kanal = AD_ROLL; |
293 | break; |
302 | break; |
294 | case 16: |
303 | case 16: |
295 | roll1 += ADC; |
304 | roll1 += ADC; |
296 | if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; |
305 | if(PlatinenVersion == 10) roll1 *= 2; else roll1 *= 4; |
297 | AdWertRoll = roll1 / 8; |
306 | AdWertRoll = roll1 / 8; |
298 | roll_filter = (roll_filter + roll1) / 2; |
307 | roll_filter = (roll_filter + roll1) / 2; |
299 | HiResRoll = roll_filter - AdNeutralRoll; |
308 | //HiResRoll = roll_filter - AdNeutralRoll; // MartinR: so war es |
- | 309 | HiResRoll = (roll_filter - AdNeutralRoll + 4 ) / 8; // MartinR: + 4um Rundungsfehler zu verbessern |
|
- | 310 | // MartinR: /8 von fc.c nach hier verschoben um Code zu sparen |
|
300 | AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; |
311 | AdWertRollFilter = (AdWertRollFilter + HiResRoll) / 2; |
301 | kanal = AD_DRUCK; |
312 | kanal = AD_DRUCK; |
302 | break; |
313 | break; |
303 | case 17: |
314 | case 17: |
304 | state = 0; |
315 | state = 0; |
305 | AdReady = 1; |
316 | AdReady = 1; |
306 | ZaehlMessungen++; |
317 | ZaehlMessungen++; |
307 | // "break" fehlt hier absichtlich |
318 | // "break" fehlt hier absichtlich |
308 | case 9: |
319 | case 9: |
309 | MessLuftdruck = ADC; |
320 | //MessLuftdruck = ADC; // MartinR: so war es |
- | 321 | MessLuftdruck = ADC + ((Parameter_UserParam4 * AdWertAccHoch) / 256) ; // MartinR: |
|
- | 322 | // mit Korrektur der Beschleunigungsempfindlichkeit des Luftdrucksensors |
|
310 | tmpLuftdruck += MessLuftdruck; |
323 | tmpLuftdruck += MessLuftdruck; |
311 | if(++messanzahl_Druck >= 16) // war bis 0.86 "18" |
324 | if(++messanzahl_Druck >= 16) // war bis 0.86 "18" |
312 | { |
325 | { |
313 | signed int tmp; |
326 | signed int tmp; |
314 | Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
327 | Luftdruck = (7 * Luftdruck + tmpLuftdruck - (16 * 523) * (long)ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |