首页 » 技术分享 » 低电压检测

低电压检测

 

       低功耗对于电子产品的重要性不言而喻,电表也不例外。在停电的时候,为了保证外部电池的使用年限不低于5年,需要进入低功耗模式;最大程度的降低电路的电流,使得断电时板上电流不大于15uA。为了保证在停电时可以进行及时进入低功耗模式,需要判断电表何时掉电。NEC的UPD78F0527自带低电压检测电路。有两种方式检测电源是否低电压;比较电源电压(VDD) 和检测电压( VLVI)通过EXLVI脚的输入电压与检测电压(VEXLVI=1.21V)比较,并产生内部中断信号或内部复位信号。通过配置寄存器选择何种方式以及产生何种信号。

 

 

//低电压检测初始化,配置寄存器选择模式

void LVI_Init(void)

{    

     unsigned int i;

     LVION = 0;                      //Stop LVI    

     LVIMK =1 ;                      //Disabled interrupt signal    

     LVISEL = 1;                     //Set EXLVI enabled, Vexlvi=1.21v      

     PM12.0 = 1;                     //Set P12.0 input mode    

     LVIMD = 0;                      //Set LVI interrupt mode    

     LVIPR = 1;                      //Set LVI interrupt low priority    

     LVIIF = 0;                      //Clear the interrupt flag    

     LVION = 1;                      //Start LVI    

     for(i=0; i < 50; i++)         //延时等待开启比较器稳定 

      {        

         NOP();    

       }

}

 

//低电压检测,return=true为低电压,return=flash为正常电压,配合主程序while循环连续检测10次,都为低电压时判断掉电

Bool Power_CheckVLow(void)

{    

     static U8 Count=0, Count1=0;

     static Bool State=FALSE;

     LVION=1;    

     if(LVIF)    //LVIF为低电压检测寄存器(LVIM)第0位,为只读位

       {   //电压低

         Count1=0;  

         if(Count < 10)     

           {

               Count++;

           }    

         else 

           {     

               State = TRUE;    

           } 

       } 

     else

       {    //电压正常      

          Count = 0;

          if(Count1 < 10)   

            {

              Count1++;      

            }  

          else    

            {       

              State =  FALSE;  

            } 

        } 

       return State;

}

 

转载自原文链接, 如需删除请联系管理员。

原文链接:低电压检测,转载请注明来源!

0