Subversion Repositories FlightCtrl

Rev

Rev 1320 | Rev 1338 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1320 Rev 1322
Line 11... Line 11...
11
volatile int  HiResNick = 2500, HiResRoll = 2500;
11
volatile int  HiResNick = 2500, HiResRoll = 2500;
12
volatile int  AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0;
12
volatile int  AdWertNick = 0, AdWertRoll = 0, AdWertGier = 0;
13
volatile int  AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0;
13
volatile int  AdWertAccRoll = 0,AdWertAccNick = 0,AdWertAccHoch = 0;
14
volatile char messanzahl_AccHoch = 0;
14
volatile char messanzahl_AccHoch = 0;
15
volatile long Luftdruck = 32000;
15
volatile long Luftdruck = 32000;
-
 
16
volatile long SummenHoehe = 0;
16
volatile int  StartLuftdruck;
17
volatile int  StartLuftdruck;
17
volatile unsigned int  MessLuftdruck = 1023;
18
volatile unsigned int  MessLuftdruck = 1023;
18
unsigned char DruckOffsetSetting;
19
unsigned char DruckOffsetSetting;
19
signed char ExpandBaro = 0;
20
signed char ExpandBaro = 0;
20
volatile int VarioMeter = 0;
21
volatile int VarioMeter = 0;
Line 29... Line 30...
29
{
30
{
30
    ADMUX = 0;//Referenz ist extern
31
    ADMUX = 0;//Referenz ist extern
31
    ANALOG_ON;
32
    ANALOG_ON;
32
}
33
}
Line -... Line 34...
-
 
34
 
-
 
35
#define DESIRED_H_ADC 850
33
 
36
 
34
void SucheLuftruckOffset(void)
37
void SucheLuftruckOffset(void)
35
{
38
{
36
 unsigned int off;
39
 unsigned int off;
37
 off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]);
40
 off = eeprom_read_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET]);
38
 if(off > 20) off -= 10;
41
 if(off > 20) off -= 10;
39
 OCR0A = off;
42
 OCR0A = off;
40
 ExpandBaro = 0;
43
 ExpandBaro = 0;
41
 Delay_ms_Mess(100);
44
 Delay_ms_Mess(100);
42
 if(MessLuftdruck < 850) off = 0;
45
 if(MessLuftdruck < DESIRED_H_ADC) off = 0;
43
 for(; off < 250;off++)
46
 for(; off < 250;off++)
44
  {
47
  {
45
  OCR0A = off;
48
  OCR0A = off;
46
  Delay_ms_Mess(50);
49
  Delay_ms_Mess(50);
47
  printf(".");
50
  printf(".");
48
  if(MessLuftdruck < 850) break;
51
  if(MessLuftdruck < DESIRED_H_ADC) break;
49
  }
52
  }
50
 eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off);
53
 eeprom_write_byte(&EEPromArray[EEPROM_ADR_LAST_OFFSET], off);
51
 DruckOffsetSetting = off;
54
 DruckOffsetSetting = off;
52
 Delay_ms_Mess(300);
55
 Delay_ms_Mess(300);
Line 109... Line 112...
109
    static signed int gier1, roll1, nick1, nick_filter, roll_filter;
112
    static signed int gier1, roll1, nick1, nick_filter, roll_filter;
110
        static signed int accy, accx;
113
        static signed int accy, accx;
Line 111... Line 114...
111
 
114
 
112
        static long tmpLuftdruck = 0;
115
        static long tmpLuftdruck = 0;
113
        static char messanzahl_Druck = 0;
-
 
114
    static long SummenHoehe = 0;
116
        static char messanzahl_Druck = 0;
115
    switch(state++)
117
    switch(state++)
116
        {
118
        {
117
        case 0:
119
        case 0:
118
            nick1 = ADC;
120
            nick1 = ADC;
Line 222... Line 224...
222
            ZaehlMessungen++;
224
            ZaehlMessungen++;
223
            // "break" fehlt hier absichtlich
225
            // "break" fehlt hier absichtlich
224
        case 9:
226
        case 9:
225
                MessLuftdruck = ADC;
227
                MessLuftdruck = ADC;
226
            tmpLuftdruck += MessLuftdruck;
228
            tmpLuftdruck += MessLuftdruck;
227
#define SM_FILTER 16
-
 
228
            if(++messanzahl_Druck >= 18)
229
            if(++messanzahl_Druck >= 18)
229
            {
230
            {
230
                                Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8;  // -523.19 counts per 10 counts offset step
231
                                Luftdruck = (7 * Luftdruck + tmpLuftdruck - (18 * 523) * (long)ExpandBaro + 4) / 8;  // -523.19 counts per 10 counts offset step
231
                                HoehenWert = StartLuftdruck - Luftdruck;
232
                                HoehenWert = StartLuftdruck - Luftdruck;
232
                                SummenHoehe -= SummenHoehe/SM_FILTER;
233
                                SummenHoehe -= SummenHoehe/SM_FILTER;