Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Feeding the Watchdog (http://www.chiefdelphi.com/forums/showthread.php?t=81526)

Robopanda6 30-01-2010 15:54

Feeding the Watchdog
 
I am trying to run my teleoperated code and it builds successfully when i debug but when I run the program it says the watchdog is not fed. I followed how the default code fed the watchdog but it still didn't work. The I tried downloading the default code but it still says the watchdog is not fed. Does anyone know how to disable the watchdog or feed it?

The advice would be much appreciated.

basicxman 30-01-2010 16:12

Re: Feeding the Watchdog
 
Here's basically how the watchdog works. Except in autonomous mode the watchdog must be enabled. It then must be fed every x settings, x is determined with the SetExpiration(numSeconds) function (usually called in the constructor of your robot class). Failure to do so results in your robot being promptly disabled.

To enable the watchdog you can use the function (SetEnabled(true)) and to disable, SetEnabled(false). Following that you must feed it using Feed().

Here's a sample program in C++ (should be quite similar in Java).

Code:

#include "WPILib.h"

class Robot : public SimpleRobot {
       
        Robot(void) {
                GetWatchdog().SetExpiration(0.1); // Must feed watchdog every 100mS
        }
       
        void Autonomous(void) {
                GetWatchdog().SetEnabled(false);
                // Autonomous Code here
        }
       
        void OperatorControl(void) {
                GetWatchdog().SetEnabled(true);
               
                while (IsOperatorControl() && !IsDisabled()) {
                        GetWatchdog.Feed();
                       
                        // Teleop code here
                       
                        Wait(0.05);
                }
               
        }
       
}

START_ROBOT_CLASS(Robot);

Sometimes when your camera is booting up or you execute another function that takes a little time, the Dashboard will say the Watchdog is not fed as it hasn't got that far in the program.

According to http://first.wpi.edu/Images/CMS/Firs...va_for_FRC.pdf to equivalent Java functions are:

Code:

// Similar to C++, just note the case.
getWatchdog().setEnabled(true);
getWatchdog().setExpiration(0.1);
getWatchdog().feed();


Robopanda6 30-01-2010 17:51

Re: Feeding the Watchdog
 
Thank you for the advice but...
I've tried your way of setting up the feed but it doesn't work. I tried the way the PDF you sent me did it before your way of doing the watchdog feed but it still didn't work then either. Is there any way else anyone can suggest?

omalleyj 31-01-2010 13:16

Re: Feeding the Watchdog
 
The example basicxman gave is correct. If it isn't working for you you should look carefully at your code for these things:
any init (such as the camera mentioned) that might take longer than the expiration
are you feeding it within all loops that might run longer than the expiration
do you ever pend on input that may not come fast enough
Timer.delay calls that may total too much time

Examine every loop or method call to make sure. Put printlns in that display the time in potential problem areas, some things, like processing large images take a lot longer than you might think. Lots of printlns are expensive. DriverStationLCD prints take a while. etc.

If you post your code we could look for potential problem areas

Good luck!


All times are GMT -5. The time now is 09:41.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi