Hallo,
hab nun mein erstes Mikrokontrollerprojekt
(Beitrag "AVR Atmega8 Binär Uhr Schaltplan") zusammengelötet und bin
dabei es mittels USBprog zu programmieren. Nun hab ich das Problem, das
die Verbindung manchmal funktioniert und manchmal nicht. Zudem bleibt
mein erstes Program manchmal hängen, bzw. es leuchten nicht alle LEDs
die eigentlich leuchten sollten, läuft dann aber urplötzlich normal
weiter.
Es liegt wohl irgendwie an der Elektronik, trotzdem poste ich mal den
C-Code. Meine Vermutung ist, das der Quarz aus dem Takt kommt, aber
ehrlich gesagt hab ich keine Ahnung.
1 | #include <avr/io.h>
|
2 |
|
3 |
|
4 | #define F_CPU 1000000UL
|
5 |
|
6 | #include <util/delay.h>
|
7 |
|
8 |
|
9 | int main()
|
10 | {
|
11 |
|
12 | uint8_t i;
|
13 | uint8_t k;
|
14 |
|
15 | i = 0;
|
16 | k = 20;
|
17 |
|
18 | // Initialisierung IO-Ports
|
19 | // 1 = Ausgang; 0 = Eingang
|
20 |
|
21 | DDRC = 0b00111111; // 00111111 PC0-PC5 Ausgang
|
22 | PORTC = 0b00000000; // 00000000
|
23 |
|
24 | DDRB = 0b00000001; // 00000001 PB0 Ausgang
|
25 | PORTB = 0b00000000; // 00000000
|
26 |
|
27 | DDRD = 0b11111011; // 11111011 PD3-PD7 Ausgang
|
28 | PORTD = 0b01111011; // 01111011 PD0+PD1+PD3-PD6 Ein
|
29 |
|
30 |
|
31 | while(1) // Unendlich lang wiederholen
|
32 | {
|
33 | while(i < k)
|
34 | {
|
35 | i++;
|
36 |
|
37 | PORTD = 0b01111010;
|
38 | PORTC = 0b00111111;
|
39 | _delay_ms(10);
|
40 |
|
41 | PORTD = 0b01111001;
|
42 | PORTC = 0b00000001;
|
43 | _delay_ms(10);
|
44 |
|
45 | PORTD = 0b01110011;
|
46 | PORTC = 0b00000001;
|
47 | _delay_ms(10);
|
48 |
|
49 | PORTD = 0b01101011;
|
50 | PORTC = 0b00000001;
|
51 | _delay_ms(10);
|
52 |
|
53 | PORTD = 0b01011011;
|
54 | PORTC = 0b00000001;
|
55 | _delay_ms(10);
|
56 |
|
57 | PORTD = 0b00111011;
|
58 | PORTC = 0b00100001;
|
59 | _delay_ms(10);
|
60 | }
|
61 | i = 0;
|
62 | while(i < k)
|
63 | {
|
64 | i++;
|
65 |
|
66 | PORTD = 0b01111010;
|
67 | PORTC = 0b00000000;
|
68 | _delay_ms(10);
|
69 |
|
70 | PORTD = 0b01111001;
|
71 | PORTC = 0b00111110;
|
72 | _delay_ms(10);
|
73 |
|
74 | PORTD = 0b01110011;
|
75 | PORTC = 0b00000010;
|
76 | _delay_ms(10);
|
77 |
|
78 | PORTD = 0b01101011;
|
79 | PORTC = 0b00000010;
|
80 | _delay_ms(10);
|
81 |
|
82 | PORTD = 0b01011011;
|
83 | PORTC = 0b00000010;
|
84 | _delay_ms(10);
|
85 |
|
86 | PORTD = 0b00111011;
|
87 | PORTC = 0b00000010;
|
88 | _delay_ms(10);
|
89 | }
|
90 | i = 0;
|
91 | while(i < k)
|
92 | {
|
93 | i++;
|
94 |
|
95 | PORTD = 0b01111010;
|
96 | PORTC = 0b00000000;
|
97 | _delay_ms(10);
|
98 |
|
99 | PORTD = 0b01111001;
|
100 | PORTC = 0b00000000;
|
101 | _delay_ms(10);
|
102 |
|
103 | PORTD = 0b01110011;
|
104 | PORTC = 0b00111100;
|
105 | _delay_ms(10);
|
106 |
|
107 | PORTD = 0b01101011;
|
108 | PORTC = 0b00000100;
|
109 | _delay_ms(10);
|
110 |
|
111 | PORTD = 0b01011011;
|
112 | PORTC = 0b00000100;
|
113 | _delay_ms(10);
|
114 |
|
115 | PORTD = 0b00111011;
|
116 | PORTC = 0b00000100;
|
117 | _delay_ms(10);
|
118 | }
|
119 | i = 0;
|
120 | while(i < k)
|
121 | {
|
122 | i++;
|
123 |
|
124 | PORTD = 0b01111010;
|
125 | PORTC = 0b00000000;
|
126 | _delay_ms(10);
|
127 |
|
128 | PORTD = 0b01111001;
|
129 | PORTC = 0b00000000;
|
130 | _delay_ms(10);
|
131 |
|
132 | PORTD = 0b01110011;
|
133 | PORTC = 0b00000000;
|
134 | _delay_ms(10);
|
135 |
|
136 | PORTD = 0b01101011;
|
137 | PORTC = 0b00111000;
|
138 | _delay_ms(10);
|
139 |
|
140 | PORTD = 0b01011011;
|
141 | PORTC = 0b00001000;
|
142 | _delay_ms(10);
|
143 |
|
144 | PORTD = 0b00111011;
|
145 | PORTC = 0b00001000;
|
146 | _delay_ms(10);
|
147 | }
|
148 | i = 0;
|
149 | while(i < k)
|
150 | {
|
151 | i++;
|
152 |
|
153 | PORTD = 0b01111010;
|
154 | PORTC = 0b00000000;
|
155 | _delay_ms(10);
|
156 |
|
157 | PORTD = 0b01111001;
|
158 | PORTC = 0b00000000;
|
159 | _delay_ms(10);
|
160 |
|
161 | PORTD = 0b01110011;
|
162 | PORTC = 0b00000000;
|
163 | _delay_ms(10);
|
164 |
|
165 | PORTD = 0b01101011;
|
166 | PORTC = 0b00000000;
|
167 | _delay_ms(10);
|
168 |
|
169 | PORTD = 0b01011011;
|
170 | PORTC = 0b00110000;
|
171 | _delay_ms(10);
|
172 |
|
173 | PORTD = 0b00111011;
|
174 | PORTC = 0b00010000;
|
175 | _delay_ms(10);
|
176 | }
|
177 | i = 0;
|
178 | }
|
179 | }
|