Guten Morgen,
@ Peter:
Mittlerweile ist mir bewust gewiorden das Ich eigentlich nie ein Problem
mit Prellen hatte (kein Plan wie Ich auf den Dampfer gekommen bin)
Trotzem Danke für die Antwort!
Ich hatte vielmehr nach einer Möglichkeit gesucht auf eine Fallende
Flanke zu reagieren und das klappt nun auch wunderbar:
1 | int touched()
|
2 |
|
3 | {
|
4 | static uint8_t zustand;
|
5 | int touched;
|
6 |
|
7 |
|
8 | PORTA |= (1 << PA0);
|
9 |
|
10 | DDRA |= (1 << PA2);
|
11 |
|
12 |
|
13 | _delay_ms(1);
|
14 |
|
15 |
|
16 | touched = (PINA & (1 << (PA0))) ? 0 : 1;
|
17 |
|
18 | if(touched && zustand == 0) // Steigende Flanke
|
19 | {
|
20 | zustand = 1;
|
21 | }
|
22 | else if(touched && zustand == 1) // High
|
23 | {
|
24 | zustand = 2;
|
25 | }
|
26 | else if(!touched && zustand == 2) // Fallende Flanke
|
27 | {
|
28 | zustand = 3;
|
29 | }
|
30 | else if(!touched && zustand == 3) // Low
|
31 | {
|
32 | zustand = 0;
|
33 | }
|
34 | return zustand;
|
35 |
|
36 | }
|
Nun hab ich aber ein anderes Problem.
Ich bau gerade an einer Funktion um den Touch zu kalibrieren.
Nur leider will das nicht so ganz:
1 | void calib_touch()
|
2 | {
|
3 | lcd_line(0,10,20,10);
|
4 | lcd_line(10,0,10,20);
|
5 | while(touched() < 3)
|
6 | {
|
7 | // Hier sollte Ich die Touch Position fürs erste Kreuz abfragen
|
8 | }
|
9 | lcd_clear();
|
10 | lcd_line(140,70,160,70);
|
11 | lcd_line(150,60,150,80);
|
12 | while(touched() < 3)
|
13 | {
|
14 | // Und hier fürs zweite
|
15 | }
|
16 | lcd_clear();
|
17 | while(1) // Diese Schleife ist lediglich zum Test !
|
18 | {
|
19 | if(bit_is_set(PINC, 0))
|
20 | {
|
21 | PORTC &= ~(1 << PC0);
|
22 | _delay_ms(500);
|
23 | }
|
24 | else
|
25 | {
|
26 | PORTC |= (1 << PC0);
|
27 | _delay_ms(500);
|
28 | }
|
29 | }
|
30 | }
|
Diese Funktion funktioniert exakt wie gedacht!
Nur wenn ich den Touch innerhalb der 2 while Schleifen abfrage passieren
sachen die Ich mir nicht erklären kann!?
In der ersten liest er den Touch und schreibt in Variablen wie gewollt.
In der zweiten bleibt er aber hängen und reagiert nicht mehr auf den
Touch.
Hat jemand eine Idee woran das liegen könnte
Danke Im Voraus
Elias