Hier ist der Code:
1 | [...]
|
2 | u32 startTime = 0; |
3 | u8 scanMode = 0; |
4 | while (1)//scannen |
5 | {
|
6 | if (ledCounter%10000 == 0) |
7 | {
|
8 | clearOutputPin(led1);//led an |
9 | }
|
10 | if (ledCounter%10000 == 899) |
11 | {
|
12 | setOutputPin(led1);//led aus |
13 | }
|
14 | |
15 | if (scanMode == 0) |
16 | {
|
17 | setAsOutputPin(srf05); |
18 | setOutputPin(srf05); |
19 | startTime = ledCounter; |
20 | scanMode = 1; |
21 | }
|
22 | else if (scanMode == 1) |
23 | {
|
24 | if (ledCounter >= startTime + 1) |
25 | {
|
26 | clearOutputPin(srf05); |
27 | setAsInputPin(srf05); |
28 | startTime = ledCounter; |
29 | scanMode = 2; |
30 | }
|
31 | }
|
32 | else if (scanMode == 2) |
33 | {
|
34 | if (getInputPin(srf05)) |
35 | {
|
36 | startTime = ledCounter; |
37 | scanMode = 3; |
38 | }
|
39 | }
|
40 | else if (scanMode == 3) |
41 | {
|
42 | if (!getInputPin(srf05)) |
43 | {
|
44 | scanTime = ledCounter - startTime; |
45 | breakStatus = 1; |
46 | }
|
47 | if (ledCounter >= startTime + 300) |
48 | {
|
49 | scanTime = 300; |
50 | breakStatus = 1; |
51 | }
|
52 | }
|
53 | |
54 | _delay_us(100); |
55 | ledCounter++; |
56 | if (scanTime != 0)//abbruch sobald scan fertig |
57 | {
|
58 | breakStatus = 1; |
59 | }
|
60 | if (breakStatus) |
61 | {
|
62 | breakStatus = 0; |
63 | ledCounter = 0; |
64 | startTime = 0; |
65 | scanMode = 0; |
66 | //break;
|
67 | }
|
68 | }
|
69 | [...]
|