Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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()
```
/*
Expand Down
20 changes: 17 additions & 3 deletions src/si5351.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
*
Expand Down
7 changes: 4 additions & 3 deletions src/si5351.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);
Expand Down