[8/16位单片机] AN3电压一直是0.42,是什么原因

[复制链接]
1041|16
 楼主 | 2019-12-25 09:30 | 显示全部楼层 |阅读模式
58445e027cb16e0a9.png
实际万用表量这个RA4/AN3口电压一直是0.42V,请问是哪里设置不对么?




word ADC_Get(byte channel) //run time :307us/830cycles
{
   byte i = 0;
   word  adc_val,TempVal = 0;

   if( channel < GetMaxNum )
   {
       GO_DONE = 0;
       ADCON1 = 0X50;   //set clock,Fosc/16;

       if( channel < 4 )
       {
      
985955e027c84c6854.png

使用特权

评论回复
 楼主 | 2019-12-25 11:01 | 显示全部楼层
没人回复么

使用特权

评论回复
| 2019-12-25 11:15 | 显示全部楼层
断开RA4/AN3是否正常。该管脚是否置为模拟输入了?

使用特权

评论回复
| 2019-12-25 11:37 | 显示全部楼层
你想配置成什么功能?

使用特权

评论回复
| 2019-12-25 11:38 | 显示全部楼层
221125e02d99a640ae.png
看图是0.33倍的那个电池。

使用特权

评论回复
| 2019-12-25 11:39 | 显示全部楼层
你电池是多大的电压?测了没,你接这的目的是什么?如果是ADC的话, 那要配置对,先设置为输入模式,然后配置成ADC

使用特权

评论回复
 楼主 | 2019-12-25 13:36 | 显示全部楼层
598330983 发表于 2019-12-25 11:39
你电池是多大的电压?测了没,你接这的目的是什么?如果是ADC的话, 那要配置对,先设置为输入模式,然后配 ...

就是一个检测电池电压,
配置为模拟输入了,

TRISAbits.TRISA4=1;
PORTAbits.RA4=1;  
ANSELbits.ANS3=1;
ADCON0=0x8D;
ADCON1 = 0X50;



电池电压量了是3.95,但是这个位置量了都是0.42

使用特权

评论回复
 楼主 | 2019-12-25 13:37 | 显示全部楼层
598330983 发表于 2019-12-25 11:37
你想配置成什么功能?

配置成ADC输入,检测这个这个电压


就是一个检测电池电压,
配置为模拟输入了,

TRISAbits.TRISA4=1;
PORTAbits.RA4=1;  
ANSELbits.ANS3=1;
ADCON0=0x8D;
ADCON1 = 0X50;

使用特权

评论回复
| 2019-12-25 22:08 | 显示全部楼层
274915e036d5b0d028.png

使用特权

评论回复
| 2019-12-26 09:01 | 显示全部楼层
AD都是MCC配的了。
不行你把引脚抬起来看看

使用特权

评论回复
 楼主 | 2019-12-26 10:02 | 显示全部楼层
asdsfgwsafd 发表于 2019-12-26 09:01
AD都是MCC配的了。
不行你把引脚抬起来看看

换到7脚就可以,an3就不行,an3是不是有什么参数配置?

使用特权

评论回复
 楼主 | 2019-12-26 10:04 | 显示全部楼层
lcczg 发表于 2019-12-25 11:15
断开RA4/AN3是否正常。该管脚是否置为模拟输入了?

换到AN7就可以,现在想知道AN3有什么特殊的配置么 ?

使用特权

评论回复
| 2019-12-26 10:31 | 显示全部楼层
fengyu2513 发表于 2019-12-26 10:04
换到AN7就可以,现在想知道AN3有什么特殊的配置么 ?

提供下你的配置字?是不是配置成CLKOUT了?看下数据手册这个章节“12.1Configuration Bits”

使用特权

评论回复
 楼主 | 2019-12-26 13:27 | 显示全部楼层
lcczg 发表于 2019-12-26 10:31
提供下你的配置字?是不是配置成CLKOUT了?看下数据手册这个章节“12.1Configuration Bits” ...

// CONFIG
#pragma config FOSC = INTOSCCLK // Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config IOSCFS = 8MHZ    // Internal Oscillator Frequency Select bit (8 MHz)
#pragma config BOREN = ON       // Brown-out Reset Selection bits (BOR enabled)





TRISAbits.TRISA4=1;
PORTAbits.RA4=1;  
ANSELbits.ANS3=1;
ADCON0=0x8D;
ADCON1 = 0X50;

使用特权

评论回复
| 2019-12-26 14:04 | 显示全部楼层
本帖最后由 lcczg 于 2019-12-26 14:11 编辑
fengyu2513 发表于 2019-12-26 13:27
// CONFIG
#pragma config FOSC = INTOSCCLK // Oscillator Selection bits (INTOSC oscillator: CLKOUT  ...

#pragma config FOSC = INTOSCCLK // Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN) 这里RA4/AN3口是CLKOUT了。
你将它置为INTOSCIO就好了 INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function onRA5/OSC1/CLKIN
另外示波器看到话应该可以看到中心电平0.42V的时钟

使用特权

评论回复
| 2019-12-28 20:29 | 显示全部楼层
对,断开那个引脚,然后看看示波器。

使用特权

评论回复
| 2019-12-31 15:44 | 显示全部楼层
R11和R12电阻太大,导致该电路输出阻抗很大,容易受单片机管脚和万用表内阻影响,导致测量不准!最好的办法是减小这2个电阻阻值,或者加一级跟随器。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表