In my [in]experience, 99% of serial communication errors are due to timing mismatches; the other* 99% is due to wiring hoopla.
- It works for short wire but not a 30ft CAT-5 cable
- It works for normal serial wire upto 10ft but not more than that.
CAT-5 cable is twisted pair (also, all of what I have used is also shielded, but apparently this is not common); I assume the "normal serial wire" is two loose wires. As wiring gets longer, your nice digital rise times stretch out, effectively shrinking the available window for sampling incoming data. Twisted pair helps this a bit. What this really means is that your UART clock must be prescaled more accurately to the baud rate being used. System clocks for perfect USART communications should be multiples of 1.8432MHz. Short-range communications can tolerate a few percentage error, but as your sampling window shrinks it must be more accurate. What your prescaler (int), and baud error?
prescaler = (int)(F_CPU / (USART_baudrate * 16) - 1)
actual_baudrate = F_CPU / (prescaler * 16)
baud_error = 100% * (1 - actual_baudrate / USART_baudrate)
- It works for 6V battery but not for 12 volt battery or a 12V adapter.
This sounds fishy! This may be a completely different problem, perhaps causing your widget to reset due to a dirty supply or poor regulation. There are stability issues with LDO linear regulators and varying capacitive loads; there may be dissipation issues from a 12V supply; if one isn't using a LDO regulator, then a 6V battery will really be giving you 4.5V to 5V, and won't be well regulated. Power supply issues are in a class all their own, and must be rectified before peripherals can be effectively debugged.
Other than this, there is always the issue with environmental interference, or EMI. RS-485 is made for this, but should be used with twisted pair[, shielded wire,] like the CAT-5 cable you've used.
**(What, my math is wrong? Do you know who I am!? ;)*
Martin,
I'm by no means an expert at RS485, but I have run into some of the same problems you've had with independent power supplies on multi-drop RS485 networks.
Most frequently, in spite of claiming fail-safe operation, they don't play nice with ground loops/DC offsets. For me, in the past, the most direct route is to use fail-safe biasing on the two lines. E.g. .
By the way: Most of my learning has come from others here as well as some pretty good application notes from Texas Instruments (PDF), Maxim (HTML), and Analog Devices (PDF).
Hope to hear if this gets you in business.
Josh
Best Answer
It is likely that the problem is the VCC1 voltage that you are using. If that voltage is +5V then I would expect the ADM483 to work just fine. It is designed to be used with a 5V supply.
On the other hand the MAX3430 is designed to be used with a 3.3V power supply. In fact the part's absolute maximum VCC is 5V but that is on the edge of being damaged.
You did not link data sheets in your question, which is highly recommended here, so I wonder if you have carefully read the data sheets for these two parts. Doing so would have revealed what I have pointed out above. There may be some other differences between the parts which could only be determined by careful data sheet examination.