For an upcoming project I need a variable clock source: up to 50MHz and as low as 10KHz. So I looked up VXCOs, PLLs, DDSs, etc etc. all not quite what I wanted.
And then I found this, the LTC6903, 1KHz-68MHz SPI (or I2C) programmable oscillator, 8 pins, <0.5% error, no crystal (?!). Theres also a resistor-controlled family (LT1933 in SOT23-5). This is the coolest thing ever!
Check out this kinky "typical app"
As Javaman says, “its like a monk that can control his own heartrate”
Congrats LTC690x, you are the Chip of the Week!

Printable catalog (PDF)
FEED
What for code (Bascom or basic) would I need to run this dude? I’m building a pc board right now to run this oscillator with a Mega48 AVR.
Comment by Wayne — May 31, 2007 @ 1:14 pm
Hi
Well I tried and failed with this using different parts………..any suggestions are very welcome
// Arduino using DDS60/AD9851 with 30MHz Osc clock ~ Bare Bones Test 16
// For AD9851 array values see http://www.analog.com/Analog_Root/static/techSupport/designTools/interactiveTools/dds/ad9851.html
// For AD9851 datasheet see http://www.analog.com/en/prod/0%2C2877%2CAD9851%2C00.html
// For DDS60 see http://www.amqrp.org/kits/dds60/index.html
// For Arduino see http://www.arduino.cc/en/Guide/HomePage
// by Mike Bowthorpe
byte DATA = 10; //DATA on pin 10/3
byte CLOCK = 9; //CLOCK on pin 9/2
byte LOAD = 8; //LOAD on pin 8/1
byte pin13 = 13;
void setup()
{
pinMode (DATA, OUTPUT); // sets pin 10 as OUPUT
pinMode (CLOCK, OUTPUT); // sets pin 9 as OUTPUT
pinMode (LOAD, OUTPUT); // sets pin 8 as OUTPUT
pinMode (pin13, OUTPUT);
}
void loop()
{
{
shiftOut(DATA,CLOCK,LSBFIRST,(0,119,250,137,230)); // 5 values W0, W1, W2, W3, W4 to give 14.06000 MHz with 30MHz Osc
digitalWrite (LOAD, HIGH); // Turn on pin 8/1 LOAD FQ-UD
digitalWrite (LOAD, LOW); // Turn pin 8 off
}
}
Regards
Mike
Comment by Mike — March 2, 2008 @ 10:04 am