Hi, Bob. >When I have done 2x sampling I could do 9600 baud with slower xtal but it is definitely less robust. The method was to set up a >timer interrupt 19200 per second. Look for a start bit at the beginning of the interrupt routine, process incoming bits every 2 >interrupts after that but process the incoming bits at the end of the timer interrupt, after the send routine and buffer >routines. So there is less consistency in where the bit is captured but there is enough of a delay that if the start bit is >detected at the very beginning you still get some margin. I do not have the drawnings handy but they are pretty easy to make. They make it much easier to understand why 2x sampling is not robust. Imagine that you detect the start-bit right at the beginning of the rising edge, you will sample at the edge every time. If the clocks are marginally different you will get noise many, many times. It would work with almost perfect clocks... By using 3x sampling you do not have this problem and the "clock drift margin" is almost as good as a hardware uart. 4x sampling acomplishes the same but takes more cpu power without significant benefits IMHO. In a noisy environment you will have to use a "protocol" to ensure data quality anyway so I do not see a big difference between hardware uarts and software uarts. It all depends on what resources are more readily available.. The software is quite simple to implement with a state machine inside the timer interrupt with 3x or 4x sampling. Best Regards, Alexandre Guimaraes -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist