Forum: Mikrocontroller und Digitale Elektronik Sehr komischer Fehler (avr-gcc)


von Mario (Gast)


Angehängte Dateien:

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.

von (prx) A. K. (prx)


Lesenswert?

Den Software-Handshake (XON/XOFF) im Terminal-Programm abschalten.

von Mario (Gast)


Angehängte Dateien:

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?

von (prx) A. K. (prx)


Lesenswert?

Schnittstelle.
man stty

> Weisst du, mit welcher API man den Handshake
> unter Linux/GCC abstellt?

man tty_ioctl

von Mario (Gast)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.