My gcode file contains an M109 S185 command at the start (I like to keep this in there for safety reasons). What I've found is when you click print and wait for the hot end to reach the target temp, it requires the temp to be extremely accurate (to within 0.2 deg C) before it initiates the 3 second countdown. For instance if it needs 185C it will not start at 184.5C or even 184.7C, it seems to need within 0.2C to start. This often has it waiting several extra minutes while the hot end is trying to match the target temp (i.e., turning the heat on and off).
My configuration.h file looks like this:
// Actual temperature must be close to target for this long before M109 returns success
#define TEMP_RESIDENCY_TIME 3 // (seconds)
#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
So it is already set to 3C, but I think the tolerance to control when to actually start the countdown is somewhere else. Maybe temperature.h? I am a newbie when it comes to firmware code so sorry if any of this doesn't make sense
-Jonas