Subversion Repositories FlightCtrl

Rev

Rev 1114 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1112 thjac 1
#include <inttypes.h>
2
#include "main.h"
3
#include "parameter.h"
4
 
5
uint16_t        LED1_Timing = 0;
6
uint16_t        LED2_Timing = 0;
7
 
8
unsigned char   J16Blinkcount = 0, J16Mask = 1;
9
unsigned char   J17Blinkcount = 0, J17Mask = 1;
10
 
11
unsigned char   lightsEnabled = 0;
12
 
13
extern char     MotorenEin;
14
 
15
 
16
// initializes the LED control outputs J16, J17
17
void LED_Init( void ) {
18
        // set PC2 & PC3 as output (control of J16 & J17)
19
        DDRC |= (1<<DDC2)|(1<<DDC3);
20
        J16_OFF;
21
        J17_OFF;
22
        J16Blinkcount = 0; J16Mask = 128;
23
        J17Blinkcount = 0; J17Mask = 128;
24
}
25
 
26
 
27
// called in UpdateMotors() every 2ms
28
void LED_Update( void ) {
29
 
30
        static char delay = 0;
31
 
32
        if( !MotorenEin ) {
33
 
34
                /* Mit dem Gier-Stick links lassen sich die LED's ein- und ausschalten.
35
                 */
36
                if( PARAM_LED_STICK_ENABLED ) {
37
 
38
                        if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]  > 35-120 &&
39
                            PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]  < 80 ) {
40
 
41
                                if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] < -75 ) {
42
                                        lightsEnabled = 1;
43
                                }
44
 
45
                                if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] >  75 ) {
46
                                        lightsEnabled = 0;
47
                                }
48
                        }
49
                } else {
50
                        lightsEnabled = 1;
51
                }
52
        }
53
 
54
        if( PARAM_LED_ENGINE_ENABLED ) {
55
                lightsEnabled = MotorenEin;
56
        }
57
 
58
        if( !delay-- ) {
59
 
60
                delay = 4;      // 10ms Intervall
61
 
62
                // Soll die Unterspannungswarnung zu einem schnelleren Blinken führen?
63
                if( PARAM_LED_WARNING_ENABLED ) {
64
 
65
                        // Grenze für Unterspannungswarnung erreicht?
66
                        if( UBat < EE_Parameter.UnterspannungsWarnung ) {
67
 
68
                                delay = 2;      // 5ms Intervall
69
                        }
70
                }
71
 
72
                /* J16
73
                 */
74
                if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing > 230 ) ) {
75
                        if( EE_Parameter.J16Bitmask & 128 )
76
                                J16_ON;
77
                        else
78
                                J16_OFF;
79
                } else if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing < 10 ) ) {
80
                        if( EE_Parameter.J16Bitmask & 128 )
81
                                J16_OFF;
82
                        else
83
                                J16_ON;
84
                } else if( !J16Blinkcount-- ) {
85
 
86
                        J16Blinkcount = Parameter_J16Timing-1;
87
 
88
                        if( J16Mask == 1 )
89
                                J16Mask = 128;
90
                        else
91
                                J16Mask /= 2;
92
                        if( J16Mask & EE_Parameter.J16Bitmask )
93
                                J16_ON;
94
                        else
95
                                J16_OFF;
96
                }  
97
 
98
                /* J17
99
                 */
100
                if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing > 230 ) ) {
101
                        if( EE_Parameter.J17Bitmask & 128 )
102
                                J17_ON;
103
                        else
104
                                J17_OFF;
105
                } else if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing < 10 ) ) {
106
                        if( EE_Parameter.J17Bitmask & 128 )
107
                                J17_OFF;
108
                        else
109
                                J17_ON;
110
                } else if( !J17Blinkcount-- ) {
111
 
112
                        J17Blinkcount = Parameter_J17Timing-1;
113
 
114
                        if( J17Mask == 1 )
115
                                J17Mask = 128;
116
                        else
117
                                J17Mask /= 2;
118
                        if( J17Mask & EE_Parameter.J17Bitmask )
119
                                J17_ON;
120
                        else
121
                                J17_OFF;
122
                }  
123
        }
124
 
125
 
126
        if( !lightsEnabled ) {
127
                J16_OFF;
128
                J17_OFF;
129
        }
130
}