> On Mon, May 18, 2009 at 3:17 PM, Isaac Marino Bavaresco > wrote: > > It appears somebody found that a node always sees the data it is > > transmitting, even when there is another node transmitting. If so, then > > it may be not possible to detect collisions at all. > = > How is this possible? > -- = Not always but if the two colliding transmitters are some distance apart fr= om = each other you have some resistance in the cable between them. If you also = have = some transient suppression components or fuses on the board (between the = transmitter chip and the terminals for the bus cable) it may add some more = resistance. The terminals themselves also adds some resistance, especially = if = there are two on each board, one for input and one for output (even if they= are = connected in parallell). Multiply the terminal resistance with as many node= s = (boards) there are between the two colliding transmitters. The total resist= ance = may not add upp to more than a couple of tens of ohms but this may be enogh. A RS485 transmitter used in a standard RS485 way means that the transmitter = outputs drives actively in both directions for both 1 and 0 state of the bu= s. = And they can drive relatively high currents. The receivers also only needs a couple of hundred mV difference between the= two = inputs to detect a valid 1 or 0 level. All this together with the fact that the receiver that is going to detect a = collision is located on the same chip as the transmitter, with the resistan= ce = between it and the other transmitter and no resistance between it and the = transmitter on the same chip, means that the receivers may very well detect= the = level that the transmitter on the same chip is transmitting and thus not = detecting a collision. To get around this you need to change the behavior of the bus so a 1 level = is = much weaker than a 0 level (or the other way around) which means that the 0 = level (the dominant level) always wins over a 1 level (the recessive level)= , = even with the resistance in the cable and terminals. This can easily be don= e = with a RS485 transmitter chip by modulating the transmit enable input inste= ad = of the data input with the transmitted data and having resistors to pull th= e = bus to the weak level. Compare this to an open collector OR wired bus with = a = single pull up resistor. The transistor can only actively drive to ground w= hile = the resistor passively pulls the bus to the high level. The bus is only hig= h = when no transistors are active (switched on). /Ruben =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D Ruben J=F6nsson AB Liros Electronic Box 9124, 200 39 Malm=F6, Sweden TEL INT +46 40142078 FAX INT +46 40947388 ruben@pp.sbbs.se =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D -- = http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist