I have implemented a Gardner timing error detector with an interpolator and timing recovery in software. I noticed that the error term of the Gardner TED depends on the signal amplitude, which causes problems with the large variations of signal strength my receiver is expected to see.
With bursts (no timing sequence, only CW + sync word over 64 symbols), there are variations of 10 dB from the start of the transmission to after a few (15-20) symbols of frame data. For continuous signals (long CW + long timing sequence), this is less of an issue as the signal level tends to be relatively constant or varying rather slowly.
Is there a way I can make the Gardner error factor not depend on signal amplitude or should I instead focus on making sure the TED always sees a constant power level?