Hallo, ich benutze aktuell den Atmega 644 und bin in C gleich einmal daran gescheitert die Signale an Port A auszugeben. Setze ich nämlich mit
1 | PORTA=255 |
leuchten alle LEDs wies sein soll, blöd ist nur ich krieg sie nichtmehr aus. Jede direkte Zuweisung scheint final zu sein. Das einzigste was funktioniert ist die Zuweisung über ein ExOr nur das setzt voraus das ich davor alle LEDs nochmal auf 0 gesetzt habe, ist also nicht wirklich praktikabel. Was mach ich falsch?? Hier der code benutze die UART bib von peter fleury läuft 1a:
1 | |
2 | #include <avr/io.h> |
3 | #include <util/delay.h> // für _delay_ms(zeit); |
4 | #include <stdlib.h> |
5 | #include <avr/interrupt.h> |
6 | #include <avr/signal.h> |
7 | #include <avr/pgmspace.h> |
8 | |
9 | #include "uart.h" |
10 | |
11 | #define UART_BAUD_RATE 57600
|
12 | |
13 | int main(void) |
14 | {
|
15 | uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); |
16 | sei(); |
17 | |
18 | DDRA = 0xFF; |
19 | |
20 | |
21 | unsigned int empfangen=0; |
22 | |
23 | while(1==1){ |
24 | |
25 | |
26 | empfangen=uart_getc(); |
27 | |
28 | |
29 | if(empfangen==1){ |
30 | PORTA = 0b00000001; |
31 | }
|
32 | if(empfangen==2){ |
33 | PORTA = 0b00000010; |
34 | }
|
35 | if(empfangen==3){ |
36 | PORTA = 0b00000100; |
37 | }
|
38 | if(empfangen==4){ |
39 | PORTA = 0b00001000; |
40 | }
|
41 | if(empfangen==5){ |
42 | PORTA = 0; |
43 | }
|
44 | |
45 | |
46 | }
|
47 | |
48 | }
|