DCC-EX / Support-Planning

DCC++EX Repo to hold project planning documentation and processes
1 stars 1 forks source link

friendly notification of a possible error #688

Open fire-bot opened 1 month ago

fire-bot commented 1 month ago

Sent by Filip Šilar (flipe@centrum.cz). Created by fire.


Hello,

First of all, I would like to thank you for the great DCC-EX project. It is the only project of its kind that is comprehensive sophisticated and functional.

While testing the new features of version 5 I found one bug. When I use more than 1 TCA9548 multiplexer, for example 2 (0x70 and 0x71), all servos stop working completely. If I disconnect one multiplexer, the servos on the connected branch run normally. Of course, this only becomes apparent after a CS reboot. I have tried this with different multiplexer designs and also swapped the PCA9685 boards as well. I have also tried changing the address of the PCA9685 with no result. GPIO expanders work normally on all muxes as expected. I don't know if you know this. Can you fix it or point me to where it is in your code? I couldn't find it in the code. I'm sending a picture in the attachment for better understanding.

here are the listings of :

for 2 multiplexers "ONLINE" < Arduino Vpins:2-69 > < PCA9685 I2C:{I2CMux_0,Subbus_0,0x40} Configured on Vpins:116-131 > not working < PCA9685 I2C:{I2CMux_1,Subbus_0,0x41} Configured on Vpins:132-147 > not working < MCP23017 I2C:{I2CMux_0,Subbus_1,0x20} Configured on Vpins:196-211 > okay < MCP23017 I2C:{I2CMux_1,Subbus_2,0x20} Configured on Vpins:212-227 > okay

for first multiplexer ONLINE, second OFFLINE < Arduino Vpins:2-69 > < PCA9685 I2C:{I2CMux_0,Subbus_0,0x40} Configured on Vpins:116-131 > okay < PCA9685 I2C:{I2CMux_1,Subbus_0,0x41} Configured on Vpins:132-147 OFFLINE > < MCP23017 I2C:{I2CMux_0,Subbus_1,0x20} Configured on Vpins:196-211 > okay < MCP23017 I2C:{I2CMux_1,Subbus_2,0x20} Configured on Vpins:212-227 OFFLINE>

and vice versa < Arduino Vpins:2-69 > < PCA9685 I2C:{I2CMux_0,Subbus_0,0x40} Configured on Vpins:116-131 OFFLINE>
< PCA9685 I2C:{I2CMux_1,Subbus_0,0x41} Configured on Vpins:132-147 > okay < MCP23017 I2C:{I2CMux_0,Subbus_1,0x20} Configured on Vpins:196-211 OFFLINE >
< MCP23017 I2C:{I2CMux_1,Subbus_2,0x20} Configured on Vpins:212-227 > okay

And then there's one more little mistake. The command does not list the switch types. It only lists . There is only one place in your documentation where this is mentioned (see image). Elsewhere it is described: The turnout type is requested with the command - it works. But this bug doesn't bother me :) I just wanted to load what's in DCC-EX to PC, but I don't need it (yet).

I'm using the latest version of DCC-EX: EX-CommandStation v5.0.7 Production Release

Thank you very much.

Kind regards Filip Šilar, Domazlice, Czech Republic

Translated with DeepL.com (free version)


Attachments:

  1. T_not_returns_types_of_turnouts.jpg
  2. Servo_error_by_2muxers.jpg
Ash-4 commented 1 month ago

One solution may be to not use 0x70 as a mux address. Use 0x71-0x77. In addition to having an I2C address such as 0x40, 0x41, etc., PCA9685 has 0x70 reserved (see PCA9685 datasheet). Other solutions are being discussed. Documentation to be updated.