找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6000|回复: 4
收起左侧

PIC32自带ADC的问题

[复制链接]
ID:135490 发表于 2016-7-29 20:41 | 显示全部楼层 |阅读模式
1黑币
我是想扫描四个通道,AN15,AN14,AN9,AN8,但是每次只能读取到一个数据,那就是AN8的。程序在下面,请大神指导,调了两天了。芯片是PIC32MX564

void __ADC10SCAN()
{
        uint a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;
        uint i = 0;
        AD1PCFG &= 0x3CFF; // All PORTB = Digital; RB15、14、9、8 = analog
        AD1CON1 = 0x00E4; // SSRC bit = 111 implies internal(自动转换)
        AD1CHS &= (~BIT(23)); // 选择VR- 作为MUX A 反相输入
        // In this example RB12/AN12 is the input
        AD1CSSL |= BIT(15) | BIT(14) | BIT(9) | BIT(8);        //扫描AN15、14、9、8
        AD1CON3 = 0x0F00; // Sample time = 15 TAD
        AD1CON2 &= 0x03E;                //四次产生中断,总是使用MUX A多路开关,一个16字缓冲区
        AD1CON2 |= BIT(10);        //扫描输入
       
       
        AD1CON1SET = 0x8000; // Turn ON the ADC
        while (1) // Repeat continuously
        {
//                AD1CON1 |= 0x0002; // 启动采样
//                while ( ! mAD1GetIntFlag() ) { }
                while (!(AD1CON1 & 0x0001)); // Conversion done?转换是否完成
                a = ADC1BUF0; // Yes, get ADC value
                b = ADC1BUF1; // Yes, get ADC value
                c = ADC1BUF2; // Yes, get ADC value
                d = ADC1BUF3; // Yes, get ADC value
                e = ADC1BUF4; // Yes, get ADC value
                f = ADC1BUF5; // Yes, get ADC value
                g = ADC1BUF6; // Yes, get ADC value
                h = ADC1BUF7; // Yes, get ADC value

                a = ADC1BUF0; // Yes, get ADC value
                b = ADC1BUF1; // Yes, get ADC value
                c = ADC1BUF2; // Yes, get ADC value
                d = ADC1BUF3; // Yes, get ADC value
                e = ADC1BUF4; // Yes, get ADC value
                f = ADC1BUF5; // Yes, get ADC value
                g = ADC1BUF6; // Yes, get ADC value
                h = ADC1BUF7; // Yes, get ADC value
                a = ADC1BUF8; // Yes, get ADC value
                b = ADC1BUF9; // Yes, get ADC value
                c = ADC1BUFA; // Yes, get ADC value
                d = ADC1BUFB; // Yes, get ADC value
                e = ADC1BUFC; // Yes, get ADC value
                f = ADC1BUFD; // Yes, get ADC value
                g = ADC1BUFE; // Yes, get ADC value
                h = ADC1BUFF; // Yes, get ADC value
                i++;
                AD1CON1 & (~0x0001);
        }

}

回复

使用道具 举报

ID:195453 发表于 2017-7-25 15:38 | 显示全部楼层
楼主你是怎么解决的
回复

使用道具 举报

ID:275095 发表于 2018-5-14 07:27 来自手机 | 显示全部楼层
每次采样之后,试着把ADON清零,在换模拟通道
回复

使用道具 举报

ID:330691 发表于 2018-5-16 13:32 | 显示全部楼层
我做过一个ad模块下的多路通道ad:在中断里面配置1ms定时中断,在定时中断里面计数,计数1配置好通道1并打开AD中断退出,计数2配置好通道2并打开AD中断退出,计数3配置好通道3并打开AD中断退出. 然后在AD中断里面判别是哪个通道就把加过赋值给相应的寄存器

if(ADIE&&ADIF)
        {
                        ADIF=0;
                        ADGO=0;
                        ADIE=0;
if(AD1flag==1)//AN1
                                {
                    if(volt_ad_num==0)
                    {
                        AD1flag=0;
                        volt_ad_8L=ADRESL;
                        volt_ad_8H=ADRESH;
                        volt_ad_value=volt_ad_8H;
                        volt_ad_value=volt_ad_value<<8;
                        volt_ad_value=volt_ad_value+volt_ad_8L;
                        volt_status=1;
                    }
                                }
回复

使用道具 举报

ID:330691 发表于 2018-5-16 13:34 | 显示全部楼层
配置通道的 程序如下
if(ad_change_time<10)ad_change_time++;   //AD切换间隔时间
                  if(ad_change_time==1)
                  {                                              
                ADCON0bits.CHS = 0x00;                        //AD采样通道设置到电流采样通道                         
                                  AD0flag=1;
                                  AD1flag=0;
                                  AD2flag=0;
                                  ADIF=0;
                                  ADIE=1;
                ADGO=1;
                PEIE=1;
                                  GIE=1;                                           
                  }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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