Releases: udoklein/dcf77
Bugfix DCF77 Scope
More Conservative Demodulator Handling
There was a very subtle interaction between the frequency control and the demodulator handling.
In the presence of some noisy signal with some very specific noise content the demodulator locked to a "phantom" phase. This in turn caused the frequency control to tune completely wrong. If at the same time the clock controller found that the crystal frequency was properly tuned this caused the clock to lose the phase and never recover.
The change counters this with two measures:
- The demodulator will now require a much higher signal to noise ratio. Hence the impact of noise will be significantly reduced. The downside is that it will now take somewhat longer till the clock will properly decode.
- If the demodulator will lose the phase, then the bandwidth will be widened to make sure that the clock can recapture the phase even if the frequency control is completely wrong.
Bumped Arduino Version in Travis tests
Travis will now user Arduino 1.8.10 for checking the library.
Fixed issue with debug output
Some flags were not properly set in debug output (see issue #39 for details).
BluePill Support
Merged BluePill support (provided by Christoph Tack prog.send@gmail.com here: 9f5a080)
Bugfix: removed some redundant code
Removed some redundant code.
Bugfix: proper initialization of local clock
The clock controller failed to properly setup the local clock. As a consequence the transition synced --> unlocked --> free was possible within 1s instead of at least 3000s. The setup is now properly called. As a consequence of the bugfix the clock will reaquire synced state faster if the signal quality detoriates for less than 3000 seconds.
Bugfix: Defensive Autotuning
The frequency tuning mechanism was to ambitious. This caused more issues than it solved. Thus I downgraded the mechanism slightly.
-
The tuning results will not be persisted anymore. Most users of the library will not notice this at all. However it decreases the size of the library. It also ensures that it can not get stuck persistently on a flawed adjustment parameter anymore. The point is that there is no guarantee that a properly tuned and persisted adjustment is good after a prolonged period of time. (Possible reasons: crystal aging and temperature differences).
-
The tuning range is decreased to +/- 125 ppm. However the range can be configured to "extended" (+/- 400 ppm) which is the old setup. This may be noticed by users with very poor crystal oscillators. The library was never designed for out of spec hardware. Thus they either have to fix their hardware or to adapt the configuration as needed.
Optimization: Slightly Improved Logging
The newly added configuration features of v3.2.11 will now also show up in the log files.
Feature: Configurable Noise Rejection
This release is a "fix" for issues #31 and #27.
The actual fix is in v3.2.10. However the fix has the side effect to delay the initial lock. Hence I made it configurable in 3.2.11 and set the default to the old behaviour. If you experience issues with the clock locking to a biased signal then you might want to change https://github.com/udoklein/dcf77/blob/v3.2.11/dcf77.h#L110. That is you might want to set
static const uint8_t unacceptable_minute_decoder_quality = controller_minute_quality_threshold_t::aggressive_minute_quality;
to something more conservative.