Unterschiedliche Handhabung der TBSY Flagge (im MC-Modus) zwischen PCD3 / PCD2.M5 und ältere Systeme
FAQ #100655
Das Diagnose-Flag ist TBSY von der "Charakter-Modus" (verwendet für das Senden von Zeichen über eine serielle Leitung) nicht behandelt die gleiche Weise auf eine im Vergleich zur "alten" Systeme wie z.B. PCD2 PCD3.M170.
Symptom
Wenn der entsprechende Port im MC-Modus zugewiesen ist, zeigt das Diagnose-Flag TBSY, dass die serielle Schnittstelle senden Zeichen beschäftigt. Dies ist der Fall bei z.B. einer PCD2.M170.
Dieses Verhalten ist nicht gleich auf ein PCD2.M5xxx oder ein PCD3.Mxxxx, vor allem nicht wenn mit einer PCD3.F121 oder eine F2xx(x)-Module. Auf eine PCD3/PCD2.M5 ist das TBSY-Flag keiner mehr hoch während der ganzen Zeit, die der Anschluss besetzt ist. Stattdessen ist es nur hoch eine kurze Zeit ganz am Anfang des Vorgangs senden.
Grund
Der Grund für diesen Unterschied ist eine neue Art und Weise der UART des Ports zugreifen. Auf älteren Systemen wurden die Zeichen direkt in die UART geschrieben, wobei die PCD3 ein Puffer dazwischen gelegt ist. Statt darauf hin, dass der "Send-Staat" von der UART auf älteren Systemen mag, stellt der TBSY den Zustand dieses Puffers (die Größe am Ende dieser FAQ-Seite finden) auf der PCD3 oder die PCD2.M5.
Lösung
Dieser Unterschied sollte nicht dazu führen, dass Problem ist den meisten Fällen. In einigen Anwendungen ist jedoch der Zustand der TBSY verwendet, z.B. das RTS-Signal der Linie (mit der Anweisung SOCL) steuern. In diesem Fall die Kommunikation (arbeitet an einer PCD2.M170) funktioniert nicht mehr auf eine PCD3 oder eine PCD2.M5.
In diesem Fall könnte eine der folgenden Problemumgehungen angewendet werden:
- Anstelle von zuweisen den Hafen MC0 könnten es in MC4 zugewiesen werden (MC4 wird gewöhnlich als "MC für RS485" beschrieben). In diesem Modus die UART ist die Verwaltung der RTS autonom (und daher besteht keine Notwendigkeit mehr, die RTS durch das User-Programm festgelegt). Beachten Sie, dass in diesem Fall die SOCL-Befehle sind aus dem Programm entfernt werden!
- Die Dauer, während die RTS wird festgesetzt im Voraus berechnet werden konnte (basierend auf der Anzahl Zeichen gesendet werden) und in einen Timer geladen. Während dieser Zeitgeber hoch ist, kann der RTS mit dem SOCL-Befehl festgelegt werden.
Beachten Sie, dass diese Lösung nicht wirklich eine "nette" und kann nur Arbeit mit sehr niedrigen Baudraten.
Notizen
- Alle Firmware-Versionen der PCD3xxx und PCD2.M5xxx behandeln die TBSY, wie in dieser FAQ beschrieben.
- Die Puffergröße ist abhängig von der Port verwendet:
PCD3 Port 1 und 02:24 Zeichen
PCD3-Port 0 und 3: 2 Zeichen
PCD2.M5 Port 0 und 01:24 Zeichen
PCD2.M5 port 2 und 3: 2 Zeichen
Categories
PCD2 / _Firmware Classic
PCD2 / Fxxx
PCD3 / _Firmware Classic
PG5 2.0 / Mode-C
PCD3 / Fxxx
Last update: 28.05.2015 08:51
First release: 04.01.2007 13:44
Views: 8690