SparkMax and SparkFlex Errors ...Timeout Waiting for Status X

Swerve drive - So, 8 SparkFlex running NEOs
Different Mechanisms - 3 More SparkMax (NEO 550) and 2 SparkFlex (NEO)
So 13 all together
Running Advantage Kit for logging

So, every periodic loop all 8 SparkFlex on Swerve are getting sent .set(Volts) commands.

One of the SparkMax is running a positional PID on the sparkMax. Only sending a .setReference when the target changes

2 Other SparkMax are just being set to specific voltages but I’m only sending a .set when the target voltage changes.

The SparkFlexs are running Velocity PIDs on the SparkFlex and only sending a .setReference when the target velocity changes.

When code is deployed and disabled the DS CAN Bus utilization fluctuates wildly from 0-100% looking at it you’d think it was a random number.

The driver station gets a “CAN ID X,X,X timeout waiting for status X.”

Where CAN ID is again a random assortment of the CAN IDs and status X is 0,1,or 2.

I’ve set the Periodic Frame Rate on all the controllers for frames 3-7 to 60000ms. I don’t need the information in those records.
Frame 0,1,2 and left at their default rates.

Doing .gets on the controllers every periodic as part of Advantage kit.
But .gets shouldn’t effect CAN traffic, right?

What should I be looking at to stop these CAN errors, I suspect they are harming robot operation.
We get strange things happening like sometimes some of the controllers don’t respond at all to commands but redeploy same code and they start working.

Today one of the SparkFlex’s using a velocity PID seemed to only get reaching 30% of what the target was set to. But redeploy the same code and now the Flex worked as expected.

Just seeing if someone has has similar experience and what are some things to try.

Updating Playing With Fusion library to 2024.03.09 fixed all my issues.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.