From d28d4e25e9566320f8f4a471fff758a283de797c Mon Sep 17 00:00:00 2001 From: KT315AM Date: Sun, 19 Jul 2026 07:29:29 +0700 Subject: [PATCH] Add method Si5351::reset_freq() --- README.md | 13 +++++++++++++ src/si5351.cpp | 20 +++++++++++++++++--- src/si5351.h | 7 ++++--- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3a142af..65e9bd2 100644 --- a/README.md +++ b/README.md @@ -299,6 +299,19 @@ bool Si5351::init(uint8_t xtal_load_c, uint32_t ref_osc_freq, uint32_t ref_osc_f */ void Si5351::reset(void) ``` +### reset_freq() +``` +/* + * reset_freq(enum si5351_clock clk) + * + * Sets the clock frequency of the specified CLK output to initial value. + * Set 0 Hz and disable output. + * + * clk - Clock output + * (use the si5351_clock enum) + */ +void Si5351::reset_freq(enum si5351_clock clk) +``` ### set_freq() ``` /* diff --git a/src/si5351.cpp b/src/si5351.cpp index 2adecd9..5a54c5c 100644 --- a/src/si5351.cpp +++ b/src/si5351.cpp @@ -173,12 +173,26 @@ void Si5351::reset(void) uint8_t i; for(i = 0; i < 8; i++) { - clk_freq[i] = 0; - output_enable((enum si5351_clock)i, 0); - clk_first_set[i] = false; + reset_freq((enum si5351_clock)i); } } +/* + * reset_freq(enum si5351_clock clk) + * + * Sets the clock frequency of the specified CLK output to initial value. + * Set 0 Hz and disable output. + * + * clk - Clock output + * (use the si5351_clock enum) + */ +void Si5351::reset_freq(enum si5351_clock clk) +{ + clk_freq[(uint8_t)clk] = 0; + output_enable(clk, 0); + clk_first_set[(uint8_t)clk] = false; +} + /* * set_freq(uint64_t freq, enum si5351_clock clk) * diff --git a/src/si5351.h b/src/si5351.h index 59c16e9..f1d5876 100644 --- a/src/si5351.h +++ b/src/si5351.h @@ -282,6 +282,7 @@ class Si5351 Si5351(uint8_t i2c_addr = SI5351_BUS_BASE_ADDR); bool init(uint8_t, uint32_t, int32_t); void reset(void); + void reset_freq(enum si5351_clock); uint8_t set_freq(uint64_t, enum si5351_clock); uint8_t set_freq_manual(uint64_t, uint64_t, enum si5351_clock); void set_pll(uint64_t, enum si5351_pll); @@ -302,7 +303,7 @@ class Si5351 void set_clock_fanout(enum si5351_clock_fanout, uint8_t); void set_pll_input(enum si5351_pll, enum si5351_pll_input); void set_vcxo(uint64_t, uint8_t); - void set_ref_freq(uint32_t, enum si5351_pll_input); + void set_ref_freq(uint32_t, enum si5351_pll_input); uint8_t si5351_write_bulk(uint8_t, uint8_t, uint8_t *); uint8_t si5351_write(uint8_t, uint8_t); uint8_t si5351_read(uint8_t); @@ -314,8 +315,8 @@ class Si5351 uint64_t clk_freq[8]; uint64_t plla_freq; uint64_t pllb_freq; - enum si5351_pll_input plla_ref_osc; - enum si5351_pll_input pllb_ref_osc; + enum si5351_pll_input plla_ref_osc; + enum si5351_pll_input pllb_ref_osc; uint32_t xtal_freq[2]; private: uint64_t pll_calc(enum si5351_pll, uint64_t, struct Si5351RegSet *, int32_t, uint8_t);