Hallo zusammen,
ich habe gerade ein bisschen Probleme mit meinem UART.
Leider komme ich mit dem Fehlerbild überhaupt nicht zurecht und weiß
nicht, wo ich suchen soll.
Ich benutze einen MAX3222 in meinem Projekt zur Debug-Ausgabe. D.h. ich
möchte nur senden, nicht empfangen.
Baudrate ist 115200, ich habe aber auch schon geringere Baudraten
versucht.
An PortC hängt ein ULN2803 mit dem ich ein paar Relais treibe.
Die Schaltzyklen möchte ich zählen und im EEPROM abspeichern
Am Anfang mache im code folgendes:
1 | sei();
|
2 | uart_init();
|
3 | uart_put_s_P("\n\r\n\r\n\r\n\r-------------------------------------------\n\r");
|
4 |
|
5 | //-----------------------------------------------------------------------------
|
6 | // Variablen aus dem EEPROM befüllen
|
7 | //-----------------------------------------------------------------------------
|
8 | uart_put_s_P("EEPROM:\n\r");
|
9 |
|
10 | p1 = load_from_EEPROM_x16( 0x0000, 0x0300);
|
11 | p2 = load_from_EEPROM_x16( 0x0002, 0x000A);
|
12 |
|
13 | p3 = load_from_EEPROM_x8( 0x0010, 0xA0);
|
14 |
|
15 | //Schützzähler laden
|
16 | schuetzzaehler_load();
|
17 |
|
18 | .
|
19 | .
|
20 | .
|
21 |
|
22 | uart_put_s_P("Initialisierung erfolgreich!\n\r");
|
An meinem PC empfange ich:
1 | ¨H¨H¨H¨¨©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©©
|
2 | ©©I¨¨AI=5é
|
3 | 0x0000: 0xFFFF (Default -> 0x0300)
|
4 | 0x0002: 0xFFFF (Default -> 0x000A)
|
5 | 0x0010: 0xFF (Default -> 0xA0)
|
6 | 0x0020: 0xFF (Default -> 0x01)
|
7 | Schutzzaehler
|
8 |
|
9 | S1: 0x00000000
|
10 | S2: 0x00000000
|
11 | S3: 0x00000000
|
12 | S1: 0x00000000
|
13 | S5: 0x00000000
|
14 | S6: 0x00000000
|
Habt ihr eine Idee warum am Anfang die Zeichen falsch sind, später dann
aber alle korrekt Empfangen werden?
1 | void uart_put_s_p (const char *text);
|
2 |
|
3 | //Damit Strings aus dem Flash gelesen werden
|
4 | #define uart_put_s_P(__s) uart_put_s_p(PSTR(__s))
|