Hallo Gemeinde,
irgend wie will das Echo über usart bei mir nicht richtig klappen
anstatt der gedrückten Buchstaben kommen über RS232 nur unsinnige
Zeichen zurück
der CODE:
1 | #include <avr/io.h>
|
2 | #define USART_BAUDRATE 9600
|
3 | int8_t geht=0;
|
4 | void initUsart(void) {
|
5 | UCSRB |= (1 << RXEN) | (1 << TXEN); //Sender und Empfänger ein
|
6 | UCSRC |= (1<<URSEL)|(1 << UCSZ1)|(1 << UCSZ0); //async
|
7 | UBRRL = (F_CPU / (USART_BAUDRATE * 16L) - 1); //baudrate und takt
|
8 |
|
9 | }
|
10 | int usartGetchar(void) {
|
11 | if (UCSRA & (1 << RXC)) //wenn zeichen da
|
12 | return UDR;
|
13 | //gib zeichen zurück
|
14 | else return -1; //sonst gib -1 zurück
|
15 | }
|
16 | void usartPutchar(char c) {
|
17 | while ((UCSRA & (1 << UDRE))==0); //Warte solange solange besetzt
|
18 | UDR = (char)c;
|
19 | }
|
20 | int main(void) {
|
21 | initUsart();
|
22 | while (1) {
|
23 | geht=usartGetchar();
|
24 | //Zeichen lesen
|
25 | if (geht != -1) //Wenn ein Zeichen da
|
26 | usartPutchar(geht); //dann Zeichen ausgeben
|
27 | }
|
28 | return 0;
|
29 | }
|
kann mir jemand ein Tipp geben wo mein Fehler liegt?
Danke und bis dann