Digital Sine Wave Oscillator

If found myself in need of a 1 KHz signal source for an experiments. My function/sweep generator was needed as a pulse generator for the same experiment, so I went though my junk box, looking for circuits from long ago that might fill the need, but found nothing useful. I had a board with an AT90S8515 and an 8 bit resistor ladder network on it, which serves as a DAC (digital to analog converter), so I thought `This will be easy.` and sat down to write the code. Since I wrote it in C rather than assembly, writing the code took much longer than I expected, but in the end, I managed to get it to do what I wanted it to do, and I fixed the typographical errors.
Digital Sine Wave Oscillator - schematic

The little generator with the AT90S8515 worked well enough for that experiment, that I decided to build up a version that uses the ATTINY2313 or AT90S2313 (I tested the firmware on both chips) so the 1 kHz sine wave generator would be available for some future experiments that I am planning. At this point, you might wonder at my choice of an AT90S2313 instead of the ATTINY2313. I still have lots of AT90S2313's and intend to use them where I can. There is not much of a market for obsolete controllers. Code is provided for the ATTINY2313/AT90S2313 and the ATMEGA8515/AT90S8515. The ATTINY2313 hex file was tested on both the ATTINY2313 and the AT90S2312, while the AT90S8515 hex file was only tested on an AT90S8515. The AT90S8515 hex file is fully expected to run on the ATMEGA8515 without any problems, provided that the ATMEGA8515 is operated in the AT90S8515 compatibility mode (see below). The DAC is made up of 9 each 20 k Ohm and 7 each 10 k Ohm resistors, connected as an R-2R ladder network. The output of the DAC shunted by a voltage divider, whose resistance is 2.8 k Ohms, which simultaneously decreases the amplitude of the the sine wave to about 900 millivolts. Without the voltage divider (6.8k and 4.7K, the output would be nearly 5 volts peak-to-peak.) An integrated circuit DAC would have worked just fine, and I have some laying around, but somehow, it was more satisfying to make my own DAC with resistors....

Leave Comment

characters left:

New Circuits