完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
题目要求要对外部输入正弦波进行正负幅值采样,所以我使用了DTC两个通道,下面是我的代码:
[C] 纯文本查看 复制代码 void ADC_Init(void){/*失能ADC才能改变相关寄存器的值*/ADC10CTL0 &= ~ENC;/*16个ADC Clock , SHI信号自动执行 , 基准电压生成器打开(2.5V),使能中断*/ADC10CTL0 = ADC10SHT_2 + MSC + REFON + ADC10ON + ADC10IE+REF2_5V;ADC10CTL1 = INCH_5 + SHS_0 + ADC10SSEL_2 + CONSEQ_3 + ADC10DIV0;ADC10AE0 |= BIT4 + BIT5 ;//使能模拟输入脚A04,A05ADC10AE0|=0x30;//定义了每个块中的传输量为2个。转换结果是16位的,也就是传输2个16位数据就是一个块就会把中断标志位置位,触发中断。//因为是两个通道的,所以每个通道数据传输一次ADC10DTC1 = 0x04;__delay_cycles(30000);ADC10CTL0&=~ADC10IFG;//清除中断标志位ADC10CTL0 |= ENC;//ADC使能} [C] 纯文本查看 复制代码 #pragma vector =ADC10_VECTOR__interrupt void ADC10_ISR(void){ADC10CTL0&=~ADC10IFG;/*清除中断*/_disable_interrupts();printf("1=%d ",Result[0]);printf("2=%d ",Result[1]);printf("3=%d ",Result[2]);printf("4=%d rn",Result[3]);Channel_A=0;Channel_B=0;P1OUT^=BIT0;_enable_interrupts();} [C] 纯文本查看 复制代码 ClockInit();USART_Init();ADC_Init();P1DIR|=BIT0; while(1) { ADC10CTL0 &= ~ENC; ADC10SA = (int)Result;// 设置DTC的开始地址while (ADC10CTL1 & BUSY);//等待忙,ADC10 忙。 该位标志着一个有效的采样和转换操作 ADC10CTL0 |= ENC + ADC10SC;//使能转换并且开始转换 _delay_cycles(1000000); } 现象是我把P1.4和P1.5直接接地,对应2.5V的参考电压来说应该是输出0的但是这是现象: 然后我一个接地一个结VCC是这个现象: 我的问题是:第一我试了连续转换和单次通道转换(不是单通道),都是这个值。 我如果直接每次采样直接输出及定义DTC块大小为0x02的时候又是正确的 所以想请教下搞过DTC的大神 |
|
相关推荐
1个回答
|
|
帮顶......
|
|
|
|
只有小组成员才能发言,加入小组>>
3029个成员聚集在这个小组
加入小组2917 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3576 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2336 浏览 1 评论
4795 浏览 1 评论
2571 浏览 1 评论
1317浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3577浏览 2评论
2917浏览 1评论
1495浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 01:26 , Processed in 1.280440 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号