4237|5

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

PIC32自带AD问题 [复制链接]

1芯积分

是想扫描四个通道,但是每次只能读到一个数据,就是AN8的数据。请大神指点一下呗,代码在下面,芯片是PIC32MX564-128H
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);
        }

}


最新回复

楼主你是怎么解决的?中断设置了吗?我设置了AD中断 不触发  详情 回复 发表于 2017-7-26 10:46
点赞 关注
 

回复
举报

419

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
本帖最后由 mzb2012 于 2016-7-30 11:52 编辑

建议把读缓冲区放在AD中断里,等到所有通道都测量完毕后产生中断,此时通道数据已准备完毕,在读取
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
mzb2012 发表于 2016-7-30 11:51
建议把读缓冲区放在AD中断里,等到所有通道都测量完毕后产生中断,此时通道数据已准备完毕,在读取

延迟很久也没有用啊,不知道我代码设置有没有问题,但是我是按照数据手册上来写的呀
 
 
 

回复

182

帖子

0

TA的资源

一粒金砂(中级)

4
 
楼主你的pic32是开发板吗
 
 
 

回复

182

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼主你的pic32是开发板吗
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼主你是怎么解决的?中断设置了吗?我设置了AD中断 不触发
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表