Hallo Community, um eine serielle Schnittstelle für mein Projekt zu realisieren, versuche ich mithilfe von UART vom µC aus einen String an einen "USB to TTL" Treiber zu schicken (CP2102), welchen dieser dann an den PC schicken soll. Der "USB to TTL" Treiber funktioniert(Habe RX direkt an TX angeschlossen und über gtkterm getestet.) Nur wenn ich das nachfolgende Programm auf den Tiny lade und mit dem Treiber verbinde, erhalte ich unter gtkterm immer nur: "Ha!" statt "Hallo Welt!" Ich habe schon die Möglichkeit mit ein und zwei Stopbits ausprobiert, da dies ja bei langsameren Komponenten teilweise empfohlen wird. Hat sich aber nichts geändert. Ihr wisst sicherlich mehr! Vielen Dank für eure Hilfe!
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | |
4 | |
5 | #define F_CPU 1000000UL
|
6 | |
7 | |
8 | void init(); |
9 | void UART_transmit(uint8_t); |
10 | void UART_transmit_String(char *); |
11 | |
12 | int main() { |
13 | init(); |
14 | |
15 | while(1) { |
16 | UART_transmit_String("Hallo Welt!\0"); |
17 | _delay_ms(1000); |
18 | |
19 | }
|
20 | |
21 | }
|
22 | |
23 | void init() { |
24 | UBRRH = 0x00; //Baudrate Initialisierung |
25 | UBRRL = 0x33; //0x33 fuer 1200, 0x0C fuer 4800 |
26 | |
27 | |
28 | UCSRB = (1 << RXEN) | (1 << TXEN); //Enable von Senden und Empfangen |
29 | |
30 | |
31 | UCSRC = (0 << UCSZ2) | (1 << UCSZ1) | (1 << UCSZ0) | (1 << USBS); //8 Daten Bits und 2 Stop Bits |
32 | }
|
33 | |
34 | void UART_transmit(uint8_t data) { |
35 | while(UDRE == 0){} |
36 | UDR = data; |
37 | _delay_ms(1); |
38 | }
|
39 | |
40 | void UART_transmit_String(char * text) { |
41 | while( *text != '\0') { |
42 | UART_transmit(*text++); |
43 | }
|
44 | }
|