1 | int main()
|
2 | {
|
3 | // Motor-Port auf OUT
|
4 | DDR_MOT |= (1 << PAD_MOT_U);
|
5 | DDR_MOT |= (1 << PAD_MOT_V);
|
6 | DDR_MOT |= (1 << PAD_MOT_W);
|
7 |
|
8 | // Timer1 initialisieren
|
9 | timer1_init();
|
10 |
|
11 | // Interrupts aktivieren
|
12 | sei();
|
13 |
|
14 | // ADC initialisieren
|
15 | ADC_Init();
|
16 |
|
17 | // Port für Signal-LED initialisieren
|
18 | DDR_LED |= (1 << PAD_LED);
|
19 |
|
20 | // Endlosschleife
|
21 | while (1)
|
22 | {
|
23 | // Schrittkette für Motorsequenz
|
24 | switch (count)
|
25 | {
|
26 | // case 0 bis 3 für vollschrittbetrieb U, V, W
|
27 | case 0: PORT_MOT &= ~(1 << PAD_MOT_W);
|
28 | PORT_MOT &= ~(1 << PAD_MOT_V);
|
29 | PORT_MOT |= (1 << PAD_MOT_U);
|
30 | break;
|
31 | case 1: PORT_MOT &= ~(1 << PAD_MOT_W);
|
32 | PORT_MOT &= ~(1 << PAD_MOT_U);
|
33 | PORT_MOT |= (1 << PAD_MOT_V);
|
34 | break;
|
35 | case 2: PORT_MOT &= ~(1 << PAD_MOT_V);
|
36 | PORT_MOT &= ~(1 << PAD_MOT_U);
|
37 | PORT_MOT |= (1 << PAD_MOT_W);
|
38 | break;
|
39 | case 3: ;
|
40 |
|
41 | // case 4 bis 10 für halbschrittbetrieb U, UV, V, VW, W, WU
|
42 | case 4: PORT_MOT &= ~(1 << PAD_MOT_W);
|
43 | PORT_MOT &= ~(1 << PAD_MOT_V);
|
44 | PORT_MOT |= (1 << PAD_MOT_U);
|
45 | break;
|
46 | case 5: PORT_MOT &= ~(1 << PAD_MOT_W);
|
47 | PORT_MOT |= (1 << PAD_MOT_U);
|
48 | PORT_MOT |= (1 << PAD_MOT_V);
|
49 | break;
|
50 | case 6: PORT_MOT &= ~(1 << PAD_MOT_W);
|
51 | PORT_MOT &= ~(1 << PAD_MOT_U);
|
52 | PORT_MOT |= (1 << PAD_MOT_V);
|
53 | break;
|
54 | case 7: PORT_MOT &= ~(1 << PAD_MOT_U);
|
55 | PORT_MOT |= (1 << PAD_MOT_V);
|
56 | PORT_MOT |= (1 << PAD_MOT_W);
|
57 | break;
|
58 | case 8: PORT_MOT &= ~(1 << PAD_MOT_V);
|
59 | PORT_MOT &= ~(1 << PAD_MOT_U);
|
60 | PORT_MOT |= (1 << PAD_MOT_W);
|
61 | break;
|
62 | case 9: PORT_MOT &= ~(1 << PAD_MOT_V);
|
63 | PORT_MOT |= (1 << PAD_MOT_W);
|
64 | PORT_MOT |= (1 << PAD_MOT_U);
|
65 | break;
|
66 | case 10: ;
|
67 | }
|
68 |
|
69 | // Schrittzähler "count" zur steuerung der Schrittkette
|
70 | count++;
|
71 |
|
72 | // Überlauf des Schrittkettenzählers
|
73 | if (count == 3)
|
74 | count = 0;
|
75 |
|
76 | if (count == 10)
|
77 | count = 4;
|
78 |
|
79 | // Blinklicht zur visualisierung der While-Schleife
|
80 | PORT_LED ^= (1 << PAD_LED);
|
81 |
|
82 | // Warten
|
83 | wait_10ms (ADC_Read_Avg(0, 4));
|
84 | }
|
85 | }
|