Mal wieder Probleme mit UART

#3405480
Lesenswert?

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))

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren