完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚学习dsp,编写了一个AD程序。程序的意图是想通过CPU定时器0触发AD采样,通道为ADCINA0-2,每通道采三次,然后取平均。连接电路时将ADCLO与GND连一块接到干电池的负极,ADCINA连接电池正极。下面是我编写的采样程序,编译没有问题,就是观察不到电压AD0-AD2的变化,他们总是0。
#include "DSP2833x_Project.h" int AD0=0,AD1=0,AD2=0,AD_FLAG=0; void adc_init(void); interrupt void adc_isr(); interrupt void cpu_timer0_isr(); void main() { InitSysCtrl(); DINT; InitPieCtrl(); IER=0x0000; IFR=0x0000; InitPieVectTable(); EALLOW; PieVectTable.TINT0=&cpu_timer0_isr; PieVectTable.SEQ1INT=&adc_isr; EDIS; InitCpuTimers(); #if(CPU_FRQ_150MHZ) ConfigCpuTimer(&CpuTimer0,150,1000000); #endif #if(CPU_FRQ_100MHZ) ConfigCpuTimer(&CpuTimer0,100,1000000); #endif CpuTimer0Regs.TCR.all=0x4001; IER|=M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7=1; PieCtrlRegs.PIEIER1.bit.INTx1=1; EINT; ERTM; InitAdc(); while(1) { adc_init(); } } void adc_init(void) { AdcRegs.ADCTRL3.bit.ADCBGRFDN=0x3; DELAY_US(5000L); AdcRegs.ADCTRL3.bit.ADCPWDN=1; DELAY_US(20L); AdcRegs.ADCTRL3.bit.SMODE_SEL=0; AdcRegs.ADCTRL1.bit.SEQ_CASC=1; AdcRegs.ADCMAXCONV.all=0x08; AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0; AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x0; AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x0; AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x1; AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x1; AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x1; AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x2; AdcRegs.ADCCHSELSEQ2.bit.CONV07=0x2; AdcRegs.ADCCHSELSEQ3.bit.CONV08=0x2; AdcRegs.ADCTRL2.bit.SOC_SEQ1=AD_FLAG; AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1; AdcRegs.ADCTRL1.bit.ACQ_PS=5; AdcRegs.ADCTRL1.bit.CPS=0; AdcRegs.ADCTRL3.bit.ADCCLKPS=5; } interrupt void adc_isr(void) { AD0=AdcRegs.ADCRESULT0>>4; AD0+=AdcRegs.ADCRESULT1>>4; AD0+=AdcRegs.ADCRESULT2>>4; AD0=AD0/3; AD1=AdcRegs.ADCRESULT3>>4; AD1+=AdcRegs.ADCRESULT4>>4; AD1+=AdcRegs.ADCRESULT5>>4; AD1=AD1/3; AD2=AdcRegs.ADCRESULT6>>4; AD2+=AdcRegs.ADCRESULT7>>4; AD2+=AdcRegs.ADCRESULT8>>4; AD2=AD2/3; AdcRegs.ADCTRL2.bit.RST_SEQ1=1; AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; PieCtrlRegs.PIEACK.all=1; AD_FLAG=0; } interrupt void cpu_timer0_isr(void) { AD_FLAG=1; PieCtrlRegs.PIEACK.all=1; } |
|
相关推荐
3个回答
|
|
学习学习,谢谢分享!
|
|
|
|
学习学习,谢谢分享!
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
991 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
970 浏览 2 评论
2080 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1177 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 03:47 , Processed in 0.599870 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号