Verlässt dieser break nach den 50ms tatsächlich die while(1)? Ich hätte erwartet das die if-Schleife abgebrochen wird! Stattdessen bleibt das Programm stehen, Interrupts funktionieren nicht mehr und die Karre steht...
1 | while(1) |
2 | {
|
3 | //////////////////////////////////////////////////////////////////////////
|
4 | /* Abschlatung */
|
5 | if( |
6 | (PINA & (1<<EIN_TASTER)) |
7 | || (!StartupTimer && (Batterie.ist < BATTERIE_LEER)) |
8 | ) { |
9 | //////////////////////////////////////////////////////////////////////////
|
10 | // Versuch: Mögliche Kontaktprobleme mit dem Ausschalter zu unterdrücken
|
11 | _delay_ms(50); |
12 | if ( !( PINA & (1<<EIN_TASTER) ) ) break; |
13 | //////////////////////////////////////////////////////////////////////////
|
14 | |
15 | LCDBeleuchtungsTimer = HINTERGRUNDBELEUCHTUNGSZEIT; |
16 | lcd_command( LCD_CLEAR_DISPLAY ); |
17 | lcd_setcursor(0,2); |
18 | if (Batterie.ist < BATTERIE_LEER){ |
19 | lcd_string (" Batterie Leer!"); |
20 | }else{ |
21 | lcd_string (" Bye Bye!!!"); |
22 | }
|
23 | _delay_ms(3000); |
24 | Selbsthaltung(AUS); |
25 | }
|