After several painful days of debugging, we believe we have isolated the cause of some strange behavior we’ve been seeing with our dual NEO direct-drive shooter. It appears that if a SPARK MAX follower has a lower CAN ID than it’s leader, they will enter a strange state that will cause them to pause for a split second ~4 times second. I speculate that the 220ms watchdog on the spark max is being triggered but don’t have any way to know. The most frustrating aspect of the problem is that just switching which CAN ID is the leader vs follower is not sufficient to fix it. A full power-cycle is required, with code using the correct order deployed before the power-cycle.
We have reproduced the problem with the SPARK MAX example follower code on one minimal test bed and also with our own code on our robot with an entirely separate set of parts.
For a complete replication, please see this video.
Is this a known issue?
EDIT: added link to code