打印

dspic30f6011aAD转换的问题

[复制链接]
1642|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2012-7-29 12:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我买了块开发板,DSPIC6011A,引出了好些引脚,我焊了个电位器,把RB1(VREF-)接到地上。
运行例程,如下:
/******************************************
** 功能描述: ADC测试,将AN15的采样值通过串口发送**
******************************************/
#include "p30f6011A.h"
int failmemory[40];
unsigned long int i = 0;

void adcinitial()            //ADC初始化
{
TRISBbits.TRISB15 = 1;
    ADPCFG = 0x7fff;         //端口配置,清0为模拟引脚
    ADCHSbits.CH0SA = 0xf;   //输入通道选择
    ADCON3bits.ADCS = 0x28;  //转换时钟配置
    ADCON1 = 0x00;           //转换触发配置,手动模式
    ADCON2 = 0x00;           //参考电压AVCC,序列禁止
    ADCON1bits.ADON = 1;     //启动ADC模块
return;
}  
  
void sciinitial()   //SCI初始化
{
U1MODE=0x8000;  //使能UART,8,N,1
U1STA=0x0400;   //发送使能
//U1BRG=0X40;     //9600pds@10M*4Xpll
U1BRG=25;
return;
}   

int main()
{
INTCON1=0x0000;
INTCON2=0x0000;    //关闭所有中断  
    adcinitial();
    sciinitial();
while(1)
{
        for (i=0;i<200000;i++){}
        ADCON1bits.SAMP = 1;    //启动采样
        for (i=0;i<10;i++){}    //采样等待
        ADCON1bits.SAMP = 0;    //启动转换
     while (ADCON1bits.DONE==0){}
        i = ADCBUF0;
     U1TXREG = i>>8;
        while (U1STAbits.TRMT==0){}
        U1TXREG = i;
        while (U1STAbits.TRMT==0){}
}
}

把AD采样的数据发到PC机上,结果最大值只能显示700多。
我看数据手册上说DSPIC30F6011A的AD是12位的,理论上可以到4095.
为什么值这么小呢?请高手指教,谢谢!

沙发
chen3bing|  楼主 | 2012-7-29 15:37 | 只看该作者
高手支招啊!

使用特权

评论回复
板凳
chen3bing|  楼主 | 2012-7-30 08:57 | 只看该作者
没人知道吗?

使用特权

评论回复
地板
chen3bing|  楼主 | 2012-7-30 12:57 | 只看该作者
看来没人会了,结贴。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

粉丝