Hallo, ich habe mir eine Spielkonsole gebaut mit Tastern und zur Anzeige eine LED-Matrix ich steuere sie mit 2 Atmega644. Ich habe mehrere Matrix pins an dem einen Controllern und mehrere an dem anderen. Ich lass sie über UART miteinander kommunizieren und das funktioniert auch soweit. Mein Problem ist,dass wenn ich erst eine Led, welcher der Pin der Reihe an dem einen controller hängt und die Zeile der Led an dem anderen Controller, oder eben anderstherum ist und ich dann zu einer led wechseln will bei dem reihe und zeile amersten controller hängen dann bleibt die erstgenannte led trotzdem an. Hat vlt. jemand eine Idee
Ist ja super wenn es soweit klappt, aber wieso für sowas zwei uC?
c16? PS: Wenn ich was wichtiges nicht genannt habe schreibt es einfach anstatt sich drüber aufzuren hilft allen mehr
Naja, wir kennen weder deinen Schaltplan, noch deine Quellcode, ich vermute dann immer, das C16 defekt ist und die Probleme erzeugt. Vielleicht fehlen auch nur Treiber-Transistoren, aber das wird sich zeigen, wenn du mehr als sagen wie 10 LEDs anhast, und jede etwa 2mA zieht..
Muss ich meine Brillen putzen, oder seht ihr auch keinen Spannungsregler auf der Platine? Habe ich den Schaltplan auch übersehen?
Also das ist noch ein altes bild davon und ich hab jetzt n Spannungsregler und Bypasskondensatoren an den mcs und die kondensatoren für den regler. Das war noch mein altes Problem. PS: Es handelt sich hier jedoch um ein Softwareproblem nicht um ein Hardwarefehler
:
Bearbeitet durch User
Julian Bertsch schrieb: > PS: Es handelt sich hier jedoch um ein Softwareproblem nicht um ein > Hardwarefehler Jetzt sehe ich den Fehler. In der 32. Zeile der main hast du den Dereferenzierungsoperator falsch angewendet. Poste deinen Code, und der Schaltplan könnte bei der Fehlersuche auch hilfreich sein.
:
Bearbeitet durch User
1. Kann man mich nicht eifach auf was fehlendes Hinweisen anstatt gleich sarkastisch reagiert aber egal jetz, ich poste einfach mal den quellcode main mc1
1 | #include <avr/io.h> |
2 | #define numberOfButtons 2 |
3 | #include <util/delay.h> |
4 | #include "UART_read.h" |
5 | #include "UART_send.h" |
6 | |
7 | #include "matrix_register.h" |
8 | #include "button_register.h" |
9 | #include "bild.h" |
10 | |
11 | |
12 | int main(void){ |
13 | |
14 | DDRD |= (1<<7); |
15 | DDRD &= ~(1<< PIND5) | (1<< PIND6); |
16 | |
17 | PORTD |= 1 << PIND5 | 1 << PIND6; |
18 | |
19 | |
20 | |
21 | DDRC = (1<<DDC0) | (1<<DDC1) | (1<<DDC2) | (1<<DDC3) | (1<<DDC4)| (1<<DDC5) | (1<<DDC6) | (1<<DDC7); |
22 | PORTC |= (1<<DDC0) | (1<<DDC1) | (1<<DDC2) | (1<<DDC3) | (1<<DDC4)| (1<<DDC5) | (1<<DDC6) | (1<<DDC7); |
23 | |
24 | DDRB = (1<<DDB0) | (1<<DDB1) | (1<<DDB2); |
25 | PORTB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2); |
26 | DDRA = (1<<DDA0) | (1<<DDA1) | (1<<DDA2) | (1<<DDA3) | (1<<DDA4) | (1<<DDA5) | (1<<DDA6) | (1<<DDA7); |
27 | PORTA |= (1<<DDA0) | (1<<DDA1) | (1<<DDA2) | (1<<DDA3) | (1<<DDA4) | (1<<DDA5) | (1<<DDA6) | (1<<DDA7); |
28 | |
29 | |
30 | PORTC |= (1<<PC0) | (1<<PC1) | (1<<PC2) | (1<<PC3) | (1<<PC4) | (1<<PC5) | (1<<PC6) | (1<<PC7); |
31 | |
32 | |
33 | PORTD &= ~(1<<7); |
34 | |
35 | PORTB &= ~(1<<0); |
36 | |
37 | PORTB &= ~(1<<2); |
38 | |
39 | PORTB &= ~(1<<1); |
40 | |
41 | PORTA &= ~(1<<0); |
42 | |
43 | PORTA &= ~(1<<1); |
44 | |
45 | PORTA &= ~(1<<2); |
46 | |
47 | PORTA &= ~(1<<3); |
48 | |
49 | PORTA &= ~(1<<4); |
50 | |
51 | PORTA &= ~(1<<5); |
52 | |
53 | PORTA &= ~(1<<6); |
54 | |
55 | PORTA &= ~(1<<7); |
56 | |
57 | |
58 | |
59 | |
60 | int Pressed =0; |
61 | int i = 0; |
62 | int pos_s1 = 1; |
63 | int pos_s2 = 1; |
64 | int pos_col_ball = 2; |
65 | int pos_row_ball = 2; |
66 | |
67 | int UBBRValue = 25; |
68 | |
69 | //Put the upper part of the baud number here (bits 8 to 11) |
70 | UBRR0H = (unsigned char) (UBBRValue >> 8); |
71 | |
72 | //Put the remaining part of the baud number here |
73 | UBRR0L = (unsigned char) UBBRValue; |
74 | |
75 | //Enable the receiver and transmitter |
76 | UCSR0B = (1 << RXEN0) | (1 << TXEN0); |
77 | |
78 | //Set 2 stop bits and data bit length is 8-bit |
79 | UCSR0C = (1 << USBS0) | (3 << UCSZ00); |
80 | |
81 | |
82 | |
83 | while(1) |
84 | { |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | if (ButtonPressed(0, PIND, 5, 0)){ |
94 | |
95 | pos_s1++; |
96 | if(pos_s1 >= 16 ){ |
97 | pos_s1 = 16; |
98 | } |
99 | } |
100 | |
101 | if (ButtonPressed(1, PIND, 6, 0)){ |
102 | |
103 | pos_s1--; |
104 | if(pos_s1 < 1 ){ |
105 | pos_s1 = 1; |
106 | } |
107 | } |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | //bild(i,pos_s1,pos_s2,pos_col_ball,pos_row_ball); |
115 | |
116 | if(i<= 500){ |
117 | |
118 | matrix(1,9); |
119 | |
120 | } |
121 | else { |
122 | if(i<= 1000){ |
123 | |
124 | matrix(16,8); |
125 | |
126 | } |
127 | else{ |
128 | if(i<= 1500){ |
129 | matrix(16,7); |
130 | |
131 | } |
132 | else{ |
133 | i = 0; |
134 | } |
135 | } |
136 | } |
137 | i++; |
138 | |
139 | } |
140 | } |
matrix_register.h
1 | #include <avr/io.h> |
2 | void matrix(int col, int row){ |
3 | float ms = 0.1; |
4 | |
5 | if((col == 5 && row == 9)||(col == 5 && row == 10)|| |
6 | (col == 5 && row == 11) ||(col == 5 && row == 12)|| |
7 | (col == 5 && row == 13) ||(col == 5 && row == 14)|| |
8 | (col == 5 && row == 15)|| (col == 5 && row == 16)){ |
9 | |
10 | switch(row){ |
11 | case 9: |
12 | uart_send(1); |
13 | while(uart_read() != 0); |
14 | break; |
15 | |
16 | case 10: |
17 | uart_send(2); |
18 | while(uart_read() != 0); |
19 | break; |
20 | |
21 | case 11: |
22 | uart_send(34); |
23 | while(uart_read() != 0); |
24 | break; |
25 | |
26 | case 12: |
27 | uart_send(4); |
28 | while(uart_read() != 0); |
29 | break; |
30 | |
31 | case 13: |
32 | uart_send(5); |
33 | while(uart_read() != 0); |
34 | break; |
35 | |
36 | case 14: |
37 | uart_send(6); |
38 | while(uart_read() != 0); |
39 | break; |
40 | |
41 | case 15: |
42 | uart_send(20); |
43 | while(uart_read() != 0); |
44 | break; |
45 | |
46 | case 16: |
47 | uart_send(8); |
48 | while(uart_read() != 0); |
49 | break; |
50 | } |
51 | |
52 | } |
53 | else if((col == 6 && row == 9)||(col == 6 && row == 10)|| |
54 | (col == 6 && row == 11) ||(col == 6 && row == 12)|| |
55 | (col == 6 && row == 13) ||(col == 6 && row == 14)|| |
56 | (col == 6 && row == 15)|| (col == 6 && row == 16)){ |
57 | switch(row){ |
58 | case 9: |
59 | uart_send(9); |
60 | |
61 | break; |
62 | |
63 | case 10: |
64 | uart_send(10); |
65 | |
66 | break; |
67 | |
68 | case 11: |
69 | uart_send(11); |
70 | |
71 | break; |
72 | |
73 | case 12: |
74 | uart_send(12); |
75 | |
76 | break; |
77 | |
78 | case 13: |
79 | uart_send(13); |
80 | |
81 | break; |
82 | |
83 | case 14: |
84 | uart_send(14); |
85 | |
86 | break; |
87 | |
88 | case 15: |
89 | uart_send(33); |
90 | |
91 | break; |
92 | |
93 | case 16: |
94 | uart_send(16); |
95 | |
96 | break; |
97 | } |
98 | } |
99 | else if((col == 7 && row == 9)||(col == 7 && row == 10)|| |
100 | (col == 7 && row == 11) ||(col == 7 && row == 12)|| |
101 | (col == 7 && row == 13) ||(col == 7 && row == 14)|| |
102 | (col == 7 && row == 15)|| (col == 7 && row == 16)){ |
103 | switch(row){ |
104 | case 9: |
105 | uart_send(17); |
106 | while(uart_read() != 0); |
107 | break; |
108 | |
109 | case 10: |
110 | uart_send(18); |
111 | while(uart_read() != 0); |
112 | break; |
113 | |
114 | case 11: |
115 | uart_send(19); |
116 | while(uart_read() != 0); |
117 | break; |
118 | |
119 | case 12: |
120 | uart_send(35); |
121 | while(uart_read() != 0); |
122 | break; |
123 | |
124 | case 13: |
125 | uart_send(21); |
126 | while(uart_read() != 0); |
127 | break; |
128 | |
129 | case 14: |
130 | uart_send(22); |
131 | while(uart_read() != 0); |
132 | break; |
133 | |
134 | case 15: |
135 | uart_send(23); |
136 | while(uart_read() != 0); |
137 | break; |
138 | |
139 | case 16: |
140 | uart_send(24); |
141 | while(uart_read() != 0); |
142 | break; |
143 | } |
144 | } |
145 | |
146 | else if((col == 8 && row == 9)||(col == 8 && row == 10)|| |
147 | (col == 8 && row == 11) ||(col == 8 && row == 12)|| |
148 | (col == 8 && row == 13) ||(col == 8 && row == 14)|| |
149 | (col == 8 && row == 15)|| (col == 8 && row == 16)){ |
150 | switch(row){ |
151 | case 9: |
152 | uart_send(25); |
153 | while(uart_read() != 0); |
154 | break; |
155 | |
156 | case 10: |
157 | uart_send(26); |
158 | while(uart_read() != 0); |
159 | break; |
160 | |
161 | case 11: |
162 | uart_send(27); |
163 | while(uart_read() != 0); |
164 | break; |
165 | |
166 | case 12: |
167 | uart_send(28); |
168 | while(uart_read() != 0); |
169 | break; |
170 | |
171 | case 13: |
172 | uart_send(29); |
173 | while(uart_read() != 0); |
174 | break; |
175 | |
176 | case 14: |
177 | uart_send(30); |
178 | while(uart_read() != 0); |
179 | break; |
180 | |
181 | case 15: |
182 | uart_send(31); |
183 | |
184 | break; |
185 | |
186 | case 16: |
187 | uart_send(32); |
188 | |
189 | break; |
190 | } |
191 | } |
192 | else{ |
193 | switch(col){ |
194 | |
195 | case 1: |
196 | |
197 | |
198 | PORTD |= 1 << 7; |
199 | |
200 | break; |
201 | |
202 | case 2: |
203 | |
204 | |
205 | PORTB |= 1 << 0; |
206 | |
207 | break; |
208 | |
209 | case 3: |
210 | |
211 | |
212 | |
213 | PORTB = 1 << 2; |
214 | |
215 | break; |
216 | |
217 | case 4: |
218 | |
219 | PORTB |= 1 << 1; |
220 | |
221 | break; |
222 | |
223 | case 5: |
224 | |
225 | uart_send(0b11111111); |
226 | |
227 | break; |
228 | |
229 | case 6: |
230 | |
231 | uart_send(0b00000011); |
232 | |
233 | break; |
234 | |
235 | case 7: |
236 | |
237 | uart_send(0b00000111); |
238 | |
239 | break; |
240 | case 8: |
241 | |
242 | uart_send(0b00001111); |
243 | |
244 | break; |
245 | |
246 | |
247 | |
248 | case 9: |
249 | |
250 | PORTA |= 1 << 0; |
251 | |
252 | |
253 | |
254 | break; |
255 | |
256 | case 10: |
257 | |
258 | |
259 | PORTA |= 1 << 1; |
260 | |
261 | break; |
262 | |
263 | case 11: |
264 | |
265 | |
266 | PORTA |= 1 << 2; |
267 | |
268 | break; |
269 | |
270 | case 12: |
271 | |
272 | |
273 | PORTA |= 1 << 3; |
274 | |
275 | break; |
276 | |
277 | case 13: |
278 | |
279 | PORTA |= 1 << 4; |
280 | |
281 | break; |
282 | |
283 | case 14: |
284 | |
285 | |
286 | PORTA |= 1 << 5; |
287 | |
288 | break; |
289 | |
290 | case 15: |
291 | |
292 | |
293 | PORTA |= 1 << 6; |
294 | |
295 | break; |
296 | |
297 | case 16: |
298 | |
299 | |
300 | PORTA |= 1 << 7; |
301 | |
302 | break; |
303 | |
304 | |
305 | |
306 | |
307 | |
308 | } |
309 | |
310 | switch(row){ |
311 | case 1: |
312 | |
313 | |
314 | |
315 | PORTC &= ~(1<<PC0); |
316 | _delay_ms(ms); |
317 | PORTC |= (1<<PC0); |
318 | |
319 | break; |
320 | |
321 | case 2: |
322 | |
323 | PORTC &= ~(1<<PC1); |
324 | _delay_ms(ms); |
325 | PORTC |= (1<<PC1); |
326 | |
327 | break; |
328 | |
329 | case 3: |
330 | PORTC &= ~(1<<PC2); |
331 | _delay_ms(ms); |
332 | PORTC |= (1<<PC2); |
333 | break; |
334 | |
335 | case 4: |
336 | PORTC &= ~(1<<PC3); |
337 | _delay_ms(ms); |
338 | PORTC |= (1<<PC3); |
339 | break; |
340 | |
341 | case 5: |
342 | PORTC &= ~(1<<PC7); |
343 | _delay_ms(ms); |
344 | PORTC |= (1<<PC7); |
345 | break; |
346 | |
347 | case 6: |
348 | PORTC &= ~(1<<PC6); |
349 | _delay_ms(ms); |
350 | PORTC |= (1<<PC6); |
351 | break; |
352 | |
353 | case 7: |
354 | PORTC &= ~(1<<PC5); |
355 | _delay_ms(ms); |
356 | PORTC |= (1<<PC5); |
357 | break; |
358 | |
359 | case 8: |
360 | PORTC &= ~(1<<PC4); |
361 | _delay_ms(ms); |
362 | PORTC |= (1<<PC4); |
363 | break; |
364 | |
365 | |
366 | |
367 | case 9: |
368 | uart_send(0b00000000); |
369 | while(uart_read() != 0); |
370 | break; |
371 | |
372 | case 10: |
373 | uart_send(0b10000000); |
374 | while(uart_read() != 0); |
375 | break; |
376 | |
377 | case 11: |
378 | uart_send(0b11000000); |
379 | while(uart_read() != 0); |
380 | break; |
381 | |
382 | case 12: |
383 | uart_send(0b11100000); |
384 | while(uart_read() != 0); |
385 | break; |
386 | |
387 | case 13: |
388 | uart_send(0b11110000); |
389 | while(uart_read() != 0); |
390 | break; |
391 | |
392 | case 14: |
393 | uart_send(0b11111000); |
394 | while(uart_read() != 0); |
395 | break; |
396 | |
397 | case 15: |
398 | uart_send(0b11111100); |
399 | while(uart_read() != 0); |
400 | break; |
401 | |
402 | case 16: |
403 | uart_send(0b11111110); |
404 | while(uart_read() != 0); |
405 | break; |
406 | } |
407 | |
408 | |
409 | |
410 | |
411 | switch(col){ |
412 | |
413 | case 1: |
414 | |
415 | |
416 | |
417 | PORTD &= ~(1<<7); |
418 | break; |
419 | |
420 | case 2: |
421 | |
422 | |
423 | |
424 | PORTB &= ~(1<<0); |
425 | break; |
426 | |
427 | case 3: |
428 | |
429 | |
430 | |
431 | |
432 | PORTB &= ~(1<<2); |
433 | break; |
434 | |
435 | case 4: |
436 | PORTB &= ~(1<<1); |
437 | |
438 | break; |
439 | |
440 | case 9: |
441 | |
442 | PORTA &= ~(1<<0); |
443 | |
444 | |
445 | break; |
446 | |
447 | case 10: |
448 | |
449 | PORTA &= ~(1<<1); |
450 | |
451 | break; |
452 | |
453 | case 11: |
454 | |
455 | PORTA &= ~(1<<2); |
456 | |
457 | break; |
458 | |
459 | case 12: |
460 | |
461 | PORTA &= ~(1<<3); |
462 | break; |
463 | |
464 | case 13: |
465 | |
466 | PORTA &= ~(1<<4); |
467 | |
468 | break; |
469 | |
470 | case 14: |
471 | |
472 | PORTA &= ~(1<<5); |
473 | |
474 | break; |
475 | |
476 | case 15: |
477 | |
478 | PORTA &= ~(1<<6); |
479 | |
480 | break; |
481 | |
482 | case 16: |
483 | |
484 | PORTA &= ~(1<<7); |
485 | |
486 | break; |
487 | |
488 | |
489 | |
490 | |
491 | |
492 | } |
493 | |
494 | } |
495 | |
496 | } |
main.c mc2
1 | #include <avr/io.h> |
2 | #define numberOfButtons 6 |
3 | #include <util/delay.h> |
4 | #include "UART_send.h" |
5 | #include "UART_read.h" |
6 | #include "matrix_register.h" |
7 | #include "button_register.h" |
8 | |
9 | |
10 | |
11 | int main(void){ |
12 | int b = 1; |
13 | |
14 | DDRB &= ~(1<<b) ; |
15 | |
16 | PORTB |= 1 << b ; |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | DDRB = (1<<2) ; |
23 | DDRC = (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6); |
24 | DDRA = (1<<0) | (1<<1) | (1<<2) | (1<<3); |
25 | PORTA |= (1<<0) | (1<<1) | (1<<2); |
26 | PORTC |= (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6) ; |
27 | PORTB |= (1<<2); |
28 | |
29 | |
30 | |
31 | DDRD |= (1<<7); |
32 | |
33 | |
34 | PORTD &= ~(1<<7); |
35 | PORTD |= (1<<7); |
36 | PORTB &= ~(1<<2); |
37 | PORTA &= ~(1 << 2); |
38 | PORTA &= ~(1 << 0); |
39 | PORTA &= ~(1 << 1); |
40 | |
41 | |
42 | |
43 | |
44 | int UBBRValue = 25; |
45 | |
46 | //Put the upper part of the baud number here (bits 8 to 11) |
47 | UBRR0H = (unsigned char) (UBBRValue >> 8); |
48 | |
49 | //Put the remaining part of the baud number here |
50 | UBRR0L = (unsigned char) UBBRValue; |
51 | |
52 | //Enable the receiver and transmitter |
53 | UCSR0B = (1 << RXEN0) | (1 << TXEN0); |
54 | |
55 | //Set 2 stop bits and data bit length is 8-bit |
56 | UCSR0C = (1 << USBS0) | (3 << UCSZ00); |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | int i = 0; |
66 | int col = 9; |
67 | int uart = 0; |
68 | int matrix_led = 0; |
69 | |
70 | |
71 | |
72 | while(1) |
73 | { |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | switch(uart_read()){ |
81 | |
82 | |
83 | |
84 | case 0b00000000: |
85 | matrix_led = 1; |
86 | |
87 | break; |
88 | |
89 | case 0b10000000: |
90 | matrix_led = 2; |
91 | |
92 | break; |
93 | |
94 | case 0b11000000: |
95 | matrix_led = 3; |
96 | |
97 | break; |
98 | |
99 | case 0b11100000: |
100 | matrix_led = 4; |
101 | |
102 | break; |
103 | |
104 | case 0b11110000: |
105 | matrix_led = 5; |
106 | |
107 | break; |
108 | |
109 | case 0b11111000: |
110 | matrix_led = 6; |
111 | |
112 | break; |
113 | |
114 | case 0b11111100: |
115 | matrix_led = 7; |
116 | |
117 | break; |
118 | |
119 | case 0b11111110: |
120 | matrix_led = 8; |
121 | |
122 | break; |
123 | |
124 | case 0b11111111: |
125 | matrix_led = 9; |
126 | |
127 | break; |
128 | |
129 | case 0b00000011: |
130 | matrix_led = 10; |
131 | |
132 | break; |
133 | |
134 | case 0b00000111: |
135 | matrix_led = 11; |
136 | |
137 | break; |
138 | |
139 | case 0b00001111: |
140 | matrix_led = 12; |
141 | |
142 | break; |
143 | |
144 | case 1: |
145 | matrix_led = 13; |
146 | |
147 | break; |
148 | |
149 | case 2: |
150 | matrix_led = 14; |
151 | |
152 | break; |
153 | |
154 | case 34: |
155 | matrix_led = 15; |
156 | |
157 | break; |
158 | |
159 | case 4: |
160 | matrix_led = 16; |
161 | |
162 | break; |
163 | |
164 | case 5: |
165 | matrix_led = 17; |
166 | |
167 | break; |
168 | |
169 | case 6: |
170 | matrix_led = 18; |
171 | |
172 | break; |
173 | |
174 | case 20: |
175 | matrix_led = 19; |
176 | |
177 | break; |
178 | |
179 | case 8: |
180 | matrix_led = 20; |
181 | |
182 | break; |
183 | |
184 | case 9: |
185 | matrix_led = 21; |
186 | |
187 | break; |
188 | |
189 | case 10: |
190 | matrix_led = 22; |
191 | |
192 | break; |
193 | |
194 | case 11: |
195 | matrix_led = 23; |
196 | |
197 | break; |
198 | |
199 | case 12: |
200 | matrix_led = 24; |
201 | |
202 | break; |
203 | |
204 | case 13: |
205 | matrix_led = 25; |
206 | |
207 | break; |
208 | |
209 | case 14: |
210 | matrix_led = 26; |
211 | |
212 | break; |
213 | |
214 | case 33: |
215 | matrix_led = 27; |
216 | |
217 | break; |
218 | |
219 | case 16: |
220 | matrix_led = 28; |
221 | |
222 | break; |
223 | |
224 | case 17: |
225 | matrix_led = 29; |
226 | |
227 | break; |
228 | |
229 | case 18: |
230 | matrix_led = 30; |
231 | |
232 | break; |
233 | |
234 | case 19: |
235 | matrix_led = 31; |
236 | |
237 | break; |
238 | |
239 | case 35: |
240 | matrix_led = 32; |
241 | |
242 | break; |
243 | |
244 | case 21: |
245 | matrix_led = 33; |
246 | |
247 | break; |
248 | |
249 | case 22: |
250 | matrix_led = 34; |
251 | |
252 | break; |
253 | |
254 | case 23: |
255 | matrix_led = 35; |
256 | |
257 | break; |
258 | |
259 | case 24: |
260 | matrix_led = 36; |
261 | |
262 | break; |
263 | |
264 | case 25: |
265 | matrix_led = 37; |
266 | |
267 | break; |
268 | |
269 | case 26: |
270 | matrix_led = 38; |
271 | |
272 | break; |
273 | |
274 | case 27: |
275 | matrix_led = 39; |
276 | |
277 | break; |
278 | |
279 | case 28: |
280 | matrix_led = 40; |
281 | |
282 | break; |
283 | |
284 | case 29: |
285 | matrix_led = 41; |
286 | |
287 | break; |
288 | |
289 | case 30: |
290 | matrix_led = 42; |
291 | |
292 | break; |
293 | case 31: |
294 | matrix_led = 43; |
295 | |
296 | break; |
297 | case 32: |
298 | matrix_led = 44; |
299 | |
300 | break; |
301 | |
302 | } |
303 | |
304 | switch(matrix_led){ |
305 | |
306 | case 1: |
307 | matrix(0,9); |
308 | uart_send(0); |
309 | break; |
310 | |
311 | case 2: |
312 | matrix(0,10); |
313 | uart_send(0); |
314 | break; |
315 | |
316 | case 3: |
317 | matrix(0,11); |
318 | uart_send(0); |
319 | break; |
320 | |
321 | |
322 | case 4: |
323 | matrix(0,12); |
324 | uart_send(0); |
325 | break; |
326 | |
327 | case 5: |
328 | matrix(0,13); |
329 | uart_send(0); |
330 | break; |
331 | |
332 | case 6: |
333 | matrix(0,14); |
334 | uart_send(0); |
335 | break; |
336 | |
337 | |
338 | case 7: |
339 | matrix(0,15); |
340 | uart_send(0); |
341 | break; |
342 | |
343 | case 8: |
344 | matrix(0,16); |
345 | uart_send(0); |
346 | break; |
347 | |
348 | case 9: |
349 | matrix(5,0); |
350 | uart_send(0); |
351 | break; |
352 | |
353 | case 10: |
354 | matrix(6,0); |
355 | uart_send(0); |
356 | break; |
357 | |
358 | case 11: |
359 | matrix(7,0); |
360 | uart_send(0); |
361 | break; |
362 | |
363 | case 12: |
364 | matrix(8,0); |
365 | uart_send(0); |
366 | break; |
367 | |
368 | case 13: |
369 | matrix(5,9); |
370 | uart_send(0); |
371 | break; |
372 | case 14: |
373 | matrix(5,10); |
374 | uart_send(0); |
375 | break; |
376 | |
377 | case 15: |
378 | matrix(5,11); |
379 | uart_send(0); |
380 | break; |
381 | case 16: |
382 | matrix(5,12); |
383 | uart_send(0); |
384 | break; |
385 | |
386 | case 17: |
387 | matrix(5,13); |
388 | uart_send(0); |
389 | break; |
390 | case 18: |
391 | matrix(5,14); |
392 | uart_send(0); |
393 | break; |
394 | |
395 | case 19: |
396 | matrix(5,15); |
397 | uart_send(0); |
398 | break; |
399 | case 20: |
400 | matrix(5,16); |
401 | uart_send(0); |
402 | break; |
403 | |
404 | |
405 | case 21: |
406 | matrix(6,9); |
407 | uart_send(0); |
408 | break; |
409 | case 22: |
410 | matrix(6,10); |
411 | uart_send(0); |
412 | break; |
413 | |
414 | case 23: |
415 | matrix(6,11); |
416 | uart_send(0); |
417 | break; |
418 | case 24: |
419 | matrix(6,12); |
420 | uart_send(0); |
421 | break; |
422 | |
423 | case 25: |
424 | matrix(6,13); |
425 | uart_send(0); |
426 | break; |
427 | case 26: |
428 | matrix(6,14); |
429 | uart_send(0); |
430 | break; |
431 | |
432 | case 27: |
433 | matrix(6,15); |
434 | uart_send(0); |
435 | break; |
436 | case 28: |
437 | matrix(6,16); |
438 | uart_send(0); |
439 | break; |
440 | |
441 | case 29: |
442 | matrix(7,9); |
443 | uart_send(0); |
444 | break; |
445 | case 30: |
446 | matrix(7,10); |
447 | uart_send(0); |
448 | break; |
449 | |
450 | case 31: |
451 | matrix(7,11); |
452 | uart_send(0); |
453 | break; |
454 | case 32: |
455 | matrix(7,12); |
456 | uart_send(0); |
457 | break; |
458 | |
459 | case 33: |
460 | matrix(7,13); |
461 | uart_send(0); |
462 | break; |
463 | case 34: |
464 | matrix(7,14); |
465 | uart_send(0); |
466 | break; |
467 | |
468 | case 35: |
469 | matrix(7,15); |
470 | uart_send(0); |
471 | break; |
472 | case 36: |
473 | matrix(7,16); |
474 | uart_send(0); |
475 | break; |
476 | |
477 | case 37: |
478 | matrix(8,9); |
479 | uart_send(0); |
480 | break; |
481 | case 38: |
482 | matrix(8,10); |
483 | uart_send(0); |
484 | break; |
485 | |
486 | case 39: |
487 | matrix(8,11); |
488 | uart_send(0); |
489 | break; |
490 | case 40: |
491 | matrix(8,12); |
492 | uart_send(0); |
493 | break; |
494 | |
495 | case 41: |
496 | matrix(8,13); |
497 | uart_send(0); |
498 | break; |
499 | case 42: |
500 | matrix(8,14); |
501 | uart_send(0); |
502 | break; |
503 | |
504 | case 43: |
505 | matrix(8,15); |
506 | uart_send(0); |
507 | break; |
508 | case 44: |
509 | matrix(8,16); |
510 | uart_send(0); |
511 | break; |
512 | } |
513 | |
514 | |
515 | |
516 | } |
517 | } |
matrix_register.h mc2
1 | #include <avr/io.h> |
2 | void matrix(int col, int row){ |
3 | float ms = 0.1; |
4 | switch(col){ |
5 | |
6 | |
7 | case 5: |
8 | PORTB |= 1 << 2; |
9 | break; |
10 | |
11 | case 6: |
12 | PORTA |= 1 << 2; |
13 | break; |
14 | |
15 | case 7: |
16 | PORTA |= 1 << 0; |
17 | break; |
18 | |
19 | case 8: |
20 | PORTA |= 1 << 1; |
21 | break; |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | } |
31 | |
32 | switch(row){ |
33 | case 9: |
34 | PORTD &= ~(1<<7); |
35 | _delay_ms(ms); |
36 | PORTD |= (1<<7); |
37 | break; |
38 | |
39 | case 10: |
40 | PORTC &= ~(1<<PC0); |
41 | _delay_ms(ms); |
42 | PORTC |= (1<<PC0); |
43 | break; |
44 | |
45 | case 11: |
46 | PORTC &= ~(1<<PC1); |
47 | _delay_ms(ms); |
48 | PORTC |= (1<<PC1); |
49 | break; |
50 | |
51 | case 12: |
52 | PORTC &= ~(1<<PC2); |
53 | _delay_ms(ms); |
54 | PORTC |= (1<<PC2); |
55 | break; |
56 | |
57 | case 13: |
58 | PORTC &= ~(1<<PC3); |
59 | _delay_ms(ms); |
60 | PORTC |= (1<<PC3); |
61 | break; |
62 | |
63 | case 14: |
64 | PORTC &= ~(1<<PC4); |
65 | _delay_ms(ms); |
66 | PORTC |= (1<<PC4); |
67 | break; |
68 | |
69 | case 15: |
70 | PORTC &= ~(1<<PC5); |
71 | _delay_ms(ms); |
72 | PORTC |= (1<<PC5); |
73 | break; |
74 | |
75 | case 16: |
76 | PORTC &= ~(1<<PC6); |
77 | _delay_ms(ms); |
78 | PORTC |= (1<<PC6); |
79 | break; |
80 | } |
81 | |
82 | switch(col){ |
83 | |
84 | |
85 | case 5: |
86 | PORTB &= ~(1<<2); |
87 | break; |
88 | |
89 | case 6: |
90 | PORTA &= ~(1 << 2); |
91 | break; |
92 | |
93 | case 7: |
94 | PORTA &= ~(1 << 0); |
95 | break; |
96 | |
97 | case 8: |
98 | PORTA &= ~(1 << 1); |
99 | break; |
100 | |
101 | |
102 | |
103 | } |
104 | |
105 | |
106 | |
107 | } |
Wie soll man darauf reagieren, wenn nicht sarkastisch? Hut ab an alle die sich in ihrer Freizeit damit auseinander setzen.
:
Bearbeitet durch User
Julian Bertsch schrieb: > aber egal jetz, ich poste einfach mal den quellcode Um Himmels Willen - viel Fleissarbeit, wenig System. Auch die Kommentare sind vorbildlich... Aber mal im Ernst, was glaubst du, wie wir dir hier helfen können, du rotzt hier den Code hin (anstatt einen Anhang draus zu machen), unkommentiert und ohne Kommentar - hunderte von Zeilen und wir sollen uns jetzt da durchwühlen?
:
Bearbeitet durch User
Julian Bertsch schrieb: > 1. Kann man mich nicht eifach auf was fehlendes Hinweisen anstatt gleich > sarkastisch reagiert aber egal jetz, ich poste einfach mal den quellcode Hübscher Kot. Vor allen Dingen schön lang. Das Scrollrad von meiner Maus ist kurz vor einem Lagerschaden. Wer soll dir jetzt sagen, wo der Fehler ist? Weisst du was Funktionen sind? Tu dir selbst den Gefallen und packe die Programmteile, die jeweils bestimmte Sachen machen, in einzelne Funktionen. Da steigt so doch keine Sau durch! Erzähl jetzt nicht, daß du da durchsteigst! Wenn du damit fertig bist, grenzt du dein Problem soweit ein, daß du sagen kannst, in welcher dieser Funktionen der Fehler liegt. Und vor allen Dingen beschreibst du genau, was der Fehler ist. Dann kann man dir auch helfen. Und du kannst dir selber helfen, weil du dann nämlich einzelne Programmteile, die besagten Funktionen eben, testen kannst. Dann rückst du deinen Code noch schön ein und geizt ein wenig mit den Leerzeilen. Und wenn du damit fertig, kommst du nochmal wieder und dir wird auch geholfen. mfg. und Frohe Ostern
Am leichtesten würdest du uns die Arbeit machen, wenn du den Teil der die LEDs ansteuert postest bzw. markierst. Und dazu den Schaltplan dazu postest. Es ist unmöglich, den Fehler zu finden, wenn man nicht weiß an welchen Pins die LEDs hängen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.