[技术问答] 关于N76E003的WDT问题

[复制链接]
5303|12
 楼主| 一株蒜 发表于 2017-7-3 15:51 | 显示全部楼层 |阅读模式
目前可以用WDT实现超时复位功能,但在使用它的通用定时器功能不成功,个人感觉这两个功能的切换就是对CONFIG4这个寄存器进行配置,通用定时器配置如下:
static void CONFIG4_Config(UINT8 u8_data)
{
    IAPAL = 0x04;
    IAPAH = 0x00;
    set_IAPEN;
    set_CFUEN;
    CONFIG_BYTE_WRITE;
    IAPFD = u8_data;
    set_IAPGO;
    while((CHPCON&SET_BIT6)==SET_BIT6);
    clr_CFUEN;
    clr_IAPEN;
}
void WatchDog_Init(void)
{
        clr_WDTRF;
        CONFIG4_Config(0xaf);
        TA=0xAA;
        TA=0x55;
        WDCON=0x07;
        set_WDCLR;        //Clear WDT timer
        while((WDCON|~SET_BIT6)==0xFF);        //confirm WDT clear is ok before into power down mode
        set_WDTR;                //WDT run
#if 1
        set_EWDT;  
#endif
}
不知道问题出在哪里,配置不成功,一直是超时复位功能,请大神们指点一下,不胜感激!!!
 楼主| 一株蒜 发表于 2017-7-3 15:54 | 显示全部楼层
发帖的时候CONFIG4_Config(0xaf);写错了,应该是CONFIG4_Config(0xff);,可是配置成0xff也用不了普通定时功能
598330983 发表于 2017-7-3 18:08 | 显示全部楼层
芯片不是有定时器吗,这个看门狗定时器,一般就是用于超时复位啊。
玛尼玛尼哄 发表于 2017-7-5 18:29 | 显示全部楼层
没试过这个用法。如果是普通定时器,就不是WDT了。
玛尼玛尼哄 发表于 2017-7-5 18:32 | 显示全部楼层
不过确实这个芯片功能强大,支持这个功能。
QQ截图20170705183054.png
不过官方提供的有汇编代码,可以根据这个汇编的操作,写C语言的。
QQ截图20170705183154.png
玛尼玛尼哄 发表于 2017-7-5 18:34 | 显示全部楼层
(CONFIG4[7:4]) 是 FH
而 CONFIG4_Config(0xaf);
这个是全部的config4吧?人家的意思是高4位是高电平啊。。你的这个配置显然不对啊。
玛尼玛尼哄 发表于 2017-7-5 18:39 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Watch Dog as pure timer with interrupt demo code
  14. //***********************************************************************************************************

  15. #include <stdio.h>
  16. #include "N76E003.h"
  17. #include "Common.h"
  18. #include "Delay.h"
  19. #include "SFR_Macro.h"
  20. #include "Function_Define.h"


  21. /************************************************************************************************************
  22. *    WDT interrupt sub-routine
  23. ************************************************************************************************************/
  24. void WDT_ISR (void)   interrupt 10
  25. {

  26.         //---------toggle GPIO1---------       
  27.                 clr_GPIO1;
  28.                 Timer0_Delay1ms(50);
  29.                 set_GPIO1;
  30.                 Timer0_Delay1ms(50);
  31.                 clr_GPIO1;
  32.                 Timer0_Delay1ms(50);
  33.                 set_GPIO1;
  34.                 Timer0_Delay1ms(50);
  35.         //---------end toggle GPIO1--------
  36.                 clr_WDTF;
  37.                 set_WDCLR;
  38. }

  39. /************************************************************************************************************
  40. *    Main function
  41. ************************************************************************************************************/
  42. void main (void)
  43. {
  44. /* Note
  45.   WDT timer base is LIRC 10Khz
  46. */
  47.    
  48.   Set_All_GPIO_Quasi_Mode;
  49.        
  50. //WDT init
  51. //--------------------------------------------------------
  52. //Warning:
  53. //Pleaes always check CONFIG WDT disable first
  54. //only when WDT reset disable, WDT use as pure timer
  55. //--------------------------------------------------------
  56.           TA=0xAA;TA=0x55;WDCON=0x06;                  //Setting WDT prescale
  57.                 set_WDTR;                       //WDT run
  58.                 set_WDCLR;                                                                                        //Clear WDT timer
  59.                 set_EWDT;
  60.                 EA =1;

  61. #if 1
  62.     while(1);
  63. #else
  64.                 set_WIDPD;                                                                                         //WDT run in POWER DOWM mode setting if needed
  65.                 while (1)
  66.                 {
  67.                         set_PD;
  68.                 //---------toggle GPIO1---------       
  69.                         clr_GPIO1;
  70.                         Timer1_Delay1ms(100);
  71.                         set_GPIO1;
  72.                         Timer1_Delay1ms(100);
  73.                         clr_GPIO1;
  74.                         Timer1_Delay1ms(100);
  75.                         set_GPIO1;
  76.                         Timer1_Delay1ms(100);
  77.                 //---------end toggle GPIO1---------
  78.                 }
  79. #endif
  80. }
玛尼玛尼哄 发表于 2017-7-5 18:39 | 显示全部楼层
应该是参考这个例子。这个不是复位系统的。是中断的。
dongnanxibei 发表于 2017-7-5 22:06 | 显示全部楼层
学习学习,新唐的WDT真给力。
heisexingqisi 发表于 2017-7-5 23:06 | 显示全部楼层
看不懂那个config4函数是怎么实现的。
 楼主| 一株蒜 发表于 2017-7-6 08:56 | 显示全部楼层
玛尼玛尼哄 发表于 2017-7-5 18:34
(CONFIG4[7:4]) 是 FH
而 CONFIG4_Config(0xaf);
这个是全部的config4吧?人家的意思是高4位是高电平啊。。 ...

这个是我写这个帖子写错了,我代码里是写CONFIG4_Config(0xff);的,没什么作用,不过在keil的 debug里可以设置WDT的功能,不过现在都还做不了软件设置实现。
玛尼玛尼哄 发表于 2017-7-11 20:38 | 显示全部楼层
晕死,这个有啥特别的?不会这个芯片也有什么保护吧,不该啊。
15228869197 发表于 2018-7-2 10:03 | 显示全部楼层
一株蒜 发表于 2017-7-6 08:56
这个是我写这个帖子写错了,我代码里是写CONFIG4_Config(0xff);的,没什么作用,不过在keil的 debug里可 ...

楼主,问题解决了吗,我也遇到了相同的情况,打开看门狗后,关闭不了了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

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