Pololu Jr TTL strange behavior


I am using 2 Pololu Jr boards to control 4 motors. These 2 boards are connected to a TS-7500 ARM board using TTL. My problem is this:

I am able to set correct values in all 4 motors ( I have 2 different device ID and I use the pololu protocol ) but i can not receive data from the boards when they are both connected.

I mean: When I have only one board connected I can query data ( in this case I querry the device signature ), but when I connect the two boards simultaneously I am no longer able to query data from any of the boards.

Any ideas why this is happening ?



How are you connecting the boards to your microcontroller? Note that while you can connect the serial receive lines of both boards to the same transmit line of your MCU, you cannot connect the serial transmit lines of both boards to a single MCU receive line, since that is equivalent to shorting together two outputs. You either need to connect the two TReX transmit lines to separate UARTs, or you need connect them to a logic gate that combines them (e.g. an AND gate) and connect the output of that to your MCU receive line.

- Ben

Indeed all TreX transmit lines are connected to the same receive line in my board. So that’s why I am able to send data to the pololu boards but I am not able to receive any data ? If I use this AND gate will i be able to receive data from both boards ?

The two TReX serial transmit lines are outputs, and you never want to connect two outputs together. When one TReX tries to send a byte, it drives the line low while the other TReX is driving the line high, and you effectively have a short circuit that could permanently damage one or both motor controllers. The point of using an AND gate is to combine the two signals into one meaningful one. You should think some about the logic involved before you actually set about doing it, and you can look at how our newer controllers implement TX chaining:

pololu.com/docs/0J44/4.2 (scroll to the bottom of the section)

The important thing to realize is that the idle state of a serial line is high, and when one goes low, you want the logic gate output to go low. That’s what an AND gate will do for you.

- Ben