Subversion Repositories FlightCtrl

Rev

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

Rev 1116 Rev 1118
Line 5... Line 5...
5
uint16_t        LED1_Timing   = 0;
5
uint16_t        LED1_Timing   = 0;
6
uint16_t        LED2_Timing   = 0;
6
uint16_t        LED2_Timing   = 0;
Line 7... Line 7...
7
 
7
 
8
unsigned char   J16Blinkcount = 0, J16Mask = 1;
8
unsigned char   J16Blinkcount = 0, J16Mask = 1;
-
 
9
unsigned char   J17Blinkcount = 0, J17Mask = 1;
Line 9... Line 10...
9
unsigned char   J17Blinkcount = 0, J17Mask = 1;
10
unsigned char   J16 = 0, J17 = 0;
10
 
-
 
Line 11... Line 11...
11
unsigned char   lightsEnabled = 0;
11
 
Line 12... Line 12...
12
unsigned char   forceEnabled = 0;
12
unsigned char   lightsEnabled = 0, lightsOn = 0;
Line 20... Line 20...
20
        if( enabled && forceEnabled )
20
        if( enabled && forceEnabled )
21
                J16_ON;
21
                J16_ON;
22
        else
22
        else
23
                J16_OFF;*/
23
                J16_OFF;*/
Line 24... Line 24...
24
               
24
               
25
        if((enabled && forceEnabled) ^ LED_NEGATE_J16)
25
        if((enabled && lightsOn) ^ LED_NEGATE_J16)
26
                J16_ON;
26
                J16_ON;
27
        else
27
        else
28
                J16_OFF;                       
28
                J16_OFF;                       
Line 34... Line 34...
34
        if( enabled && forceEnabled )
34
        if( enabled && forceEnabled )
35
                J17_ON;
35
                J17_ON;
36
        else
36
        else
37
                J17_OFF;*/
37
                J17_OFF;*/
Line 38... Line 38...
38
               
38
               
39
        if((enabled && forceEnabled) ^ LED_NEGATE_J17)
39
        if((enabled && lightsOn) ^ LED_NEGATE_J17)
40
                J17_ON;
40
                J17_ON;
41
        else
41
        else
42
                J17_OFF;                       
42
                J17_OFF;                       
Line 43... Line 43...
43
}
43
}
44
 
44
 
45
// initializes the LED control outputs J16, J17
45
// initializes the LED control outputs J16, J17
46
void LED_Init( void ) {
46
void LED_Init( void ) {
-
 
47
        // set PC2 & PC3 as output (control of J16 & J17)
-
 
48
    DDRC |= (1<<DDC2)|(1<<DDC3);
-
 
49
       
47
        // set PC2 & PC3 as output (control of J16 & J17)
50
    lightsOn = lightsEnabled = 0;
48
    DDRC |= (1<<DDC2)|(1<<DDC3);
51
       
-
 
52
        setJ16( 0);
49
        setJ16( 0 );
53
        setJ17( 0);
50
        setJ17( 0 );
54
       
51
    J16Blinkcount = 0; J16Mask = 128;
55
    J16Blinkcount = 0; J16Mask = 128;
Line -... Line 56...
-
 
56
    J17Blinkcount = 0; J17Mask = 128;
-
 
57
}
-
 
58
 
-
 
59
void checkLightsEnabled(void) {
-
 
60
 
-
 
61
    // Mit dem Gier-Stick rechts lassen sich bei stehenden Motoren die LED's ein- und mit links ausschalten
-
 
62
        if( !MotorenEin) {
-
 
63
        if( PARAM_LED_STICK_ENABLED) {
-
 
64
             if ( PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]  > 35-120
-
 
65
                && PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]  < 80 ) {
-
 
66
                if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] < -75 )
-
 
67
                    lightsEnabled = 1;
-
 
68
                if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] >  75 )
-
 
69
                    lightsEnabled = 0;
-
 
70
             }
-
 
71
        } else
-
 
72
                lightsEnabled = 1;
-
 
73
    }
-
 
74
 
-
 
75
        // Die LED's können mit den Motoren ein- ausgeschaltet werden
-
 
76
        if( PARAM_LED_ENGINE_ENABLED)
-
 
77
                lightsEnabled = MotorenEin;
Line 52... Line 78...
52
    J17Blinkcount = 0; J17Mask = 128;
78
 
53
}
79
    lightsOn = lightsEnabled;
Line 54... Line 80...
54
 
80
}
55
 
-
 
56
// called in UpdateMotors() every 2ms
-
 
57
void LED_Update( void ) {
-
 
58
 
-
 
Line 59... Line -...
59
        static char     delay = 0;
-
 
60
        static char     j16 = 0;
-
 
61
        static char     j17 = 0;
-
 
62
       
-
 
63
        if( !MotorenEin ) {
-
 
64
       
-
 
65
                /* Mit dem Gier-Stick rechts lassen sich die LED's ein- und mit links ausschalten.
-
 
66
                 */
-
 
67
                if( PARAM_LED_STICK_ENABLED ) {
81
 
68
 
-
 
69
                        if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]  > 35-120 &&
-
 
70
                            PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]  < 80 ) {
-
 
71
                           
-
 
72
                                if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] < -75 ) {
-
 
73
                                        lightsEnabled = 1;
-
 
74
                                }
