diff --git a/main.c b/main.c index 069abb2..69245fd 100644 --- a/main.c +++ b/main.c @@ -804,18 +804,11 @@ bool sweep(bool break_on_operation) // blink LED while scanning palClearPad(GPIOC, GPIOC_LED); // Power stabilization after LED off, also align timings on i == 0 - - // !!!!! Don`t understand why si5351 non stable on band 2 then change from band 3 - // It fixed if set before one band 1 frequency - // Possibly problem in gain, call only si5351_set_frequency_with_offset not work - // Also it allow align sweep timings - set_frequency(50000000); - DSP_START(1);DSP_WAIT_READY; for (i = 0; i < sweep_points; i++) { // 5300 if (frequencies[i] == 0) break; delay = set_frequency(frequencies[i]); // 700 tlv320aic3204_select(0); // 60 CH0:REFLECT, reset and begin measure - DSP_START(delay); // 1900 + DSP_START(delay+((i==0)?1:0)); // 1900 //================================================ // Place some code thats need execute while delay //================================================ diff --git a/si5351.c b/si5351.c index 1d589b3..aee7ba8 100644 --- a/si5351.c +++ b/si5351.c @@ -380,13 +380,16 @@ si5351_set_frequency_with_offset(uint32_t freq, uint8_t drive_strength){ int delay = DELAY_NORMAL; if (freq == current_freq) return delay; + else if (current_freq > freq) // Reset band on sweep begin (if set range 150-600, fix error then 600 MHz band 2 or 3 go back) + current_band = 0; + current_freq = freq; uint32_t ofreq = freq + current_offset; uint32_t mul = 1, omul = 1; uint32_t rdiv = SI5351_R_DIV_1; uint32_t fdiv; - // Fix possible uncorrect input + // Fix possible incorrect input drive_strength&=SI5351_CLK_DRIVE_STRENGTH_MASK; - current_freq = freq; + if (freq >= config.harmonic_freq_threshold * 7U) { mul = 9; omul = 11;