[技术问答] N79E815AT28如何关闭ADC?

[复制链接]
1330|8
 楼主| 云龙起舞 发表于 2018-4-29 17:09 | 显示全部楼层 |阅读模式
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 | 显示全部楼层
无标题.png
这个图上也给出了。或者你仔细看手册关于ADC的章节有介绍。你进入低功耗前,先关闭这个。
yiy 发表于 2018-4-29 19:28 | 显示全部楼层

ADCEN =0 ;
这个执行后不行吗
 楼主| 云龙起舞 发表于 2018-4-30 09:47 | 显示全部楼层
有执行clr_ADCEN这个宏将ADCEN清零,但功耗还是高
 楼主| 云龙起舞 发表于 2018-4-30 10:09 | 显示全部楼层
是不是我关闭ADC的语句先后顺序错了,哪位大侠给个关闭ADC的代码,不胜感激。
余三水 发表于 2018-4-30 10:38 | 显示全部楼层
禁止ADC的功能,不就关闭AD了吗?
 楼主| 云龙起舞 发表于 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

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