Interfacing the DS1077 oscillator module
The DS1077 Package
This IC comes in a SOIC package, therefore Sparkfun did a nice breakout board for it. In this project we used the breakout board, but if we were using the bare chip everything should work the same way as described here. This module can oscillate at 8200 different frequencies from 16kHz up to 133Mhz and can be reprogrammed at runtime using a I2C serial interface.
For a test setup a PIC16F628A was connected to the DS1077, by using the pins RA0 for data transmission (SDA), RA1 for synchronous clock (SCL). Some LEDs were also connected to the PIC, they are not required but it is always good to have some flashing leds around so we know that something is wrong when they stop flashing.
It is always a good approach to start by trying to find out if somebody did already before what we need. Unfortunately in this time only some code for the Arduino was available, as this project was assigned to a PIC controller we had to build a small library for the DS1077 ourselves.
We released the DS1077 library under the GPL license, it works with the CCS compiler, and should be used as in the supplied example. This library was initially developed for the PIC16F628A/PIC16F876A but should work with most of the members of the PIC family (PIC18 included), remember to modify the test program to suite your microcontroller.
The only relevant function is: int32 ds1077_frq(int32 frq); where frq is requested frequency in kHz and it returns processed frequency in kHz.
We recorded the output of DS1077 when controlled with the test program. The test program changes the frequency every second, and we found that the response of the oscillator is quite good, also the frequency resolution looks quite nice on a “log” plot. Note that on the figure the missing points are due to a gap in the frequency acquisition, not in the waveform generation.