2015.10新用户注册送体验金登入: [技术问答] ML51 可以使用BOD欠压检测代替ADC采集电源电压?

金威娱乐开户导航
321|16
楼主
BOD欠压检测有8级电平1.8V, 2.0V, 2.4V, 2.7V, 3.0V, 3.7V 和 4.4V可以设置。
沙发
 楼主 | 2020-5-19 10:12 | 只看该作者
怎么配置欠压检测中断来着?
板凳
 楼主 | 2020-5-19 10:14 | 只看该作者
个人想法:供电电压为3.3v,第一次BOD欠压检测电平设置为2.4v,然后进入中断提示,再将BOD欠压检测电平设置为2.0v。
地板
| 2020-5-19 11:02 | 只看该作者
BOD功能用于保存数据的,比如掉电前保存数据,跟你说的这个用法不太一样。

评论

wzx1994 2020-5-19 11:18 回复TA
用法很多,只要有用就行 
5
| 2020-5-19 11:03 | 只看该作者
在BOD中断里保存掉电要保存的数据,非常有用的一个功能。TI的单片机都没这么高级的功能。

评论

wzx1994 2020-5-19 11:18 回复TA
大佬,ML51系列的玩过吗?怎么配置BOD中断呢? 
6
| 2020-5-19 20:36 | 只看该作者
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Website: http://www.sg223.com/702
  8. //  E-Mail : MicroC-8bit@nuvoton.com
  9. //***********************************************************************************************************

  10. //***********************************************************************************************************
  11. //  File Function: ML51 simple GPIO toggle out demo code
  12. //***********************************************************************************************************

  13. #include "ML51.h"
  14. /**
  15. * [url=home.php?mod=space&uid=247401]@brief[/url]       ACMP interrupt subroutine
  16. * @param       None
  17. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  18. * [url=home.php?mod=space&uid=1543424]@Details[/url]     
  19. */


  20. /**
  21. * @brief       ACMP negtive input use Bandgap voltage
  22. * @param       None
  23. * @return      None
  24. * @details     
  25. */
  26. void WKT_ISR(void) interrupt 17            // Vector [url=home.php?mod=space&uid=72445]@[/url]  0x8B
  27. {
  28.     clr_WKCON_WKTF;
  29.         P14 = 0;
  30. //      _delay_();
  31.       P14 = 1;
  32. //      _delay_();
  33.           P14 = 0;
  34. }

  35. void ACMP_ISR (void) interrupt 23
  36. {
  37.   SFRS = 0x00;
  38.   if ((ACMPSR&SET_BIT2)==SET_BIT2)
  39.   {
  40.     ACMPSR&=CLR_BIT2;
  41.     P14 ^=1;
  42.   }
  43.   else if ((ACMPSR&SET_BIT0)==SET_BIT0)
  44.   {
  45.     ACMPSR&=CLR_BIT0;
  46.     P14 ^=1;
  47.   }  
  48. }

  49. void main (void)
  50. {

  51.   unsigned char i;

  52. /* Setting Multi function pin setting for GPIO toggle
  53.    * include gipo.c in Common for GPIO mode setting
  54. */
  55.     MFP_P13_GPIO;
  56.     P13_QUASI_MODE;
  57.     MFP_P14_GPIO;
  58.     P14_QUASI_MODE;


  59.     for(i=0;i<0x05;i++)
  60.     {
  61.       P14 = 0;
  62.       _delay_();
  63.       P14 = 1;
  64.       _delay_();
  65.     }
  66.    
  67.     #if 1  
  68.     MFP_P23_ACMP0_P1;   
  69.     MFP_P24_ACMP0_N0;
  70.     MFP_P41_ACMP0_O;   

  71. ///* ACMP VBG intial
  72. ///* Initial ACMP0 P2.3 as positive and Bandgap as negetive input, Output to P4.1 */
  73. //    ACMP_Open(ACMP0, ACMP_CTL_POSSEL_P1, ACMP_CTL_NEGSEL_VBG,0, ACMP_CTL_ACMP0_OUTPUT_ENABLE, ACMP_CTL_HYSTERESIS_ENABLE);
  74. ///* Initial ACMP interrupt enable, wakeup function dis ble.*/
  75. //    ACMP_INTEnable(ACMP0, ACMP_CTL_WAKEUP_ENABLE, ACMP_CTL_INT_ENABLE);
  76.    
  77. /* ACMP VREF intial
  78.    * include acmp.c in Library for ACMP initial and interrupt setting. */
  79. //    VREF_Open(2);
  80. /* Initial ACMP0 P2.3 as positive and Bandgap as negetive input, Output to P4.1 */
  81.     ACMP_Open(ACMP0, ACMP_CTL_POSSEL_P1, ACMP_CTL_NEGSEL_CRV, ACMP_CTL_CRV_VREF, ACMP_CTL_ACMP0_OUTPUT_ENABLE, ACMP_CTL_HYSTERESIS_ENABLE);
  82. /* CRV Value = CRV source voltage * (2+CRV1CTL)/12. so for this example = VREF/2.*/
  83.     ACMP_CRVValue(ACMP0, 4);  
  84. /* Initial ACMP interrupt enable, wakeup function disable.*/
  85.     ACMP_INTEnable(ACMP0, ACMP_CTL_WAKEUP_ENABLE, ACMP_CTL_INT_ENABLE);
  86.   
  87.     WKT_Open(38400,256,100);
  88.     WKT_Interrupt(Enable);
  89.    
  90.     ENABLE_GLOBAL_INTERRUPT;
  91.     #endif

  92. //    BOD_Enable(VBOD24,BOD_RESET_ENABLE);
  93. //    BOD_LowPower_Enable(LPBOD_MODE2,BOD_FT_ENABLE);
  94.     LVR_Enable();
  95.     BOD_Disable();
  96.     POR_Disable();
  97. //    LVR_Disable();
  98. //    LowPowerLVR_Enable();
  99. //    BIAS_ALL_DIGITAL();
  100.     SFRS = 1;
  101.     CKDIV = 0x0c;
  102. /* Enable Low power run mode */
  103. //  FsysSelect(FSYS_LIRC);
  104. //  set_PCON_LPR;
  105.   //set_PCON_IDLE;
  106.   //set_PCON_PD;
  107.     while(1)
  108.     {   
  109.     //      P14 = 0;
  110.     //      P14 = 1;
  111.       set_PCON_PD;
  112.     }
  113.       
  114. }



