I think it's time to conclude this thread.
I'll summarize what I've learned:
- CAN messages take a long time over serial due to the current implementation. (messages wait for errors on the CAN bus before completing). If there is an error, the function takes longer still. There is a driver update expected to help alleviate the issue. I have no data on the 2CAN module.
- There are multiple issues with the Jaguar firmware:
- Speed is dealt with in RPM (the documentation states revolutions per second). Although only the encoder can be used to calculate speed, the "speed reference" configuration is required. The "Speed" status is reported as zero until the Jaguar has been enabled in speed mode. The speed status reports positive regardless of the direction the encoder is turning.
- The "Position" status is reported as zero until the Jaguar has been enabled in position mode.
- There is no status message to tell if the Jaguar is enabled or disabled.
- The "control mode" status is not implemented.
- "Device Query" takes half a second to execute, but returns nothing.
- The current sensor is only accurate within 1 amp. This makes current control unsuitable for all FRC motors smaller than the CIM.
- There are occasional reliability issues on startup. Sometimes only some of the motor controllers will function. When my auto-configuration utility is running, the quickest way to fix this is to cycle power to the nonfunctioning devices.
Because of these issues, I would not recommend CAN to a team for competition use, and I will not be teaching a CAN workshop at our preseason kickoff.
However, I will continue working with CAN and publishing my work on Chief Delphi.