Hallo, ich möchte einen RS485 Bus aufbauen. Alle Slaves erhalten einen µC, der PC fungiert als Master. Um die Interrupt-Last bei den Slaves zu minimieren können diese im 9 Bit Mode laufen (Ist das 9. Bit gesetzt handelt es sich um eine übertragene Adresse, ist es nicht gesetzt um (8-bit)Daten). So reagieren ALLE Slaves nur dann (durch Interrupt) wenn eine Adresse (9. Bit gesetzt) übertragen wird. Meine Frage: Welche Hardware und ggf. Software benötige ich um vom PC aus serielle Datenpakete mit 9 Datenbits zu versenden (PCI RS232 oder RS485 Steckkarte)?? Sebastian
Die üblichen im PC-Bereich verwendeten seriellen Schnittstellenbausteine unterstützen allesamt nicht den 9-Bit-Modus. Das können nur ausgesuchte UARTs, wie z.B. die PCIe- oder PCI-Varianten von Oxford Semiconductor/PLX. Du brauchst dann aber auch eine Devicetreiberunterstützung, die über den normalen seriellen Betrieb hinausgeht, da die Architektur der seriellen Treiber, wie sie Windows verwendet, nichts vom 9. Bit weiß, und die Win32-API ebenfalls nicht. Einfacher, aber sehr viel ineffizienter ist eine Software-Emulation, die das 9. Bit durch Ausnutzung des Parity-Bits nachahmt. Dazu muss vor dem Senden jedes einzelnen Bytes dessen Parität berechnet und die Parität der Schnittstelle so umgestellt werden, daß das übertragene Paritätsbit den gewünschten Wert erhält. Das ist aufgrund der vielen Devicetreiberaufrufe sehr, sehr langsam. Eine Zwischenlösung wäre es, für die RS485-Ansteuerung einen µC zu verwenden, der mit dem PC 8-bittig kommuniziert und das Protokoll zu den RS485-Clients hin entsprechend umsetzt.
Rufus Τ. Firefly schrieb: > Dazu muss vor dem > Senden jedes einzelnen Bytes dessen Parität berechnet und die Parität > der Schnittstelle so umgestellt werden, Ganz so wild ist es dann doch nicht. Das Parity-Bit lässt sich fest auf 0 oder 1 legen (mark/space), so dass eine zeitraubende Umschaltung des Modus nur zwischen Adresse und Daten erfolgen muss. Beim Empfang kann man Parity=0 einstellen. Adressen kommen dann mit Parity Error rein, Daten normal. Duplex-Mode ist freilich etwas haariger, aber bei RS485 dominiert ja 2-Draht half duplex.
A. K. schrieb: > Duplex-Mode ist freilich etwas haariger, aber bei RS485 dominiert ja > 2-Draht half duplex. Der ist, wenn man die richtige UART verwendet, gar nicht haarig, die Sender-/Empfänger-Umschaltung des RS485-Treiberbausteins können bessere UARTs automatisch durchführen; das geht sogar mit den USB-Seriell-Bridges von FTDI.
Ich meinte eher, dass die Parity-Umschaltung gleichzeitig Sende- und Emfangsrichtung beeinflusst, was bei Duplex-Betrieb die Interpretation vom Parity-Status einlaufender Daten interessant machen kann, wenn man parallel dazu grad den Parity-Modus umschaltet. Will nicht sagen, dass es nicht geht, nur ist das eben ein Stück haariger als die Handhabung vom Parity bei Half-Duplex.
....vielen Dank! Hab's mir fast gedacht. Gruß, Sebastian
> Um die Interrupt-Last bei den Slaves zu minimieren können diese im 9 Bit > Mode laufen (Ist das 9. Bit gesetzt handelt es sich um eine übertragene > Adresse, ist es nicht gesetzt um (8-bit)Daten). So reagieren ALLE Slaves > nur dann (durch Interrupt) wenn eine Adresse (9. Bit gesetzt) übertragen > wird. Diese Funktionweise finde ich auch sehr interessant! Welche uC Uart können den mit diesem speziellen 9 Bit Modus umgehen und wie bringt man den uart zu einem bit9 abhängigen Interrupt?
Hi >Diese Funktionweise finde ich auch sehr interessant! Welche uC Uart >können den mit diesem speziellen 9 Bit Modus umgehen... Eigentlich alle AVRs mit USART. >und wie bringt man den uart zu einem bit9 abhängigen Interrupt? MPCM-Bit in UCSRA setzen und Datenblatt lesen. MfG Spess
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.