Hallo Zusammen ! Ich beschäftige mich seit einigen Wochen mit den AVR Chips. Zur Zeit versuche ich über die UART Schnittstelle Zeichen einzulesen. Die Verdrahtung habe ich nach der Schaltung hier [[http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART]] aufgebaut, also die Erste ganz oben. Die Verbindung zum PC geht über einen USB to RS232 Stick von Conrad(FTDI). Also, ohne die Verdrahtung (SUB D9(Pin3) zu Max232(Pin13)) versendet der AVR wunderbar Zeichen an mein Terminal Programm. Aber sobald ich die Verbindung Pin13 zu Pin3 herstelle, empfange ich nichts mehr. Wenn ich im Terminal auf Senden drücke empfange ich kryptische Zeichen. Je länger die Zeichenkette die ich Sende je länger auch die Zeichen die ich empfange. Das merkwürdige ist, dass ich das im Code(s.u.) nicht eingestellt habe. Ich verstehe nicht warum nichts mehr funktioniert sobald ich die Verbindung herstelle. Für jegliche Vorschläge bin sehr Dankbar Gruß Jörg
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | #define F_CPU 8000000
|
4 | #define BAUD 9600
|
5 | #define MYUBRR (F_CPU/(16L*BAUD))-1
|
6 | |
7 | void inituart(); |
8 | void sendletter(unsigned char); |
9 | |
10 | int main(void) |
11 | {
|
12 | inituart(); |
13 | while(1) |
14 | {
|
15 | sendletter('.'); |
16 | }
|
17 | }
|
18 | |
19 | void inituart() |
20 | {
|
21 | UBRRH = (MYUBRR >> 8); |
22 | UBRRL = MYUBRR; |
23 | UCSRB = (1<<RXEN)|(1<<TXEN); |
24 | UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); |
25 | }
|
26 | |
27 | void sendletter(unsigned char letter) |
28 | {
|
29 | _delay_us(500); |
30 | while ( !( UCSRA & (1<<UDRE)) ); |
31 | UDR = letter; |
32 | }
|