复制代码


7
| 2020-5-19 20:37 | 只看该作者
BSP里面有例子的,楼主下载看看。
8
| 2020-5-19 20:38 | 只看该作者
在头文件power.h power.c里面定义了相关操作的库函数。
9
| 2020-5-19 23:47 | 只看该作者
BOD_Enable(VBOD24,BOD_RESET_ENABLE);

评论

wzx1994 2020-5-20 08:37 回复TA
这个是BOD复位使能。并没有中断使能 
10
| 2020-5-20 16:50 | 只看该作者
void BOD_ISR(void) interrupt 8           // Vector @  0x43
{
    clr_BODCON0_BOF;
}
11
| 2020-5-20 16:54 | 只看该作者
set_IE_EBOD
这个是使能BOD中断
12
| 2020-5-20 16:55 | 只看该作者
clr_IE_EBOD
这个是关闭BOD中断
13
| 2020-5-20 16:55 | 只看该作者
楼主看看头文件啊,2015.10新用户注册送体验金登入:里面都有

评论

wzx1994 2020-5-22 09:02 回复TA
看到了,大佬。就是不懂为啥手册上BOD那章节都没有介绍 
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

快速回复

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

论坛热帖

金威娱乐开户导航 永利游戏开户直营 返回顶部 返回列表
名城娱乐城官网 在美国赌场做何关 娱乐世界平台官网手机app www.2900.cc游戏 乐盈彩票网现金
太阳城手机存取款 上申博网登入 菲律宾申博太阳城安卓手机APP客户端下载登入 菲律宾申博太阳城 太阳城游戏 菲律宾申博太阳城代理官网手机客户端下载登入 澳门银河微博登入
太阳城手机现金网 菲律宾申博太阳城软件下载安装手机客户端下载登入 纽约赌场发财车 中国十大地下赌场 澳门菲律宾申博太阳城现金网网上娱乐场
申博游戏下载客户端登入 澳门威尼斯人 运河 几楼 www.7788msc.com 澳门搭车贵吗登入 圣淘沙 赌场 免费登入