[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::amiga_v1

Title:AMIGA NOTES
Notice:Join us in the *NEW* conference - HYDRA::AMIGA_V2
Moderator:HYDRA::MOORE
Created:Sat Apr 26 1986
Last Modified:Wed Feb 05 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:5378
Total number of notes:38326

4101.0. "Commodore Serial Ports & Stop Bits." by VMSNET::WOODBURY () Tue Sep 11 1990 19:11

	I was just going over the documentation I got with the 500 and found
    something a little strange in the serial port set up documentation --

    o	Stop Bits.  Stop bits are bits added to the end of a character that mark
	where it ends.  You can select either 1 or 2. This is the number of bits
	added to each character sent through the serial connector AND THE
	NUMBER EXPECTED AT THE END OF EACH CHARACTER THAT IS READ.

	The first part is fine but the last part is in direct violation of
    the standards that govern asynchronous serial input if they do anything
    when their expectations are not met.  Has anybody know what actually happens
    when the serial port receives only one stop bit when it is 'expecting' two?

	(My understanding of the standard was that the receiver was to sample
    at the mid-point of the stop bit and then immediatly start looking for a
    start of frame transition.  If the stop bit value was wrong, you got a
    framing error or break condition.  The fact that the search for the start
    transition started immediatly meant that the transmitter could be up to
    5% faster than the receiver in a standard 8 bit frame and still be able
    to communicate.  With two stop bits sent, the speed mismatch could be up
    to 10% with some probability of communicating.  If the search does not
    start until the full stop bit has been received then the transmitter must
    be slower than the receiver for long streams of frames to be received
    correctly.)

	(Commodore has done this kind of thing before.  The software serial
    ART routines on the C128 had the same problem.)
T.RTitleUserPersonal
Name
DateLines
4101.1VMSNET::WOODBURYWed Sep 12 1990 15:565
	Checking the hardware documentation I found that the Amiga serial port
can be set up to receive either 9 or 10 bits including the stop bit (8 or 9
bits excluding the stop bit).  That means they could be doing it right or 
wrong depending on what the driver does.  Does anybody have any information
on the inner workings of the serial port driver?
4101.2FILTON::FENTON_RPotassium Ethoxide Rules C2H5OOKWed Oct 31 1990 07:408
    Now the trouble with this sort of thing is that it attracts people like
    me who don't really know what they're talking about. For example, I
    reckon that what would happen if a receiving machine got a series of
    characters having two stop bits when it was expecting only one would be
    that it would interpret the second stop bit as the first bit of the next
    character, and thus get everything totally wrong. But, as I said, I
    don't really know.
    
4101.3Sending two and receiving one stop bit is not a problem... VMSNET::WOODBURYWed Oct 31 1990 20:5213
	The stop bit is the same line state as an 'idle' line.  As a result
    a machine receiving two stop bits but expecting only one will see a one
    bit-time pause between characters.  This works out just fine.  The problem
    would arise if the receiver DEMANDS two stop bits and does not get them.
    In that case it would get the start bit of the next character and report
    a framing error.  The best chance of success is for the receiver to only
    require a little more than half a stop bit.  That allows the sender to be
    a percent or two faster than the receiver and still be able to communicate
    successfully.  This is what the UART chips (and the transceiver boards from
    the PDP 11 using low level ICs) that I had logic diagrams on did.  Since
    the AMIGA puts some of this function in software rather than hardware, they
    could have done this differently from the 'best' way.  If anybody's been 
    into their code, I'd like to know how they did it.