/*                                                                           */
/* ad5932.h                                                                  */
/*                                                                           */
/* Routinen zur Ansteuerung des AD5932 DDS-Chips über LPC2294                */
/*                                                                           */
/* (2008) Universität Stuttgart / IZFM (Dipl.-Ing.(FH) Klaus Skibowski)      */
/*                                                                           */
/*			geändert auf ATMega88 und einen AD5932 							 */
/*																			 */
/*	Version: 	0.2															 */
/*	Datum: 		22.02.2010													 */	
/*	Name:		Martin Ernst													 */	
/*****************************************************************************/


#ifndef AD5932_H
#define AD5932_H

// AD5932 Registeradressen
#define AD5932_CONTROL		0x0000
#define AD5932_N_INC		0x1000
#define AD5932_DELTA_F_LOW 	0x2000
#define AD5932_DELTA_F_HIGH	0x3000
#define AD5932_T_INT		0x4000
#define AD5932_FSTART_LOW	0xC000
#define AD5932_FSTART_HIGH	0xD000

// Control register bits
#define AD5932_B24			0x0800
#define AD5932_DAC_ENABLE  	0x0400
#define AD5932_SINE_TRI		0x0200
#define AD5932_MSBOUTEN 	0x0100
#define AD5932_TRIG_INC	   	0x0020
#define AD5932_SYNCSEL		0x0008
#define AD5932_SYNCOUTEN	0x0004
//#define AD5932_RESERVED		

// 
#define FIXED_WAVEFORM_CYCLES	0x00
#define FIXED_CLOCK_PERIODS		0x01

#define WAVEFORM_SINUS				0x01
#define WAVEFORM_TRIANGLE			0x00

#define TIMEBASE_MULTILPLIER_X1		0x00
#define TIMEBASE_MULTILPLIER_X5		0x01
#define TIMEBASE_MULTILPLIER_X100	0x02
#define TIMEBASE_MULTILPLIER_X500	0x03

//#define SYNCOUT_DDS1	 ((IOPIN0 & 0x00080000)>0)

#define DDS1			1


unsigned int control_reg;
unsigned int tb_multiplier;
unsigned int tb_mult;
unsigned int n_inc;
unsigned int t_int;
unsigned long delta_f;
unsigned long startfrequenz,endfrequenz_dds1,wobbelfrequenz_dds1;

//unsigned long mclk;
unsigned int  sweep_delay;  // sweep delay in s
unsigned short sweep_status;
float scandurchlauf;
double mclk_faktor;
double mclk;
unsigned long startdelay;
unsigned short waveform;

void ad5932_write(unsigned int wert);
//void ad5932_write_freq(unsigned int wert);
void ad5932_set_frequency(double wert);
void ad5932_set_delta_f(double wert);
void ad5932_set_n_inc(unsigned int wert);
void ad5932_set_increment_interval(unsigned char mode, unsigned int wert);
void ad5932_start(void);
void ad5932_reset(void);
void ad5932_init(void); 

#endif
