Although this might seem like those classic “Watchdog” problems, this problem is special…
We use “Iterative Robot” system to program out robot, and we implemented things like solenoids, compressors, and camera, etc… When it got kinda complicated, the watchdog lost its appetite.
The robot boot fine, but whenever we enable it, the driver station immediately says “Watchdog Not Fed”.
I don’t think that the robot even initiated the Teleop Init function right… We fed the watchdog function plenty of times, but it still won’t feed…:ahh:
The most typical mistake is if you have a Wait somewhere in your code that is longer than the watchdog expiration. Wait is blocking. So while you are waiting, the watchdog starves. We don’t use Wait in our code at all. We wrote our own timer callback using the Notifier class. We also implemented a state machine so that we do non-blocking wait using the timer callback to advance the state machine to the next state.
Are you disabling the watchdog during autonomous and during the constructor? The watchdog could be expiring before the teleop function sets it up properly
We had a similar problem. Discovered that the accelerometer was plugged into to the duplicate I2C OUT ports. The accelerator initialization in the robot constructor was simply hanging, so our robot class never made it out of its constructor. So, as soon as the robot was enabled, the watchdog went hungry because our code hadn’t started feeding it yet.
I guess the lesson from that is: make sure your code is getting to where you think it is, and check everything.