1 | /*
|
2 | * CCD.c
|
3 | *
|
4 | * Created: 15.03.2016 20:35:14
|
5 | * Author: Dieter
|
6 | */
|
7 | #define SH PIND2 //
|
8 | #define C1 PIND3 //
|
9 | #define C2 PIND4 //
|
10 | #define RS PIND5 //
|
11 | #define BT PIND6 //
|
12 |
|
13 |
|
14 | #include <avr/io.h>
|
15 | #include <util/delay.h>
|
16 |
|
17 | int main(void)
|
18 | {
|
19 |
|
20 | DDRD = 0b01111100;
|
21 | // take all to LOW
|
22 | PORTD = 0b00000000;
|
23 |
|
24 |
|
25 | while(1)
|
26 | {
|
27 | PORTD |= (1 << BT);
|
28 | PORTD &= ~(1 << RS);
|
29 | PORTD |= (1 << C1);
|
30 | PORTD &= ~(1 << C2);
|
31 | __asm__("nop\n\t");
|
32 | PORTD |= (1 << SH); // Shift Pulse an
|
33 | __asm__("nop\n\t");
|
34 | __asm__("nop\n\t");
|
35 | __asm__("nop\n\t");
|
36 | __asm__("nop\n\t");
|
37 | __asm__("nop\n\t");
|
38 | __asm__("nop\n\t");
|
39 | PORTD &= ~(1 << BT);
|
40 | PORTD |= (1 << RS);
|
41 | __asm__("nop\n\t");
|
42 | __asm__("nop\n\t");
|
43 | __asm__("nop\n\t");
|
44 | __asm__("nop\n\t");
|
45 | __asm__("nop\n\t");
|
46 | __asm__("nop\n\t");
|
47 | PORTD |= (1 << BT);
|
48 | PORTD &= ~(1 << RS);
|
49 | __asm__("nop\n\t");
|
50 | __asm__("nop\n\t");
|
51 | __asm__("nop\n\t");
|
52 | __asm__("nop\n\t");
|
53 | __asm__("nop\n\t");
|
54 | __asm__("nop\n\t");
|
55 | __asm__("nop\n\t");
|
56 | __asm__("nop\n\t");
|
57 | __asm__("nop\n\t");
|
58 | __asm__("nop\n\t");
|
59 | PORTD &= ~(1 << BT);
|
60 | PORTD |= (1 << RS);
|
61 | __asm__("nop\n\t");
|
62 | __asm__("nop\n\t");
|
63 | __asm__("nop\n\t");
|
64 | __asm__("nop\n\t");
|
65 | __asm__("nop\n\t");
|
66 | __asm__("nop\n\t");
|
67 |
|
68 | PORTD |= (1 << BT);
|
69 | PORTD &= ~(1 << RS);
|
70 | __asm__("nop\n\t");
|
71 | __asm__("nop\n\t");
|
72 | __asm__("nop\n\t");
|
73 | __asm__("nop\n\t");
|
74 | __asm__("nop\n\t");
|
75 | PORTD &= ~(1 << SH); // Shift Pulse aus
|
76 | __asm__("nop\n\t");
|
77 | __asm__("nop\n\t");
|
78 | __asm__("nop\n\t");
|
79 | __asm__("nop\n\t");
|
80 | __asm__("nop\n\t");
|
81 | __asm__("nop\n\t");
|
82 | __asm__("nop\n\t");
|
83 | PORTD &= ~(1 << BT);
|
84 | PORTD |= (1 << RS);
|
85 | __asm__("nop\n\t");
|
86 | __asm__("nop\n\t");
|
87 | __asm__("nop\n\t");
|
88 | __asm__("nop\n\t");
|
89 | __asm__("nop\n\t");
|
90 | __asm__("nop\n\t");
|
91 | PORTD |= (1 << BT);
|
92 | PORTD &= ~(1 << RS);
|
93 | PORTD |= (1 << C2);
|
94 | PORTD &= ~(1 << C1);
|
95 | __asm__("nop\n\t");
|
96 | __asm__("nop\n\t");
|
97 | __asm__("nop\n\t");
|
98 | __asm__("nop\n\t");
|
99 | __asm__("nop\n\t");
|
100 | __asm__("nop\n\t");
|
101 | __asm__("nop\n\t");
|
102 | __asm__("nop\n\t");
|
103 | PORTD &= ~(1 << BT);
|
104 | PORTD |= (1 << RS);
|
105 | __asm__("nop\n\t");
|
106 | __asm__("nop\n\t");
|
107 | __asm__("nop\n\t");
|
108 | __asm__("nop\n\t");
|
109 | __asm__("nop\n\t");
|
110 | __asm__("nop\n\t");
|
111 |
|
112 | PORTD |= (1 << BT);
|
113 | PORTD &= ~(1 << RS);
|
114 | __asm__("nop\n\t");
|
115 | __asm__("nop\n\t"); // 1. Dummy-Messung
|
116 | __asm__("nop\n\t");
|
117 | __asm__("nop\n\t");
|
118 | __asm__("nop\n\t");
|
119 | __asm__("nop\n\t");
|
120 | __asm__("nop\n\t");
|
121 | __asm__("nop\n\t");
|
122 | PORTD &= ~(1 << BT);
|
123 | PORTD |= (1 << RS);
|
124 | __asm__("nop\n\t");
|
125 | __asm__("nop\n\t");
|
126 | __asm__("nop\n\t");
|
127 | __asm__("nop\n\t");
|
128 | __asm__("nop\n\t");
|
129 | __asm__("nop\n\t");
|
130 | PORTD |= (1 << BT);
|
131 | PORTD &= ~(1 << RS);
|
132 | PORTD |= (1 << C2);
|
133 | PORTD &= ~(1 << C1);
|
134 | __asm__("nop\n\t");
|
135 | __asm__("nop\n\t"); // 2. Dummy-Messung
|
136 | __asm__("nop\n\t");
|
137 | __asm__("nop\n\t");
|
138 | __asm__("nop\n\t");
|
139 | __asm__("nop\n\t");
|
140 | __asm__("nop\n\t");
|
141 | __asm__("nop\n\t");
|
142 | PORTD &= ~(1 << BT);
|
143 | PORTD |= (1 << RS);
|
144 | __asm__("nop\n\t");
|
145 | __asm__("nop\n\t");
|
146 | __asm__("nop\n\t");
|
147 | __asm__("nop\n\t");
|
148 |
|
149 |
|
150 | for (uint16_t i=0; i<1046; i++)
|
151 | {
|
152 | PORTD |= (1 << BT);
|
153 | PORTD &= ~(1 << RS);
|
154 | PORTD |= (1 << C1);
|
155 | PORTD &= ~(1 << C2);
|
156 | __asm__("nop\n\t");
|
157 | __asm__("nop\n\t"); // Ab hier kann ausgelesen werden
|
158 | __asm__("nop\n\t");
|
159 | __asm__("nop\n\t");
|
160 | __asm__("nop\n\t");
|
161 | __asm__("nop\n\t");
|
162 | __asm__("nop\n\t");
|
163 | __asm__("nop\n\t");
|
164 | PORTD &= ~(1 << BT);
|
165 | PORTD |= (1 << RS);
|
166 | __asm__("nop\n\t");
|
167 | __asm__("nop\n\t");
|
168 | __asm__("nop\n\t");
|
169 | __asm__("nop\n\t");
|
170 | __asm__("nop\n\t");
|
171 | __asm__("nop\n\t");
|
172 | PORTD |= (1 << BT);
|
173 | PORTD &= ~(1 << RS);
|
174 | PORTD |= (1 << C2);
|
175 | PORTD &= ~(1 << C1);
|
176 | __asm__("nop\n\t");
|
177 | __asm__("nop\n\t"); // Ab hier kann ausgelesen werden
|
178 | __asm__("nop\n\t");
|
179 | __asm__("nop\n\t");
|
180 | __asm__("nop\n\t");
|
181 | __asm__("nop\n\t");
|
182 | __asm__("nop\n\t");
|
183 | __asm__("nop\n\t");
|
184 | PORTD &= ~(1 << BT);
|
185 | PORTD |= (1 << RS);
|
186 | // __asm__("nop\n\t");
|
187 | // __asm__("nop\n\t");
|
188 | // __asm__("nop\n\t");
|
189 | // __asm__("nop\n\t");
|
190 | }
|
191 | }
|
192 | }
|