Hello All,
I'm using an 8051(Actually Atmel's 89S52 Micro) in a +5v RS422 system. The micro spits out TTL data from it's serial port(tx) to an RS422 driver(SN65179) which eventually connects to a host and is received as data input into the host.
Problem: With host already powered, you plug in my device, then the host receives an 0xFF for no reason. The device should not send anything at this point and it is. At this point I was guessing a glitch on the TX line on power up.
Upon power up of the 8051 I am seeing some odd behavior at Port 3.1(TX pin). When I look with my oscilloscope when compared to +5V I see the first picture below. In blue +5v ramps up very quickly to +5v. You can see that the TX line of the micro(8051 tx line sits high and transmits by dropping to "0" volts) stays low for just over 1ms and then it is pulled high as that shows the 8051 has taken control of the port.
I'm guessing from the data the host receives I can come to one conclusion. The TX line is staying low on power up that is decoded as a start bit and the rest are all +5v so those would be all 1's creating a spurious 0xFF output at the host.
My intuition told me to put a hard pullup resistor from +5v to the Tx line in order to have that line track the +5v rail so it isn't decoded as a start bit. When I do this I still have the 8051 sinking current because you can see that on power up +5v(blue) goes right to +5v. The Tx line(yellow) tries to get pulled up but the 8051 appears to be not allowing that to happen. I change resistor values and can't seem to rid the issue as I have to put such a hard pullup that the data not cannot be decoded.
Any thoughts as to exactly why this is happening? Also, I was thinking of putting some type of logic gate in line with the Tx line or a transistor so that line will always be high on power up. Any ideas?