低电压检测

2019-04-13 16:01发布

       低功耗对于电子产品的重要性不言而喻,电表也不例外。在停电的时候,为了保证外部电池的使用年限不低于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; }