打印
[技术问答]

N79E815AT28如何关闭ADC?

[复制链接]
1010|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ADC, se, TE, top
请教大侠,我现在使用N79E815, 当IC进入stop后测得电流为1.23mA,逐步屏蔽功能时发现只要不开ADC,stop电流就为2.4uA. 我的ADC程序如下:

void main(void)
{
//端口初始化

//开启ADC7(P26)
ADCCON0&=0xF0;
ADCCON0|=0x07;
P2M1|=SET_BIT6;P2M2&=~SET_BIT6;              //P26_Input_Mode
AUXR1|=SET_BIT3;
set_ADCEN;

//主功能循环

//关闭ADC7(P26)
clr_ADCI;
clr_ADCS;
clr_ADCEN;
AUXR1&=~SET_BIT3;
ADCCON0=0;
P2M1&=~SET_BIT6;P2M2|=SET_BIT6;              //P26_PushPull_Mode
P26=0;

//进入stop模式
                KBLS1 = 0xBF;                       // Set P0.0~P0.5 & P0.7 Falling/Rsing Trigger
                KBLS0 = 0x00;
                KBIF = 0x00;                        // Clear KBF
                KBIE = 0x87;                                 // Enable KBI.n Interrupt
                EKB = 1;                            // Enable KBI Interrupt
                ENABLE_GLOBAL_INTERRUPT;

                PCON |= SET_BIT1;                   // Enter power down mode

                EKB = 0;
                KBIF = 0x00;


                //......
}

以上程序测得stop模式电流为1.23mA/3.3V

修改程序,不开启ADC,测得stop模式电流为2.4uA/3.3V
void main(void)
{
//端口初始化

P2M1&=~SET_BIT6;P2M2|=SET_BIT6;              //P26_PushPull_Mode
P26=0;


//主功能循环

//进入stop模式
                KBLS1 = 0xBF;                       // Set P0.0~P0.5 & P0.7 Falling/Rsing Trigger
                KBLS0 = 0x00;
                KBIF = 0x00;                        // Clear KBF
                KBIE = 0x87;                                 // Enable KBI.n Interrupt
                EKB = 1;                            // Enable KBI Interrupt
                ENABLE_GLOBAL_INTERRUPT;

                PCON |= SET_BIT1;                   // Enter power down mode

                EKB = 0;
                KBIF = 0x00;


                //......
}


请问大侠,如何正确关闭N79E815的ADC,非常感谢!
沙发
xixi2017| | 2018-4-29 19:04 | 只看该作者
当禁止ADC 功能时, 所有 ADC的相关SFR位将无效。
ADC 模块的功耗几乎为0。

使用特权

评论回复
板凳
xixi2017| | 2018-4-29 19:07 | 只看该作者
ADCEN

0: 关闭 ADC电路
1: 打开ADC电路

使用特权

评论回复
地板
xixi2017| | 2018-4-29 19:08 | 只看该作者

这个图上也给出了。或者你仔细看手册关于ADC的章节有介绍。你进入低功耗前,先关闭这个。

使用特权

评论回复
5
yiy| | 2018-4-29 19:28 | 只看该作者

ADCEN =0 ;
这个执行后不行吗

使用特权

评论回复
6
云龙起舞|  楼主 | 2018-4-30 09:47 | 只看该作者
有执行clr_ADCEN这个宏将ADCEN清零,但功耗还是高

使用特权

评论回复
7
云龙起舞|  楼主 | 2018-4-30 10:09 | 只看该作者
是不是我关闭ADC的语句先后顺序错了,哪位大侠给个关闭ADC的代码,不胜感激。

使用特权

评论回复
8
余三水| | 2018-4-30 10:38 | 只看该作者
禁止ADC的功能,不就关闭AD了吗?

使用特权

评论回复
9
云龙起舞|  楼主 | 2018-5-3 10:07 | 只看该作者
找到关不掉ADCEN的原因了,我是在79E815的sample code V1.2基础上写的程序,这版sample code的三个清ADC的macro错了,

#define clr_ADCEN   ADCCON1 |= CLR_BIT7;
#define clr_RCCLK   ADCCON1 |= CLR_BIT1;
#define clr_ADC0SEL ADCCON1 |= CLR_BIT0;

更新为最新版的sample code就可以关掉了。

使用特权

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

本版积分规则

11

主题

33

帖子

0

粉丝