Guten Abend,
ich habe eben gerade die UART Library von P Fleury getestet, welche bei
mir nicht so ganz richtig funktioniert. UART habe ich schon davor ohne
Library erfolgreich geschaft. Ich benutze einen Atmega8 mit 11,05975
oder so MHZ.
Baudrate ist 9600.
Ich bekomme mit HpyerTerminal nicht sofort einen String, sondern erst
nach 30 sek und der angekommene String wird in "merkwürdigen" Zeichen
dargestellt. Ich benutze bei diesem Beispiel Interrupts. Muss ich davor
mit diesen Interrupts noch was speziell einstellen ?
Woran könnte das liegen ?
Das ist mein Code:
1 | /* *****************************************************
|
2 |
|
3 | Beispiel für die UART Library von Peter F.
|
4 |
|
5 |
|
6 | ***************************************************** */
|
7 |
|
8 | #include <avr/io.h>
|
9 | #include <stdlib.h>
|
10 | #include <avr/interrupt.h>
|
11 | #include <avr/signal.h>
|
12 | #include <avr/pgmspace.h>
|
13 |
|
14 |
|
15 | #include "uart.h"
|
16 |
|
17 |
|
18 | #define UART_BAUD_RATE 9600
|
19 |
|
20 |
|
21 | int main(void)
|
22 | {
|
23 | unsigned int c;
|
24 |
|
25 |
|
26 |
|
27 | uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
|
28 |
|
29 | //enable INTERRUPT
|
30 | sei();
|
31 |
|
32 |
|
33 | uart_puts("String stored in SRAM\n");
|
34 |
|
35 | for(;;)
|
36 | {
|
37 | c = uart_getc();
|
38 | uart_puts_P("Hallo x86\n");
|
39 | if ( c & UART_NO_DATA )
|
40 | {
|
41 | // Keine Daten verfügbar
|
42 | }
|
43 | else
|
44 | {
|
45 | // Daten verfügbar...
|
46 | if ( c & UART_FRAME_ERROR )
|
47 | {
|
48 | uart_puts_P("UART Frame Error: ");
|
49 | }
|
50 | if ( c & UART_OVERRUN_ERROR )
|
51 | {
|
52 | uart_puts_P("UART Overrun Error: ");
|
53 | }
|
54 | //
|
55 | uart_putc( (unsigned char)c );
|
56 | }
|
57 | }
|
58 | }
|
Danke !
grüße,
peter