Hallo µC und Programmierfreunde, Ich entwickle auf einem WRAP-Board mit einem AMD Geode SC1100 unter Linux ein C-Programm. Der dort vorhandene UART ist ein 16550A. Ich lege eine Baudrate von 9600 im C-Programm über eine termios Struktur fest. Ich möchte gerne über die RS232-Schnittstelle ein 0x00 Byte senden und dabei die Bitzeiten verändern. Als Ergebnis sollen ca. 13 Bits über eine folgende Ein-Draht-Leitung gehen (LIN-Break). Beschreibungen zufolge soll dies möglich sein, indem man die Baudrate heruntersetzt, das 0x00 Byte sendet und anschließend wieder heraufsetzt. Genauso habe ich es unter Linux im C-Programm mit den Funktionen cfsetospeed(&struktur, B4800) bzw. cfsetspeed(&struktur, B4800) gemacht, anschließend mit tcsetattr() gesetzt, das Byte gesendet und wieder auf 9600 gesetzt. Auf dem Oszi konnte ich nur das Starbit + 8 Bits Low Pegel + Stopbit messen... Die erste Frage wäre ob jemand das schon mal mit Erfolgt gemacht hat und wenn ja wie? Ist es prizipiell überhaupt mit diesen Funktionen möglich (damit es µC unabhängig auf anderen Boards läuft) oder müssen die Register des UART's über ihre Adressen ausgelesen werden. Was ich mir dabei vorstelle ist, ein bestimmtes Flag aus einem UART Register zu Lesen (Daten wurden verschickt) und erst jetzt die Baudrate wieder hoch setzen??? Auf jeden Fall wäre ich über Hinweise zur Lösung (am besten auch mit C-Code) dankbar. Danke
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.