Bits

The roboRIO provides a universal CAN heartbeat - any device on the bus can listen and react to. - this heartbeat is sent every 20 ms. - the heartbeat has a full CAN ID of 0x01011840 - (which is the NI Manufacturer ID, RobotController type, Device ID 0 and API ID 0x061). - It is an 8 byte CAN packet with the following bitfield layout

If the System watchdog flag is set, motor controllers are enabled - If 100 ms has passed since this packet was received - the robot program can be considered hung - and devices should act as if the robot has been disabled

Note that all fields except Enabled, Autonomous mode, Test mode, and System watchdog will contain invalid values until an arbitrary time after the Driver Station connects

https://www.playingwithfusion.com/docview.php?docid=1206

Network Throughput - Extended CAN Frame Structure (up to 128 bits) - Data frame identifiers and definitions (39 bits) - Data field (up to 64 bits) - CRC and End-of-Frame (25 bits) - 1,000,000 bits / sec / 128 bits = 7800 messages / sec - However, some devices want 10 ms notification control loop - So it becomes 7800 msg/sec / 100 loops/second = 78 msg/loop

End Resistors - Bring's CAN back to recessive state - Absorb any electrical reflections in the network

CAN is a differential bus - meaning the voltage difference between the “HIGH” and “LOW” lines is what differentiates between zeros and ones - The network lets only one device speak at a time - Message priority and collision detection are built into the physical protocol.

![[Pasted image 20250306233038.png]]