2,23 → 2,42 |
#include "main.h" |
#include "parameter.h" |
|
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
uint16_t LED1_Timing = 0; |
uint16_t LED2_Timing = 0; |
|
unsigned char J16Blinkcount = 0, J16Mask = 1; |
unsigned char J17Blinkcount = 0, J17Mask = 1; |
|
unsigned char lightsEnabled = 0; |
unsigned char forceEnabled = 0; |
|
extern char MotorenEin; |
|
|
void setJ16( char enabled ) { |
if( PARAM_LED_NEGATE ) |
enabled = !enabled; |
if( enabled && forceEnabled ) |
J16_ON; |
else |
J16_OFF; |
} |
|
void setJ17( char enabled ) { |
if( PARAM_LED_NEGATE ) |
enabled = !enabled; |
if( enabled && forceEnabled ) |
J17_ON; |
else |
J17_OFF; |
} |
|
// initializes the LED control outputs J16, J17 |
void LED_Init( void ) { |
// set PC2 & PC3 as output (control of J16 & J17) |
DDRC |= (1<<DDC2)|(1<<DDC3); |
J16_OFF; |
J17_OFF; |
setJ16( 0 ); |
setJ17( 0 ); |
J16Blinkcount = 0; J16Mask = 128; |
J17Blinkcount = 0; J17Mask = 128; |
} |
27,8 → 46,8 |
// called in UpdateMotors() every 2ms |
void LED_Update( void ) { |
|
static char delay = 0; |
|
static char delay = 0; |
|
if( !MotorenEin ) { |
|
/* Mit dem Gier-Stick links lassen sich die LED's ein- und ausschalten. |
54,7 → 73,9 |
if( PARAM_LED_ENGINE_ENABLED ) { |
lightsEnabled = MotorenEin; |
} |
|
|
forceEnabled = lightsEnabled; |
|
if( !delay-- ) { |
|
delay = 4; // 10ms Intervall |
65,7 → 86,15 |
// Grenze für Unterspannungswarnung erreicht? |
if( UBat < EE_Parameter.UnterspannungsWarnung ) { |
|
delay = 2; // 5ms Intervall |
// Erzwingt die Aktivierung der Ausgänge |
if( PARAM_LED_FORCE_WARNING_ENABLED ) |
forceEnabled = 1; |
|
if( PARAM_LED_WARNING_FAST_ENABLED ) { |
delay = 1; // 2,5ms Intervall |
} else { |
delay = 2; // 5ms Intervall |
} |
} |
} |
|
72,15 → 101,9 |
/* J16 |
*/ |
if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing > 230 ) ) { |
if( EE_Parameter.J16Bitmask & 128 ) |
J16_ON; |
else |
J16_OFF; |
setJ16( EE_Parameter.J16Bitmask & 128 ); |
} else if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing < 10 ) ) { |
if( EE_Parameter.J16Bitmask & 128 ) |
J16_OFF; |
else |
J16_ON; |
setJ16( !( EE_Parameter.J16Bitmask & 128 ) ); |
} else if( !J16Blinkcount-- ) { |
|
J16Blinkcount = Parameter_J16Timing-1; |
89,24 → 112,15 |
J16Mask = 128; |
else |
J16Mask /= 2; |
if( J16Mask & EE_Parameter.J16Bitmask ) |
J16_ON; |
else |
J16_OFF; |
setJ16( J16Mask & EE_Parameter.J16Bitmask ); |
} |
|
/* J17 |
*/ |
if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing > 230 ) ) { |
if( EE_Parameter.J17Bitmask & 128 ) |
J17_ON; |
else |
J17_OFF; |
setJ17( EE_Parameter.J17Bitmask & 128 ); |
} else if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing < 10 ) ) { |
if( EE_Parameter.J17Bitmask & 128 ) |
J17_OFF; |
else |
J17_ON; |
setJ17( !( EE_Parameter.J17Bitmask & 128 ) ); |
} else if( !J17Blinkcount-- ) { |
|
J17Blinkcount = Parameter_J17Timing-1; |
115,16 → 129,7 |
J17Mask = 128; |
else |
J17Mask /= 2; |
if( J17Mask & EE_Parameter.J17Bitmask ) |
J17_ON; |
else |
J17_OFF; |
setJ17( J17Mask & EE_Parameter.J17Bitmask ); |
} |
} |
|
|
if( !lightsEnabled ) { |
J16_OFF; |
J17_OFF; |
} |
} |