RS485 PC Schnittstelle mit Adressierungsbit

Gast #2461751
Lesenswert?
• ▲
▼
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
Persönliche Seite #2461880
Lesenswert?
• ▲
▼
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.
#2461918
Lesenswert?
• ▲
▼
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.
#2461980
Lesenswert?
• ▲
▼
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.
Gast #2469924
Lesenswert?
• ▲
▼
> 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?
Gast #2469934
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.