Hallo kann mir jemand einen Tipp geben wieso bei den Sensor if-Abfragen der Debugger if und else-Abfrage überspringt. Ebenso habe ich das Problem wenn ich im Debugger bei der Taster-Abfrage die Pins auf Low stelle bei Taster X+ nur die erste Zeile ausgeführt wird und die restliche if-Abfrage übersprungen wird. Danach springt es in die Taster-Abfrage X- die richtig ausgeführt wird. Ein Unterschied ist nur wenn ich PB0 und PB2 auf 1 stelle dann springt es ins else. MfG
1 | static volatile bool variable = 0; |
2 | |
3 | int main(void) |
4 | {
|
5 | //Sensor X+ LOW Active
|
6 | DDRE &= ~(1<<DDE6); |
7 | //Sensor X-
|
8 | DDRE &= ~(1<<DDE7); |
9 | |
10 | //Taster X+
|
11 | DDRB &= ~(1<<DDB0); |
12 | //Taster X-
|
13 | |
14 | |
15 | //Motor Clock X LOW Active
|
16 | DDRB |= (1<<DDB5); |
17 | PORTB |= (1<<PORTB5); |
18 | |
19 | |
20 | TCCR1B |= (2<<CS10); //kein prescaler |
21 | TIMSK |= (1<<TOIE1); //overflow interrupt enable |
22 | |
23 | sei(); |
24 | |
25 | |
26 | static bool sensor_x_plus; |
27 | static bool sensor_x_minus; |
28 | |
29 | |
30 | |
31 | while (1) |
32 | {
|
33 | //Sensor X+
|
34 | if (~PINE & (1<<PE6)) |
35 | {
|
36 | sensor_x_plus = true; |
37 | }
|
38 | else
|
39 | {
|
40 | sensor_x_plus = false; |
41 | }
|
42 | |
43 | //Sensor X-
|
44 | if (~PINE & (1<<PE7)) |
45 | {
|
46 | sensor_x_minus = true; |
47 | }
|
48 | else
|
49 | {
|
50 | sensor_x_minus = false; |
51 | }
|
52 | |
53 | |
54 | //Taster X+
|
55 | if (~PINB & (1<<PB0)) //&& (sensor_x_plus != true)) |
56 | {
|
57 | PORTD |= (1<<PORTD5); //Motor Direction X |
58 | |
59 | if(variable == 0) |
60 | {
|
61 | PORTB &= ~(1<<PB5); |
62 | variable = 1; |
63 | }
|
64 | else if (variable == 1) |
65 | {
|
66 | PORTB |= (1<<PB5); |
67 | variable = 0; |
68 | }
|
69 | _delay_ms(5); |
70 | }
|
71 | //Taster X-
|
72 | else if (~PINB & (1<<PB2)) //&& (sensor_x_minus != true)) |
73 | {
|
74 | PORTD &= ~(1<<PORTD5); //Motor Direction X |
75 | |
76 | if(variable == 0) |
77 | {
|
78 | PORTB &= ~(1<<PB5); |
79 | variable = 1; |
80 | }
|
81 | else if (variable == 1) |
82 | {
|
83 | PORTB |= (1<<PB5); |
84 | variable = 0; |
85 | }
|
86 | _delay_ms(5); |
87 | }
|
88 | else
|
89 | {
|
90 | PORTB |= (1<<PB5); |
91 | }
|
92 | |
93 | _delay_ms(1); |
94 | }
|
95 | }
|