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++); }