CCD.c


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
}