NoName schrieb:
> hallo,
> @ falk
> die habe ich schon durchgemacht und habe keinen fehler gefunden
>
> @ flo
> wieso sollte ich PORTA unabhängig schalten?
> der bleibt ja solange in der while schleife bis einmal ein zeichen
> angekommen ist
Wenn du am Port A mehrere Led (zb 8) hängen hast, lass dir mal das
Zeichen ausgeben.
Oder schalte die LED nach einer kurzen Verzögerungszeit wieder ein.
1 | #define F_CPU 16000000
|
2 |
|
3 | //----------------------
|
4 | #include <avr/io.h>
|
5 | #include <stdint.h>
|
6 | #include <util/delay.h>
|
7 |
|
8 | //----------------------
|
9 | int main (void)
|
10 | {
|
11 | char zeichen;
|
12 |
|
13 | UBRRH = 0;
|
14 | UBRRL = 207; //Baudrate von 4800
|
15 |
|
16 | UCSRB |= (1<<RXEN) | (1<<TXEN);
|
17 | UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
|
18 |
|
19 | DDRA = 0xff;
|
20 | PORTA = 0xff;
|
21 |
|
22 | while(1)
|
23 | {
|
24 | while (!(UCSRA & (1<<RXC)))
|
25 | {
|
26 | }
|
27 |
|
28 | zeichen = UDR;
|
29 | PORTA = 0x00;
|
30 |
|
31 | _delay_ms( 1000 );
|
32 | PORTA = 0xff;
|
33 | }
|
34 | return(0);
|
35 | }
|
Wenns jetzt am Anfang 1 mal blinkt und danach nur bei jedem Tastendruck,
dann hast du dir beim Hochfahren des Mega irgendein Störzeichen auf der
UART eingehandelt.
Drück auch im Hyperterminal mehrere Tasten und auch Return. Nicht dass
da irgendwo noch ein Buffer dazwischen sitzt, der auf das Zeilenende für
die Übertragung wartet.