Drei Motoren über Rs232 ansteuern

Gast #1276862
Hallo

ich habe vor über den PC bzw RS232 drei Controller zu steuern.
D.h. ich würde es so programmieren dass je nach 1. byte der 
entsprechende controller reagieren soll, beispiel:

Daten über rs232:

| uC1 | Daten | CS |
| uC2 | Daten | CS |
| uC3 | Daten | CS |

meine frage ist, wie man sowas hardwaremässig realisieren kann. das ist 
ja eine art bus. ich kann ja die RS232 ja nicht einfach schleifen ?
über tipps wäre ich sehr erfreut.

anhang dabei

Grss
Angehängte Dateien:
@  Boogie (Gast)

>meine frage ist, wie man sowas hardwaremässig realisieren kann.

Sinnvollerweise mit RS485 und Halbduplextranceivern, z.B. MAX485.
Dann noch ein Mini-Datenpaket zusammenstricken, fertig.
Ist schon millionenfach hier gemacht worden, einfach mal suchen.

MfG
Falk
Gast
Hi

AVRs können Master-Slave: Im 9-Bit-Modus wird eine Adresse verschickt. 
Der adressierte Slave (und der Master) schalten in den 8-Bit-Mode und 
kommunizieren ganz normal. Danach schaltet der Slave wieder in den 
9-Bit-Mode und wartet auf den nächsten Befehl. Geht zwischen AVRs 
wunderbar. Nachteil: der PC kann das nicht. Abhilfe: Zwischen PC und 
Slaves ein weiterer AVR.

MfG Spess
Gast
Hi!

Hier noch ein Ansatz:
Die RS232 kann man schon zusammenschalten, mit paar zu beachtenden 
Dingen.

RXD kommt an alle 3 µCs. Spendiert man noch 2 Pins pro µC fur eine 
Hardwareadressierung kann man das identische Programm in alle 3 µCs 
flashen. Alternativ geht auch eine Adresse im EEPROM.
Jetzt braucht man noch ein kleines Protokoll:
Alle 3 µCs empfangen die Daten, welches ein Adressbyte enthält (bzw. an 
einer definierten Stelle 2 Bits) und vergleichen dies mit ihrer 
HW-Adresse über die Pins bzw. EEP. Somit wissen die µCs, ob sie gemeint 
sind.

Für eine Kommunikation in die eine Richtung ist man jetzt fertig. Soll 
es auch in die andere Richtung gehen, kein Problem:

TXD bekommt auf 5V-Seite am Transceiver einen Pullup und wird dann mit 3 
Dioden entkoppelt. Heißt, der Ruhepegel von 1 kann von jedem µC auf 0 
gezogen werden, ohne dass es zu Problemen an den anderen µC-TXD-Pins 
kommt, somit eine Art Open Kollektor-Schaltung.
SW-seitig muss man jetzt noch beachten, dass nicht mehrere µC 
gleichzeitig senden dürfen. Das heißt, PC ist der Chef und schickt eine 
Anfrage mit HW-Adresse. Jetzt darf nur der Gefragte antworten.

Sollen die µCs "ungefragt" an den PC senden können, muss man eine 
Busarbitrierung durchführen. Bevor gesendet wird, lauscht ein µC eine 
Weile auf der TXD-Leitung ob da jemand anderes sendet bzw. auf Low zieht 
(Pin auf I/O-Mode Eingang). Ist das nicht der Fall, kann er in den 
UART-Mode schalten und senden. Hier ist noch ein gewisses Restrisiko, 
das dies gleichzeitig passiert und dann doch 2 gleichzeitig senden.

Gruß
Roman

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.