سلام دوستان
با استفاده از کد های بخش http://www.eca.ir/forum2/index.php?topic=38976.180 قسمت dma رو میخوام راه اندازی کنم. اما هیچ تغییری روی خروجی dac دیده نمیشه.
اشکال کارم کجاست؟
با استفاده از کد های بخش http://www.eca.ir/forum2/index.php?topic=38976.180 قسمت dma رو میخوام راه اندازی کنم. اما هیچ تغییری روی خروجی dac دیده نمیشه.
اشکال کارم کجاست؟
کد:
/* XMEGA64A3__ADC_DMA_PWM.c* Author: Chavosh* */ #include <avr/io.h> int a=0; int main(void) { SREG = 0X80; PMIC_CTRL = PMIC_MEDLVLEN_bm|!(PMIC_IVSEL_bm); CCP = CCP_IOREG_gc; OSC_CTRL = OSC_RC32MEN_bm; while(!(OSC_STATUS & OSC_RC32MRDY_bm)); CLK_CTRL = 0x01; PORTC_DIR = PIN0_bm; TCC0_PER=2047; TCC0_CTRLB=TC_WGMODE_SS_gc|TC0_CCAEN_bm; TCC0_CTRLA=TC_CLKSEL_DIV2_gc; DACB_CTRLB=DAC_CHSEL_SINGLE_gc; DACB_CTRLC=0; DACB_CTRLC=DAC_REFSEL_AREFA_gc; DACB_CTRLA=DAC_ENABLE_bm|DAC_CH0EN_bm; DMA_CTRL=DMA_ENABLE_bm; DMA_CH0_ADDRCTRL=DMA_CH_SRCRELOAD_BURST_gc|DMA_CH_SRCDIR_INC_gc|DMA_CH_DESTRELOAD_BURST_gc|DMA_CH_DESTDIR_INC_gc; DMA_CH0_TRIGSRC=DMA_CH_TRIGSRC_TCC0_CCA_gc; DMA_CH0_TRFCNT = 0; DMA_CH0_SRCADDR0 =(((uint16_t)(&a))>>0*8)&0xFF; DMA_CH0_SRCADDR1 =(((uint16_t)(&a))>>1*8)&0xFF; DMA_CH0_DESTADDR0 =(((uint16_t)(&DACB_CH0DATA))>>0*8)&0xFF; DMA_CH0_DESTADDR1 =(((uint16_t)(&DACB_CH0DATA))>>1*8)&0xFF; DMA_CH0_CTRLA=DMA_CH_SINGLE_bm|DMA_CH_REPEAT_bm|DMA_CH_BURSTLEN_2BYTE_gc|DMA_CH_ENABLE_bm; while(1); }
دیدگاه