Rev 1246 | Rev 1266 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1246 | Rev 1253 | ||
---|---|---|---|
Line 15... | Line 15... | ||
15 | volatile long Luftdruck = 32000; |
15 | volatile long Luftdruck = 32000; |
16 | volatile int StartLuftdruck; |
16 | volatile int StartLuftdruck; |
17 | volatile unsigned int MessLuftdruck = 1023; |
17 | volatile unsigned int MessLuftdruck = 1023; |
18 | unsigned char DruckOffsetSetting; |
18 | unsigned char DruckOffsetSetting; |
19 | signed char ExpandBaro = 0; |
19 | signed char ExpandBaro = 0; |
20 | volatile int HoeheD = 0; |
20 | volatile int VarioMeter = 0; |
21 | volatile char messanzahl_Druck; |
- | |
22 | volatile long tmpLuftdruck; |
- | |
23 | volatile unsigned int ZaehlMessungen = 0; |
21 | volatile unsigned int ZaehlMessungen = 0; |
24 | unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
22 | unsigned char AnalogOffsetNick = 115,AnalogOffsetRoll = 115,AnalogOffsetGier = 115; |
25 | unsigned char GyroDefektN = 0,GyroDefektR = 0,GyroDefektG = 0; |
23 | unsigned char GyroDefektN = 0,GyroDefektR = 0,GyroDefektG = 0; |
26 | volatile unsigned char AdReady = 1; |
24 | volatile unsigned char AdReady = 1; |
27 | //####################################################################################### |
25 | //####################################################################################### |
Line 71... | Line 69... | ||
71 | i2c_start(); |
69 | i2c_start(); |
72 | if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;}; |
70 | if(AnalogOffsetNick < 10) { GyroDefektN = 1; AnalogOffsetNick = 10;}; if(AnalogOffsetNick > 245) { GyroDefektN = 1; AnalogOffsetNick = 245;}; |
73 | if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;}; |
71 | if(AnalogOffsetRoll < 10) { GyroDefektR = 1; AnalogOffsetRoll = 10;}; if(AnalogOffsetRoll > 245) { GyroDefektR = 1; AnalogOffsetRoll = 245;}; |
74 | if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;}; |
72 | if(AnalogOffsetGier < 10) { GyroDefektG = 1; AnalogOffsetGier = 10;}; if(AnalogOffsetGier > 245) { GyroDefektG = 1; AnalogOffsetGier = 245;}; |
75 | while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;} |
73 | while(twi_state) if(CheckDelay(timeout)) {printf("\n\r DAC or I2C ERROR! Check I2C, 3Vref, DAC and BL-Ctrl"); break;} |
76 | messanzahl_Druck = 0; |
74 | AdReady = 0; |
77 | ANALOG_ON; |
75 | ANALOG_ON; |
78 | while(messanzahl_Druck == 0); |
76 | while(!AdReady); |
79 | if(i<10) Delay_ms_Mess(10); |
77 | if(i<10) Delay_ms_Mess(10); |
80 | } |
78 | } |
81 | Delay_ms_Mess(70); |
79 | Delay_ms_Mess(70); |
82 | } |
80 | } |
Line 108... | Line 106... | ||
108 | //####################################################################################### |
106 | //####################################################################################### |
109 | { |
107 | { |
110 | static unsigned char kanal=0,state = 0; |
108 | static unsigned char kanal=0,state = 0; |
111 | static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
109 | static signed int gier1, roll1, nick1, nick_filter, roll_filter; |
112 | static signed int accy, accx; |
110 | static signed int accy, accx; |
- | 111 | ||
- | 112 | static long tmpLuftdruck = 0; |
|
- | 113 | static char messanzahl_Druck = 0; |
|
- | 114 | static long SummenHoehe = 0; |
|
- | 115 | ||
113 | switch(state++) |
116 | switch(state++) |
114 | { |
117 | { |
115 | case 0: |
118 | case 0: |
116 | nick1 = ADC; |
119 | nick1 = ADC; |
117 | kanal = AD_ROLL; |
120 | kanal = AD_ROLL; |
Line 218... | Line 221... | ||
218 | state = 0; |
221 | state = 0; |
219 | AdReady = 1; |
222 | AdReady = 1; |
220 | ZaehlMessungen++; |
223 | ZaehlMessungen++; |
221 | // "break" fehlt hier absichtlich |
224 | // "break" fehlt hier absichtlich |
222 | case 9: |
225 | case 9: |
223 | tmpLuftdruck += ADC; |
226 | MessLuftdruck = ADC; |
- | 227 | tmpLuftdruck += MessLuftdruck; |
|
224 | if(++messanzahl_Druck >= 5) |
228 | if(++messanzahl_Druck >= 18) |
225 | { |
229 | { |
226 | tmpLuftdruck -= 2616L * ExpandBaro; // -523.19 counts per 10 counts offset step |
230 | Luftdruck = (7 * Luftdruck + tmpLuftdruck - 18 * 519 * ExpandBaro + 4) / 8; // -523.19 counts per 10 counts offset step |
227 | tmpLuftdruck /= 2; |
231 | HoehenWert = StartLuftdruck - Luftdruck; |
- | 232 | SummenHoehe -= SummenHoehe/8; |
|
- | 233 | SummenHoehe += HoehenWert; |
|
- | 234 | VarioMeter = (3 * VarioMeter + 25 * (int)(HoehenWert - SummenHoehe/8))/4; |
|
228 | MessLuftdruck = ADC; |
235 | tmpLuftdruck = 0; |
229 | messanzahl_Druck = 0; |
236 | messanzahl_Druck = 0; |
230 | HoeheD = (31 * HoeheD + (int) Parameter_Luftdruck_D * (int)((int)(StartLuftdruck - tmpLuftdruck) - HoehenWert))/32; // D-Anteil = neuerWert - AlterWert |
- | |
231 | Luftdruck = (tmpLuftdruck + 7 * Luftdruck + 4) / 8; |
- | |
232 | HoehenWert = StartLuftdruck - Luftdruck; |
- | |
233 | tmpLuftdruck /= 2; |
- | |
234 | } |
237 | } |
235 | kanal = AD_NICK; |
238 | kanal = AD_NICK; |
236 | break; |
239 | break; |
237 | default: |
240 | default: |
238 | kanal = 0; state = 0; kanal = AD_NICK; |
241 | kanal = 0; state = 0; kanal = AD_NICK; |
239 | break; |
242 | break; |