搜索
bottom↓
回复: 3

用过430 SD16的朋友请进帮忙看一下为什么我数据采集错误?

[复制链接]

出50入4汤圆

发表于 2011-1-11 23:47:53 | 显示全部楼层 |阅读模式
主要用来采信四个通道数据 0 差分数据,暂时没调,5 电池电压 6 内部温度传感器,7 偏置

我按我如下程序写:单独通道5 出现的是 38F5  之后一直是8000
                  通道6     4F50    之后8000
                  通道7    FFF8    之后都是8000

而且数据很慢,四五秒才有一次数据采集过来


结果也和我计算出来的不一样,,,而且也只出现 一次值,,不知道哪设置错误,帮忙看下,主要部分




BCSCTL1 = CALBC1_1MHZ;   // Set DCO to 1MHz 校正数据
DCOCTL  = CALDCO_1MHZ;   // 校正
BCSCTL1 |= DIVA_0;       // ACLK 不分频
BCSCTL2 = 0;             // MCLK = SMCLK = default DCO。
WDTCTL = WDT_ADLY_250;   // 看门狗配置  选择定时模式,并选时钟源为ACLK,即定时时间为ACLK/32768(WDTISx=0)
    IE1 |= WDTIE;            // Enable WDT interrupt

/******************************************************************************
函 数:
      void Config_SD16(void)
功 能:
        基本参数配置
说 明:
        2013系列单通道转换,手动切换, 配置公共参数
*******************************************************************************/
void Config_SD16(void)
{
// SD16AE = SD16AE0+SD16AE1;           // 模拟输入允许  P1.0 A0+,P1.1 A1-
  SD16CTL = SD16SSEL_1 + SD16DIV_1;     // SLCK=MCLK=1M   2分频 f=500KHz,OSR=1024,参考电源暂不开启,转换前开,转换后关。节能!
  SD16CCTL0 = SD16DF + SD16OSR_1024 + SD16SNGL;  // + SD16UNI // 输出格式为2的补码(8000--7FFF)+过采样速率1024+单次转换 双极性模式(默认模式)
  SD16INCTL0 = SD16INTDLY_0;// + SD16GAIN_32 + SD16INCH_0;      // 中断延时(4第四次采样中断)+增益为x32+通道为0
}
/*******************************************************************************
函 数:
        Turn on_Sampling();   
功 能:
       打开参考电源,并启动AD转换
说 明:
       看门狗定时采集数据时打开
*******************************************************************************/
void Turn_on_Sampling(void)         
{
//SD16CTL |= (SD16VMIDON + SD16REFON); // 1.2V的参考电源。带缓冲器输出
  SD16CTL |= SD16REFON;               // 只打开1.2V参考源
  Delay_us(100);                       // 延时 300us 确保电路稳定。延时时间=(5x60+6)x1us=306us(MCLK=1Mhz)。
  SD16CCTL0 |=(SD16SC + SD16IE);       // 启动 SD16 进行转换并且允许 SD16 中断。
}
/*******************************************************************************
函 数:
        Close_Sampling();   
功 能:
       关闭AD采集及相关电路的电源
说 明:

*******************************************************************************/
void Close_Sampling(void)   
{
  SD16CCTL0 &= ~(SD16SC + SD16IE);      // SD16 停止转换及禁止中断。
//SD16CTL &= ~(SD16VMIDON + SD16REFON); // 关闭参考电压源并且缓冲器禁止。
}

/******************************************************************************
函  数:
        void Choose_CH(uchar ch)
功 能:
        切换通道,根据通道不同配置不同的AD寄存器配置
说  明:
         通道 5,        // Vcc          检测供电电压,采样电压为VCC/11,如果VCC<2.2 电量不足,参考电压1.2V,1倍增益
         通道 6,        // Temperature 检测内部温度传感器(二极管PN结温度)
         通道 7,        // offset       “+”和“-”之间的短路连接,可以用于校准SD16A的输入级补偿。
*******************************************************************************/
void Choose_CH(uchar ch)
{
SD16INCTL0 = SD16INTDLY_0 + SD16GAIN_1 + ch;  // nterrupt Delay(4) Gain x1
SD16CCTL0 = SD16DF + SD16OSR_1024 + SD16SNGL;  // + SD16UNI // 输出格式为2的补码(8000--7FFF)+过采样速率1024+单次转换 双极性模式(默认模式)
}


#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{

// Close_Sampling();         // SD16停止转换,禁止中断及关闭采集电路的电源。

   adc_last_val= SD16MEM0;                    // Store value
   LPM3; //回到低功耗模式
}

#pragma vector=WDT_VECTOR        
__interrupt void watchdog_timer(void)
{
   Turn_on_Sampling(); // 接通采集电路的电源启动采集。
   LPM3_EXIT;          //退出低功耗模式,在AD完成后重新开启
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出50入4汤圆

 楼主| 发表于 2011-1-12 12:24:16 | 显示全部楼层
自己顶

上整个个工程 24L01无线发射,这个还蛮好用的

帮忙改错啊兄弟们啊
点击此处下载 ourdev_610731PUHLXU.rar(文件大小:47K) (原文件名:MSP430_24L01.rar)

出0入0汤圆

发表于 2011-2-17 17:26:35 | 显示全部楼层
整得咋样了?

出0入0汤圆

发表于 2011-5-31 10:32:43 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-24 20:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表