From owner-freebsd-hackers  Wed Oct 11 18:29:58 1995
Return-Path: owner-hackers
Received: (from root@localhost)
          by freefall.freebsd.org (8.6.12/8.6.6) id SAA26922
          for hackers-outgoing; Wed, 11 Oct 1995 18:29:58 -0700
Received: from genesis.atrad.adelaide.edu.au (genesis.atrad.adelaide.edu.au [129.127.96.120])
          by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id SAA26910
          for <hackers@freebsd.org>; Wed, 11 Oct 1995 18:29:50 -0700
Received: from msmith@localhost by genesis.atrad.adelaide.edu.au (8.6.9/8.6.9) id LAA15650; Thu, 12 Oct 1995 11:26:14 +0930
From: Michael Smith <msmith@atrad.adelaide.edu.au>
Message-Id: <199510120156.LAA15650@genesis.atrad.adelaide.edu.au>
Subject: Re: non-sio UART driver
To: julian@ref.tfs.com (Julian Elischer)
Date: Thu, 12 Oct 1995 11:26:14 +0930 (CST)
Cc: msmith@atrad.adelaide.edu.au, bde@zeta.org.au, hackers@freebsd.org
In-Reply-To: <199510112016.NAA03051@ref.tfs.com> from "Julian Elischer" at Oct 11, 95 01:16:08 pm
Content-Type: text
Content-Length: 2278      
Sender: owner-hackers@freebsd.org
Precedence: bulk

Julian Elischer stands accused of saying:
> > Ok ok, so "multidrop bus" is a bit of a tautology.  I guess I should have 
> > said 2-wire RS-485.
...
> > It's not terribly "normal", in that writes to the bus are meant to be 
> > sort-of atomic transactions.  (Being 2-wire, you go from listen to 
> > drive by raising DTR, write your packet, and then as soon as the last 
> > character's finished, you drop DTR again to listen for the response.)
> 
> The serial bus I've used had the rx always receiving, and the 
> tx 'Wire-Or'd onto it..
> it had a differential 'Open Collector'
> (I guess open emmitter in the -ve line :)
> A simpified version would be...

The bus you've specified is almost useless, as the slew to the driven side
will be much faster than the slew away, so the difference signal will be
all over the place.  Add to this the variation in slew based on the 
number of stations on the bus, and you're in for a nightmare 8)

2-wire RS485 drivers are a dollar or so each in small quantities, and 
look something like this :

          |\
          | \----+-----------+------------
   TX ----+  >   |           Z 120 ohms at either end of the bus
          | /------+---------+------------
          |/     | |
           |     | |
           |     | |
  CTL -----+     | |
           |     | |
           o/|   | |
           / |---+ |
   RX ----<  |     |
           \ |-----+
            \|

The CTL line tristates the TX outputs, and disables the RX inputs according
to whether a station is receiving or transmitting (therefore simplex)

> If I were doing this today, I would use SLIP as an example of how to hook
> into the tty drivers..

Unfortunately, the SLIP interface doesn't hand down exactly one packet at
a time, and you can't afford to go on and off the bus inside a packet.
(You generate glitches on the line as it floats and then gets pulled back
to the space state.)

-- 
]] Mike Smith, Software Engineer        msmith@atrad.adelaide.edu.au    [[
]] Genesis Software                     genesis@atrad.adelaide.edu.au   [[
]] High-speed data acquisition and                                      [[
]] realtime instrument control          (ph/fax) +61-8-267-3039         [[
]] My car has "demand start" -Terry Lambert  UNIX: live FreeBSD or die! [[