Es gab schon mehrfach Reports zu Problemen mit der RS232. Da ich aktuell wieder etwas mehr damit mache, ist mir ein Problem damit aufgefallen: Nach unregelmäßig vielen Ausgaben auf der RS232 Schnittstelle fällt diese spontan aus.
Also mal nachgemessen und siehe da, bei mir scheint es nach dem HW Handshake zu passieren. Der Handshake funktioniert meist gut, manchmal etwas weniger gut, d.h. er sendet noch ein oder mehrere Bytes und macht dann eine Pause. Manchmal dauert diese Pause aber zu lang, d.h. unendlich lang, die RS232 des eibPCs läuft also nicht mehr an.
Ich betreibe ein LCD an der RS232 und nur um die Übertragung völlig sicher zu machen, habe ich den HW-Handshake im eibPC aktiviert. Prompt nach der Aktivierung treten Probleme auf
.
Anbei ein paar Traces an den TTL Pins des RS232 Treibers des LCDs, die Pegel sind also invertiert.
1: Normal: CTS wird vom LCD auf High gesetzt (RSR232 Low) und somit hält der eibPC an (es kommt leider noch ein Byte).
2: Es kommen leider noch 2 Bytes und dann macht der eibPC eine Pause.
3: Lange Pause und dann doch noch ein Byte.
4: Und plötzlich kommt nichts mehr ...
5: 2 x der Effekt: Kabel abziehen und wieder anstecken und es geht wieder
Im letzten Bild sieht man, dass RTS auf High geht (RS232 auf Low). Da habe ich das Kabel abgesteckt -> folglich ist der Pegel des CTS auch abgefallen (nicht sichtbar am Pin des Treibers).
Auf diesen Wechsel hin hat der eibPC wohl wieder angefangen zu senden (und zwar alles, was noch im Puffer war und der scheint sehr groß zu sein!!!). Dann kam es wieder zum Problem (siehe Bild 4), welches ich dann wieder durch abziehen und anstecken des Kabels beheben konnte.
Aus meiner Sicht hat der eibPC ein Problem mit dem HW-Handshake. Evtl. ist das auch das Problem, weswegen das ResetRS232() Kommando eingebaut wurde?!
UPDATE:
Bild 6: Bei 2 Stop-Bits kommen die Pause sogar erst nach 3 Bytes
Bild 7: CTS wird ignoriert?
Nachdem ich testweise auf 2 Stop-Bits gestellt habe (sichtbar an der Lücke zwischen den blauen Balken), kommen sogar 3 Bytes, obwohl CTS dies verhindern soll. Der Fehler ist heute Nacht dafür aber nicht mehr aufgetreten ... mal sehen.
Bild 7 zeigt einen extremen Fall beim Systemstart: Hier scheint CTS nicht beachtet zu werden.
Also mal nachgemessen und siehe da, bei mir scheint es nach dem HW Handshake zu passieren. Der Handshake funktioniert meist gut, manchmal etwas weniger gut, d.h. er sendet noch ein oder mehrere Bytes und macht dann eine Pause. Manchmal dauert diese Pause aber zu lang, d.h. unendlich lang, die RS232 des eibPCs läuft also nicht mehr an.
Ich betreibe ein LCD an der RS232 und nur um die Übertragung völlig sicher zu machen, habe ich den HW-Handshake im eibPC aktiviert. Prompt nach der Aktivierung treten Probleme auf

Anbei ein paar Traces an den TTL Pins des RS232 Treibers des LCDs, die Pegel sind also invertiert.
1: Normal: CTS wird vom LCD auf High gesetzt (RSR232 Low) und somit hält der eibPC an (es kommt leider noch ein Byte).
2: Es kommen leider noch 2 Bytes und dann macht der eibPC eine Pause.
3: Lange Pause und dann doch noch ein Byte.
4: Und plötzlich kommt nichts mehr ...
5: 2 x der Effekt: Kabel abziehen und wieder anstecken und es geht wieder
Im letzten Bild sieht man, dass RTS auf High geht (RS232 auf Low). Da habe ich das Kabel abgesteckt -> folglich ist der Pegel des CTS auch abgefallen (nicht sichtbar am Pin des Treibers).
Auf diesen Wechsel hin hat der eibPC wohl wieder angefangen zu senden (und zwar alles, was noch im Puffer war und der scheint sehr groß zu sein!!!). Dann kam es wieder zum Problem (siehe Bild 4), welches ich dann wieder durch abziehen und anstecken des Kabels beheben konnte.
Aus meiner Sicht hat der eibPC ein Problem mit dem HW-Handshake. Evtl. ist das auch das Problem, weswegen das ResetRS232() Kommando eingebaut wurde?!
UPDATE:
Bild 6: Bei 2 Stop-Bits kommen die Pause sogar erst nach 3 Bytes
Bild 7: CTS wird ignoriert?
Nachdem ich testweise auf 2 Stop-Bits gestellt habe (sichtbar an der Lücke zwischen den blauen Balken), kommen sogar 3 Bytes, obwohl CTS dies verhindern soll. Der Fehler ist heute Nacht dafür aber nicht mehr aufgetreten ... mal sehen.
Bild 7 zeigt einen extremen Fall beim Systemstart: Hier scheint CTS nicht beachtet zu werden.
Kommentar