-
 
75
                               
-
 
76
                                if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] >  75 ) {
-
 
77
                                        lightsEnabled = 0;
-
 
78
                                }
-
 
79
                        }
-
 
80
                } else {
-
 
81
                        lightsEnabled = 1;
-
 
82
                }
-
 
83
        }
-
 
Line 84... Line 82...
84
       
82
// called in UpdateMotors() every 2ms
Line 85... Line 83...
85
        if( PARAM_LED_ENGINE_ENABLED ) {
83
void LED_Update( void ) {
Line 86... Line 84...
86
                lightsEnabled = MotorenEin;
84
 
87
        }
-
 
88
 
-
 
89
        forceEnabled = lightsEnabled;
85
        static char     delay = 0;
90
               
86
       
91
        if( !delay-- ) {
-
 
92
 
87
        checkLightsEnabled();
93
                delay = 4;      // 10ms Intervall
-
 
94
 
88
               
95
                // Soll die Unterspannungswarnung zu einem schnelleren Blinken führen?
-
 
96
                if( PARAM_LED_WARNING_ENABLED ) {
89
        if( !delay-- ) {
97
               
-
 
98
                        // Grenze für Unterspannungswarnung erreicht?
-
 
99
                        if( UBat < EE_Parameter.UnterspannungsWarnung ) {
-
 
100
                       
-
 
101
                                // Erzwingt die Aktivierung der Ausgänge
-
 
102
                                if( PARAM_LED_FORCE_WARNING_ENABLED )
90
 
Line 103... Line 91...
103
                                        forceEnabled = 1;
91
                delay = 9;      // 20ms Intervall
104
                               
-
 
105
                                if( PARAM_LED_WARNING_FAST_ENABLED ) {
92
 
106
                                        delay = 1;      // 2,5ms Intervall
93
                // Soll die Unterspannungswarnung zu einem schnelleren Blinken führen?
107
                                } else {
94
                // Grenze für Unterspannungswarnung erreicht?
108
                                        delay = 2;      // 5ms Intervall
95
                if( PARAM_LED_WARNING_SPEEDUP && UBat < EE_Parameter.UnterspannungsWarnung ) {
109
                                }
96
                        if( PARAM_LED_FORCE_WARNING_ENABLED )   // Erzwingt die Aktivierung der Ausgänge
110
                        }
-
 
111
                }
97
                                lightsOn = 1;
112
               
-
 
113
                /* J16
98
                        delay /= PARAM_LED_WARNING_SPEEDUP+1;
114
                 */
-
 
115
                if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing > 230 ) ) {
-
 
116
                        setJ16( EE_Parameter.J16Bitmask & 128 );
-
 
117
                } else if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing < 10 ) ) {
99
                }
118
                        setJ16( !( EE_Parameter.J16Bitmask & 128 ) );
100
               
Line 119... Line 101...
119
                } else if( !J16Blinkcount-- ) {
101
                // J16
120
               
-
 
121
                        J16Blinkcount = Parameter_J16Timing-1;
102
                if( EE_Parameter.J16Timing > 250 && Parameter_J16Timing > 230 )
122
                       
103
                        J16 = EE_Parameter.J16Bitmask & 128;
123
                        if( J16Mask == 1 )
104
                else if( EE_Parameter.J16Timing > 250 && Parameter_J16Timing < 10 )
124
                                J16Mask = 128;
105
                        J16 = !( EE_Parameter.J16Bitmask & 128 );
125
                        else
106
                else if( !J16Blinkcount-- ) {          
126
                                J16Mask /= 2;
-
 
127
                        j16 = J16Mask & EE_Parameter.J16Bitmask;
107
                        J16Blinkcount = Parameter_J16Timing-1;                 
128
                }  
-
 
129
               
108
                        J16Mask = (J16Mask == 1 ? 0x80 : J16Mask >> 1);                
130
                /* J17
-
 
131
                 */
-
 
132
                if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing > 230 ) ) {
-
 
133
                        setJ17( EE_Parameter.J17Bitmask & 128 );
109
                        J16 = EE_Parameter.J16Bitmask & J16Mask;
134
                } else if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing < 10 ) ) {
110
                }  
135
                        setJ17( !( EE_Parameter.J17Bitmask & 128 ) );
111
               
Line 136... Line 112...
136
                } else if( !J17Blinkcount-- ) {
112
                // J17
137
               
113
                if( EE_Parameter.J17Timing > 250 && Parameter_J17Timing > 230)
138
                        J17Blinkcount = Parameter_J17Timing-1;
114
                        J17 = EE_Parameter.J17Bitmask & 128 ;
139
                       
115
                else if( EE_Parameter.J17Timing > 250 && Parameter_J17Timing < 10)