Hi, ich habe ein kleines Problem mit der Datenübertargung zu einem eDIP
TFT Display.
Um von dem Display eine Antwort zu erhalten, wird eine Codefolge
erwartet. Eingeleitet wird diese mit einem <DC2> (0x12).
Wenn ich nun aber dieses Byte sende, bleibt der µC in der
"while-Schliefe" von der Funktion Byte senden hängen:
1 | ///////////////////////////////////
|
2 | // UART Initialisierung
|
3 | ///////////////////////////////////
|
4 |
|
5 | void uart_init (void)
|
6 | {
|
7 | UBRR0H = UBRR_VAL >> 8;
|
8 | UBRR0L = UBRR_VAL & 0xFF;
|
9 |
|
10 | UCSR0B = (1<<TXEN0) | (1<<RXEN0);
|
11 | UCSR0C = (1<<UCSZ01)|(1<<UCSZ00); // Frame Format: Asynchron 8N1
|
12 |
|
13 | do
|
14 | {
|
15 | UDR0; // Sendepuffer löschen
|
16 | }
|
17 |
|
18 | while (UCSR0A & (1 << RXC0)); // Warten bis Sendepuffer gelöscht
|
19 | }
|
20 |
|
21 |
|
22 |
|
23 | ///////////////////////////////////
|
24 | // UART Byte Senden
|
25 | ///////////////////////////////////
|
26 |
|
27 | void uart_send_byte (const uint8_t c)
|
28 | {
|
29 | while (!(UCSR0A & (1 << UDRE0)));
|
30 | UDR0 = c;
|
31 | }
|
Und hier der eigentliche Aufruf:
1 | ...
|
2 | //<- DC2 ->//
|
3 | uart_send_byte(0x12); // Senden von DC2
|
4 | bcc = 0x12;
|
5 | ...
|
Ich muss dazu sagen, dass jedes andere Zeichen (oder Byte) funktioniert,
nur eben nicht das <DC2>.
Ist dieses intern reserviert?
Ich hoffe es weiß jemand Rat.
Schon mal Danke
Grüße
electric_ghost