-
时钟设置的是子系统时钟,用的是DCOCLK振荡器,频率为1M,可以通过设置DCOCLK
来改变频率,不过不设置为内部参考电压,则默认为Vcc:)
-
是b【i】+=a[i+j*8];这里有点东西没显示上去,抱歉 :titter:
-
这里的ADC10DTC1|=0X20;是指一共采集32次,并不是对每一个通道采集32次,也就是说如果有8个通道,则平均下来每个通道采集4次,至于采样的时间控制,可以从2方面下手:1,ADC10的总周期,是由ADC10的采样时间+13个时钟周期,这里你可以改变ADC10SR来改变采样速率,同时也可对时钟进行分频,具体的时间是多少就要你自己去算了;2:可以设ADC10DTC1|=0x01,采一次读一次值,采一次换一个通道,那么你就可以在每次读完后到下一次采集时加上延时函数(就相当于变成多个单通道采集):)
-
ADC10AE0是通道使能位,在这里我为了方便LED灯的测试而关闭了它,在实际采集模拟量的时候是需要打开的,在序列通道采集中INCH的作用是指采集通道的最大值,而不是像单通道中所指定的某个特定的通道:)
-
ADC10中有个DTC,它的作用是可以将得到的值自动进行传送(在CPU不工作的时候也可传送,这可以降低功耗),然后,值可以从ADC10SA中读取,这点不同于其他系列的ADC12:)
-
ADC10DTC1|=0X20;意味着八路通道一共采样32次,也就是说没路通道采集4次,
b+=a[i+j*8];意思是b【8】这个数组中放的分别是八路通道4次采集的值的和,为下面求平均做的准备:)
-
for(i=0;i
-
我一开始的理解有点偏差,不是每一个通道取32次,是所有通道一共取32次值我后面的回复有更改的:)
-
我那个去啊,你这程序写得又乱有辛苦,先自己改改吧:titter:
-
用的是编码表+滤波器的方法,那生成表的算法可否给我看一下:)
-
楼主,可否一起讲讲 USI, SPI,UART :faint:
-
确实可以直接读ADC10MEM中的值,不过用DTC的话可以大大增加程序效率,减化代码……:)
-
晕,那个数组框在发上去的时候没显示出来,是b 【i】和v【i】,要自己添加下,至于不接的时候会显示电压,是因为所用的引脚没有接地,所以一开始会有显示
-
弄个代码附件,方便下载嘛……
-
支持 :victory:
-
一个项目啊,感觉硬件知识匮乏……Cry:
-
这是更正后的代码:
#include"msp430g2553.h"
unsigned int a[32],b[8];
unsigned int i,j;
float v[8];
void main(void) {
WDTCTL=WDTPW+WDTHOLD;
P1OUT=0;
ADC10CTL0|=ADC10ON+ADC10IE+REFON+REF2_5V+SREF_1+MSC+ADC10SHT_2;//取内部参考电压2.5V,使采样时间为16xADC10CLK,
//增大采样时间以保证采样的准确性;
ADC10CTL1|=INCH_7+CONSEQ_3;//最大采样通道为P1^7,采用序列多次采样的模式,INCH_X决定了采样通道为AX~A0;
ADC10DTC1|=0X20;//一共采样32次
//ADC10AE0|=0XFF;//使能通道A7~A0;
P1DIR=BIT0+BIT6;
while(1)
{
ADC10CTL0&=~ENC;//关闭采样使能
while(ADC10CTL1&ADC10BUSY);//判断是否有采样或转换动作
ADC10CTL0|=ADC10SC+ENC;//开始采样
ADC10SA=(unsigned int )a;//将组数a的首地址作为采样的起始地址,首先是对A7~A0依次采样放入数组a【0】~a[7]中,在循环对A7~A0依次采样,放入数组a【8】~a【15】
//中,以此类推,向下循环直到32次结束
__bis_SR_register(LPM0_bits+GIE);//关闭CPU,开启总中断
for(i=0;i
-
不好意思,我理解上出了点偏差,经过再次调试,发现不是对一个通道取32次值后再到下一个通道,而是以此取值,就是a【0】装的是P1^4的值,a【1】装的是P1^3的值,a【2】装的是P1^2的值,a【3】装的是P1^1的值,a【4】装的是P1^0的值,然后又是a【5】装的是P1^4的值,至于为什么P1^2和P1^0都有用,调试发现INCH_x,那个x是几那么前面所有的通道都可以用,在CONSEQ_3的模式下,也就是说ADC10AE0无效,至于为什么,我也不知道,有哪位知道的解释一下,谢谢了,楼上那位的ADC10CTL0=ENS+ADC10SC这一句是开始转换的标志,
GIE的开启标志着进入中断,资料的话我只有ADC10的中文手册,其它的没了,真抱歉……
-
MSP430G2553.H
-
#include:)