PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bus auf rs232-basis



Roboman93
01.11.2009, 18:50
ich möchte einen bus "entwickeln", um meine boards zu verbinden. dafür wollte ich das rs232 protokoll nehmen. dafür müsste ja eine leitung reichen. es senden immer nur einer am bus, die anderen empfangen. das problem ist, dass ja ein ic beide pins, also txd und rxd, an der gleichen leitung hat. um dies herauszufiltern, habe ch an ein nand-gatter gedacht. an ein input kommt der bus, an den anderen der ausgang des controller. wenn er sendet, ist an beiden eingangen immer derselbe zustand, der ausgang verändert sich nicht. wenn aber daten ankommen, verändert sich nur ein pin und die daten kommen am ausgang an.

habe ich da irgendwelche denkfehler oder kann das so klappen?

mfg roboman

KingTobi
01.11.2009, 18:55
txd und rxd sind an der selben leistung?
Warum unbedingt RS232? Wie groß ist denn die Entfernung?

Roboman93
01.11.2009, 19:00
die entfernung ist nur gering, deutlich unter 1m. rs232, weil das für mich am einfachsten ist. an der selben leitung hängen alle, damit alle empfangen können, wenn einer sendet.

mfg roboman

KingTobi
01.11.2009, 19:05
Ach das meinst du mit den selben Pins...
Wenn du an die Slaves etwas senden willst, sendest du zuerst die Adresse des Slaves der sich angesprochen fühlen soll und dann den Rest der Daten.

wawa
01.11.2009, 19:08
es klappt so nicht! Du brauchst einen Baustein wo du den Sender zuschalten kannst. Heisst meistens TXEN, TX enable, sonst blockierst du den Bus. Schau mal unter RS485 nach.

gruss wawa

KingTobi
01.11.2009, 19:10
Meiner Meinung nach würde sich ein I²C viel besser eignen.
Was genau möchtest du denn Verbinden?

Roboman93
02.11.2009, 15:58
danke für die antworten. ich hab grad nochn bissl gesucht und dabei das hier gefunden:
UCSRB = (1<<RXEN)
damit kann ich den empfang am avr ausschalten. kann ja auch gehen.
ich hab allerdings nicht verstanden, was wawa mit blockieren meint.

mfg roboman

TheDarkRose
02.11.2009, 16:45
Warum muss es unbedingt RS232 sein? RS232 ist nicht für solch eine Topologie ausgelegt. Verwend lieber RS485, dies kannst du auch einfach die USART verwenden. oder du nimmst I2C her

Roboman93
02.11.2009, 17:34
also i2c scheidet aus, da ich mich nicht auf einen master festlegen soll, da das projekt keinen wirklichen haubtprocessor hat. rs485 werde ich mir mal angucken.

mfg roboman

Hessibaby
03.11.2009, 14:10
Was mit RS232 geht ist Daisy-Chaining, also TX vom 1. an RX vom 2. TX vom 2. an RX vom 3. usw. usw. Du muss dann nur die Daten filtern, sprich das angesprochene Modul muss wissen das es gemeint ist und die Daten andernfalls weiterschieben. Wichtig ist halt, dass der Sender die Daten wieder vom "Bus" nimmt wenn kein anderer diese akzeptiert hat.
So ähnlich funktioniert das alte BNC-Netzwerk.

Gruß Hartmut

mwoidt
03.11.2009, 14:58
Daisy chaining ist meiner meinung keine besonders geschickte variante weil sehr fehleranfällig sonst kannst du z.b. SPI nutzen...
Nur als frage wie kommst du darauf, dass man sich bei i²C auf einen Master festlegt? Es gibt da auch multimaster fähige konzepte.
Aber naja.
RS485 und RS232 sind ja logisch kompatibel (oder fast bin mir nicht mehr ganz sicher). Elektrisch musst du dich bei RS485 nicht mehr um die gegensende sicherheit kümmern (heißt es kann nix kaputt gehen wenn zwei sender gleichzeitig senden). Dieses Feature kann eigentlich nur sinnvoll mit open collector treibern realisiert werden, weswegen deine oben genannte Idee nicht ganz funktioniert, da der UART zarstört werden würde wenn zwei gleichzeitig senden