Hallo,
ich habe bei mir das Problem, dass wenn ich eine Variable außerhalb der
main deklariere, er die While-Schleife nicht verlässt:
[ ATMega324PA | avr-gcc | Atmel Studio 7 ]
Dieser Code funktioniert:
1 | int main(void)
|
2 | {
|
3 | bool Zeit_eingestellt = false; // Variable innerhalb der main deklariert.
|
4 |
|
5 | do // Belichtungszeit einstellen
|
6 | {
|
7 | _delay_ms(50);
|
8 |
|
9 | // Inkrementalgeber auslesen:
|
10 | Belichtungszeit += (uint16_t)Drehgeber_lesen();
|
11 |
|
12 | if (Belichtungszeit > 999)
|
13 | {
|
14 | Belichtungszeit = 999;
|
15 | }
|
16 | if (Belichtungszeit < 1)
|
17 | {
|
18 | Belichtungszeit = 1;
|
19 | }
|
20 |
|
21 | Anzeige.Anzeigen(Belichtungszeit);
|
22 | I01 = Belichtungszeit;
|
23 |
|
24 | if (!Taster_entprellt && flanke1)
|
25 | {
|
26 | Zeit_eingestellt = true;
|
27 | UART_senden((int32_t)Zeit_eingestellt, true);
|
28 | }
|
29 |
|
30 | flanke1 = Taster_entprellt;
|
31 | } while (!Zeit_eingestellt);
|
32 | }
|
Dieser Code funktioniert hingegen NICHT:
1 | bool Zeit_eingestellt = false; // Variable außerhalb der main deklariert.
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | Zeit_eingestellt = false; // hier nochmal auf false gesetzt.
|
6 |
|
7 | do // Belichtungszeit einstellen
|
8 | {
|
9 | _delay_ms(50);
|
10 |
|
11 | // Inkrementalgeber auslesen:
|
12 | Belichtungszeit += (uint16_t)Drehgeber_lesen();
|
13 |
|
14 | if (Belichtungszeit > 999)
|
15 | {
|
16 | Belichtungszeit = 999;
|
17 | }
|
18 | if (Belichtungszeit < 1)
|
19 | {
|
20 | Belichtungszeit = 1;
|
21 | }
|
22 |
|
23 | Anzeige.Anzeigen(Belichtungszeit);
|
24 | I01 = Belichtungszeit;
|
25 |
|
26 | if (!Taster_entprellt && flanke1)
|
27 | {
|
28 | Zeit_eingestellt = true;
|
29 | UART_senden((int32_t)Zeit_eingestellt, true);
|
30 | }
|
31 |
|
32 | flanke1 = Taster_entprellt;
|
33 | } while (!Zeit_eingestellt);
|
34 | }
|
Weiß jemand, woran das liegen kann? Was mache ich hier falsch?
LG
Tim