Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
Adding I2C mode burst details and @birdwes contributions
  • Loading branch information
stdevPavelmc authored Feb 14, 2021
1 parent abed1e7 commit e8bc9a7
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ My goal is this:

* Keep it as small as possible (Smallest firmware footprint)
* Less phase and click noise possible (Playing with every trick possible)
* Make it as fast as possible (thanks to @birdwes for I2C busrt mode write)

The main purpose is to be used in Radio receiver projects, so this two mentioned goals are the golden rule.

Expand Down Expand Up @@ -48,9 +49,9 @@ I have learned a few tricks from many sources in the Internet and after some loc

**Fast frequency changes:**

This was a side effect of the last trick to minimize the click noise, see the "Click noise free" section below for details.
This was a side effect of the last trick to minimize the click noise, see the "Click noise free" section below for details; also with the I2C busrt write contribution from @birdwes even the I2C writes takes a lot less time (implemented since version 0.7.0)

Summary: other routines write all registers for every frequency change, I write half of them most of the time, speeding up the process.
Summary: other routines write all registers for every frequency change, one byte at a time; I write half of them most of the time and in a bust mode speeding up the process a lot.

**Two of three**

Expand All @@ -69,12 +70,13 @@ This are so far the implemented features (Any particular wish? use the Issues ta
* Power control on each output independently (See _Si.setPower(clk, level)_ on the lib header)
* Initial power defaults to the lowest level (2mA) for all outputs.
* You don't need to include and configure the Wire (I2C) library, this lib do that for you already.
* I2C writes are handled in busrt mode, just init the I2C once per frequency change and dump the registers content and close; saving the init for each byte sent as normal.
* Frequency limits are not hard coded on the lib, so you can stress your hardware to it's particular limit (_You can move usually from ~3kHz to ~225 MHz, far away from the 8kHz to 160 MHz limits from the datasheet_)
* You has a way to verify the status of a particular clock (_Enabled/Disabled by the Si.clkOn[clk] var_)
* From v0.5 and beyond we saved more than 1 kbyte of your precious firmware space due to the use of all integer math now (Worst induced error is below +/- 1 Hz)
* Overclock, yes, you can move the limits upward up to ~250MHz (see the "OVERCLOCK" section below)
* Improved the click noise algorithm to get even more click noise reduction (see Click noise free section below)
* Fast frequency changes as part of the improved click noise algorithm (see Click noise free section below)
* Fast frequency changes as part of the improved click noise algorithm (see Click noise free section below) & I2C writes in burst mode.

## How to use the lib ##

Expand Down Expand Up @@ -250,7 +252,13 @@ Again: You can't use CLK1 and CLK2 at the same time, as soon as you set one of t

## Author & contributors ##

The only author is Pavel Milanes, CO7WT, a cuban amateur radio operator; reachable at [email protected], Until now I have no contributors or sponsors.
The main author is Pavel Milanes, CO7WT, a cuban amateur radio operator; reachable at [email protected], Until now I have no contributors or sponsors.

But I have received the contributions stated below:

* @birdwes:
- I2C busrt mode
- Found & fixed a bug about freq calculations.

## Where to download the latest version? ##

Expand Down

0 comments on commit e8bc9a7

Please sign in to comment.