Ejemplo n.º 1
0
void Console_reset( char ch){

    switch (resetcounter) {
    case 0: if (ch=='r') resetcounter++; else resetcounter=0; break;
    case 1: if (ch=='e') resetcounter++; else resetcounter=0; break;
    case 2: if (ch=='s') resetcounter++; else resetcounter=0; break;
    case 3: if (ch=='e') resetcounter++; else resetcounter=0; break;
    case 4: if (ch=='t') resetcounter++; else resetcounter=0; break;
    }

	if (resetcounter ==5){
		DDS_reset();
		putstring("reset jott ");
		resetcounter=0;
	}

}
/************************************************************
	Function:		DDS_init()
	Argument:		
	Description:	Initializes serial mode on all AD9851 DDS.
	Action:	
		Must be run after InitDDS_IO();				
			W_CLK_1		-		DAI_PB10
			W_CLK_2		-		DAI_PB08
			W_CLK_3		-		DAI_PB06
			DATA(SDI)	-		DAI_PB07
			FQ_UD		-		DAI_PB09
			RESET		-		DAI_PB05

	AD9851 Initialization sequence:
		1. Reset all DDS.
		2. Assert W_CLK to load Serial enable sequence
		3. Update Frequency
		4. -- Serial Mode is Loaded --
		5. Write a valid 40-bit word to each DDS 
				(F=0Hz, Phase = 0)
		6. Update Frequency
		
	Extra: Figure 17, p.15 , AD9851 Datasheet
			 tDS Data setup time
			Hardwired serial mode - Just send W_CLK# and FQ_UD
************************************************************/
void DDS_init(void){
		char k,i;
		
		// 0. Generate DDS_OSCILLATOR_CLOCK
		
	//	*pPCG_PW2 = ((sample_period*PCG_TICKS_PER_uSEC)-1)<<16;
		// PCG clock input is from PCLK
		*pPCG_SYNC1 |= CLKA_SOURCE_IOP|FSA_SOURCE_IOP|CLKA_SYNC;
		*pPCG_CTLA1 |= 0; 
		// DDS_OSC = 20MHz
		*pPCG_CTLA0 =  DDS_OSC_PCLK_DIVIDER | ENFSA | ENCLKA ;

		/*  To output a 100 MHz signal to the output of the DAI.
		*pPCG_SYNC1 |= CLKB_SOURCE_IOP|FSB_SOURCE_IOP|CLKB_SYNC;
		*pPCG_CTLB1 |= 0; 
		// DDS_OSC = 20MHz
		*pPCG_CTLB0 =  2 | ENFSB | ENCLKB ;
		SRU (PCG_FSB_O, DAI_PB12_I);
		SRU(HIGH,PBEN12_I);
		*/
		
		
		
		// 1. Reset all DDS.
		DDS_reset();
		
		// 2. Assert W_CLK to load Serial enable sequence
		DDS_W_CLK1_H;
		DDS_W_CLK2_H;
		DDS_W_CLK3_H;

		for(k=0;k<100;k++);
					
		DDS_W_CLK1_L;
		DDS_W_CLK2_L;
		DDS_W_CLK3_L;
	
		for(k=0;k<100;k++);
	
		// 3. Update Frequency
		DDS_update_frequency();
		// 4. -- Serial Mode is Loaded --
		
		// 5. Write a valid 40-bit word to each DDS 

	/*   USING SPORTs INTERFACE:
		DDS1_frequency = DDS2_frequency = DDS3_frequency = DDS_0Hz;
		DDS1_phase = DDS2_phase = DDS3_phase = DDS_PHASE_0;
		
		DDS_set_DMA(DDS_ch1);
		DDS_set_SRU(DDS_ch1);
		DDS_start_SPORT();
		
		DDS_set_DMA(DDS_ch2);
		DDS_set_SRU(DDS_ch2);
		DDS_start_SPORT();
		
		DDS_set_DMA(DDS_ch3);
		DDS_set_SRU(DDS_ch3);
		DDS_start_SPORT();
	*/
	/* USING BIT BANGING SOFTWARE MODE */
		DDS_WriteData(DDS_0Hz, DDS_PHASE_0, 0, DDS_ch1);
		DDS_WriteData(DDS_0Hz, DDS_PHASE_0, 0, DDS_ch2);
		DDS_WriteData(DDS_0Hz, DDS_PHASE_0, 0, DDS_ch3);

		DDS_update_frequency();			
			
			

		// 6. Update Frequency
		DDS_update_frequency();
		for(k=0;k<100;k++);
					
}