Sehr komischer Fehler (avr-gcc)

Gast #3143749
Lesenswert?

Hallo,

normalerweise kann ich meine Fragen selbst beantworten,
doch dieses mal brauche ich eure Hilfe.
Ich versende Bytes per UART. Alles außer die Zeichen
0x11 und 0x13 werden übertragen. Ich kann das Problem
mit einem minimalistischen Beispiel repoduzieren.
Wie in der Überschrift gesagt benutze ich avr-gcc.

Einen Hardwarefehler habe ich ausgeschlossen, indem
ich folgende Komponenten ausgetauscht habe,
ohne den Fehler zu beseitigen:
- den Controller (Atmega32, Atmega16, Atmega8 probiert)
- den Quartzoszillator (2x 14.7456 MHz)
- die UART-Brücke (2x FT232R, unterschiedl. PCBs)

Wenn ich die Ausgabe aufzeichne, erscheint folgendes im Hex-Editor:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 12 14 15 16 17 18 ...
Alle folgenden Bytes bis FF werden empfangen.

main.c und Makefile sind angehängt.
Ich freue mich über jede Hilfe.
Angehängte Dateien:
Gast #3143776
Lesenswert?

Danke, das ist ein wertvoller Hinweis.
Derartiges hatte ich nicht bedacht, weil
ich ein Terminal-Programm und auch ein
anderes Tool benutzt habe. Als Vorlage
für das Tool habe ich bootloader-launch
von Foodloader benutzt.
Dort wird dieser Handshake nicht abgeschaltet.
Ist es eine Eigenschaft der Schnittstelle
(/dev/ttyUSB0) oder ist es abhängig vom Programm?

Weisst du, mit welcher API man den Handshake
unter Linux/GCC abstellt?
Angehängte Dateien:
Gast #3143790
Lesenswert?

Danke für die Hilfe, A.K.
Scheinbar ist der USART mehr als eine einfach Pipe ;)
Folgendermaßen habe ich es jetzt am Laufen:

  t.c_iflag &= ~(IXON | IXOFF | IXANY);
  err = tcsetattr (fd, TCSAFLUSH, &t);


Vielen Dank!

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