找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2130|回复: 1
打印 上一主题 下一主题
收起左侧

求助,PIC32MX系列 AD模块测试程序的问题

[复制链接]
跳转到指定楼层
楼主
ID:85898 发表于 2015-7-17 02:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人最近在用UBW32开发板,里面是PIC32MX795。 我自己写了一个测试AD模块的程序。大体思想就是想通过函数发生器所发出的方波来控制LED的闪烁。从而实现测试AD转换是否运行正常,大体就是给1就亮,给0就不亮。然而我在运行程序时LED却一直亮。没有出现随着方波频率变化的情况。我用的是2.2HZ接近3.3V的方波。总之我的程序如下。本人菜鸟一枚,各位大神如有懂得请帮我指一条明路!跪谢!!/*
** ADCLib.c
**
*/

// configuration bit settings, Fcy=72MHz, Fpb=36MHz
#pragma config POSCMOD=XT, FNOSC=PRIPLL
#pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_18, FPLLODIV=DIV_1
#pragma config FPBDIV=DIV_2, FWDTEN=OFF, CP=OFF, BWP=OFF

#include <p32xxxx.h>

#define POT 5                   // 10k potentiometer on AN5 input
#define AINPUTS 0xffdf          // Analog inputs for POT

// initilaize the ADC for single conversion, select input pins
void initADC( int amask)
{
  AD1PCFG = amask;             // select analog input pins
  AD1CON1 = 0x00E0;            // auto convert after end of sampling
  AD1CSSL = 0;                 // no scanning required
  AD1CON2 = 0;                 // use MUXA, AVss/AVdd used as Vref+/-
  AD1CON3 = 0x1F3F;            // max sample thime = 31Tad
  AD1CON1SET = 0x8000;         // turn on the ADC
} //initADC

int readADC( int ch)
{
  AD1CHSbits.CH0SA = ch;        // select analog input channel
  AD1CON1bits.SAMP = 1;         // start sampling
  while (!AD1CON1bits.DONE);    // wait to complete conversion
  return ADC1BUF0;              // read the conversion result
} // readADC


main()
{
  DDPCONbits.JTAGEN=0;
  TRISB=0x0020;
  initADC( AINPUTS);
  int a;
  a=readADC( POT);
  TRISE=0x0000;                 //PORTE pins are output,and connected to

  while( 1)
  {
     PORTE=a;
  }
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:283322 发表于 2019-11-17 17:43 | 只看该作者
主函数里面AD采样没有在死循环内,另外AD采样的是电压值,3.3V采样电压得数值为1024,所以赋值给PORTE不正确。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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