Digital Function Generator (MEGA16-P)

  
The function generator features two BNC outputs : one for the high speed [1 to 8 MHz] square signal (BNC1) and another for the DDS signal (BNC2). Offset and amplitude can be regulated by two potentiometers : offset in range of +5V to -5V (POT1) and amplitude in range of 0 to 10V (POT2). Up and down arrow buttons are used for changing the function type (sine, triangle etc.) while left and right arrow buttons are used for changing the frequency value. There is also a separate menu for changing frequency step. When the middle button is pressed, the signal generation starts. Middle button is pressed again for stopping the signal. More details can be found in the original site.
Digital Function Generator (MEGA16-P) - schematic

Because of the present LCD character orientation, which is different from the original implementation (180 degrees), the following changes in main.c were made : Buttons LEFT and RIGHT were reversed : #define LEFT 3//PORTD #define RIGHT 1//PORTD Buttons TOP and BOTTOM were reversed : #define DOWN 4//PORTD #define UP 0//PORTD For the latest version of AVR-GCC compiler, the following changes should be made (according to Geoff comment on scienceprog.com) : struct signal{ volatile uint8_t mode; //signal volatile uint8_t fr1; //Frequency [0..7] volatile uint8_t fr2; //Frequency [8..15] volatile uint8_t fr3; //Frequency [16..31] volatile uint32_t freq; //frequency value volatile uint8_t flag; //if 0 generator is OFF, 1 is ON volatile uint32_t acc; //accumulator volatile uint8_t ON; volatile uint8_t HSfreq; //high speed frequency [1...4Mhz] volatile uint32_t deltafreq; //frequency step value }SG; The ATMEGA16 fuses should be : HIGH = 0×59 LOW = 0xCF This is interpreted to the following options checked (all others unchecked) : OCDEN SPIEN BOOTSZ1 BOOTSZ2 SUT1 SUT0



Leave Comment

characters left:

New Circuits

.