Thanks Ian, that's exactly what I was thinking.. How many microcontrollers can I hook up this way without a line driver?
It depends on line length, capacitance, and the baud rate and pullup resistors you use, as the CMOS inputs themselves are a very small load compared to the pullup resistors.
As a rough rule of thumb: If risetime>bit_period/3 you are in trouble. Risetime is approximately 2*R*C, where R is the parallel combination of all the pullups. That assumes your UART samples between 1/2 and 2/3 of each bit period. If you know it samples closer to the beginning of the bit, you need a faster rise time so lower R and/or C to compensate.
Lets look at the constraint on how low you can go with the pullup resistors. That depends on your Vdd and how much current your MCU can sink on its TX pin without excessive voltage drop. If, for example, it can sink 10mA with 1V drop, and you have a 820R pullup at each end of the bus, and you are using a BAT42 diode which has a max Vf @10mA of 0.4V, you are already marginal with 5V Vdd if the logic 0 threshold is 1/3 of Vdd.
If you need more drive, there are two easy options:
* Replace the diode with a non-inverting open drain line driver (or use a tristate buffer with /EN and Din connected together) which gives you more current capability and also avoids the diode Vf drop.
*use LIN Bus transceivers with 12V signalling. As LIN is designed for automotive environments it is extremely robust and the drive levels are such that, ignoring the actual LIN protocol, you could have hundreds of nodes and 19.2 kbit/s @ 40 meter bus length.
Edit: Dropped the pullup values a bit. I hadn't allowed for the voltage drop in the lower pin driver. It now runs at 9mA worst case.