11个帖子/ 0新
最后一篇
Drnick1.
离线
最后一次露面:4 years 6 months ago
加入:2014-07-01 11:55
测试看门狗

How can I check correct operation of my code using the watchdog from within Keil.
我可以一步一切到敝中断处理程序,but when it gets to the end of the routine it executes the software reset
setword16(sys_ctrl_reg,(getword16(sys_ctrl_reg)&reswap_adr0)| sw_reset);
然后它报告它无法启动核心。我假设已经发生了软件重置,但我无法断开开发板的连接控制。

如果我尝试在调试器外部运行程序(通过在达到此点之前停止调试器),它仍然没有正确重置。

So how do I get to run my program with WDOG enabled to reset the device and check its working ok without burning the OTP. Is it possible?

我正在运行beacon3.40.6作为一个基础。

使用WDOG强制设备重置是直接的吗?

设备:
Drnick1.
离线
最后一次露面:4 years 6 months ago
加入:2014-07-01 11:55
当看门狗火灾时,它

当看门狗触发时,它最终将在NMI Handler例程中进入以下行(BeaCon3.40.6)
setword16(sys_ctrl_reg,(getword16(sys_ctrl_reg)&reswap_adr0)| sw_reset);
这是重置系统的指令。执行此代码后,没有任何反应。
〜remap_adr0实际上是什么意思。在数据表中提供的4个可能的值 - 默认值为00(ROM),这意味着它将从ROM中的位置0开始执行。
我有限的理解说,我应该从系统RAM重新启动,因为这是我的程序所在的位置(假设我没有丢失电源或进入深度睡眠模式。)
任何人都可以确认我需要将remap_adr0从其默认设置更改,何时不需要这样做?

Drnick1.
离线
最后一次露面:4 years 6 months ago
加入:2014-07-01 11:55
setword16(sys_ctrl_reg,

setword16(sys_ctrl_reg,(getword16(sys_ctrl_reg)&reswap_adr0)| sw_reset);
因此,此行的目的是有效地使对应于REMAP_ADR0的比特为零,即它强制默认值。
如果我改变了线
setword16(sys_ctrl_reg,(GetWord16(SYS_CTRL_REG)) | SW_RESET );
在调用此命令之前,使REMAP_ADR0 = 0x02(SYSRAM)出现,然后看门狗定时器到期导致“正确”重置,并且代码再次从开头运行。
我还可以设置工作的断点,所以一切看起来都很好!

我仍然不确定与看门狗一起去OTP时会发生什么。是该方案的默认设置确定吗?

mt_dialog.
离线
最后一次露面:2个月3天前
职员
加入:2015-06-08 11:34
嗨drnick1,

嗨drnick1,

是的,remap_adr0是为了确保remap_adr0设置为默认地址。默认设置应强制引导加载程序运行,并且可能会从OTP读取。

谢谢mt_dialog.

Kobyfr_mag.
离线
最后一次露面:5年1个月前
加入:2015-06-02 12:48
你好。

你好。
我尝试使用SDK_Driver看门狗API初始化看门狗。
我已经启用了看门狗//#undef cfg_wdog
我试过了wdg_init(1)andwdg_init(0)
即使我没有重置看门狗,我的软件似乎没有重启:
1.它不会再次点亮LED(我在启动时有一个闪烁的LED)
2.我的Keil IDE调试会话不会点击nmi_handlerc
Adding code to test the watchdog counter, states its stuck at 0x00FF

mt_dialog.
离线
最后一次露面:2个月3天前
职员
加入:2015-06-08 11:34
嗨Kobyfr_mag,

嗨Kobyfr_mag,

您是否在验证最终会崩溃软件的条件并触发看门狗(意思是陷入无端循环)?您在使用看门狗时是否在睡眠模式下,每次从睡眠中唤醒时,看门狗都重置。您不必明确启用它,只需定义它,SDK将负责初始化。另外还有说,当在睡眠模式下看门狗重新加载到每个唤醒中,它也在Main_Func()函数底部的Arch_main.c文件中重新加载,您可以评论下面的片段并测试它:

如果(USE_WDOG)
wdg_reload(watchdog_default_period);

谢谢mt_dialog.

Kobyfr_mag.
离线
最后一次露面:5年1个月前
加入:2015-06-02 12:48
1. Yes I'm trying to cause a

1.是的,我正试图导致看门狗着火,以便测试它是运作的。我不知道是否确实尽一切才能激活它。
我评论了Arch_Main.cwdg_reload(watchdog_default_period)
3.我的init序列是3个快速LED闪烁。(600毫秒总持续时间)
4. my endless loop is slow LED flashes (should cause the watchdog do fire after ~2 seconds)
5.通过JLINK调试器将我的程序加载到UVISION中的RAM。
6. I allowed it to free run
7.我观察了一次快速的LED闪光序列,然后慢慢LED闪光序列不间断。==>没有SW RESET ==>没有发生看门狗

我有什么需要做的,以便看门狗射击,并导致重置?

mt_dialog.
离线
最后一次露面:2个月3天前
职员
加入:2015-06-08 11:34
嗨Kobyfr_mag,

嗨Kobyfr_mag,

我刚刚注意到第5号帖子,你评论了看门狗的定义吗?尝试#define cfg_wdg不要发表评论,如果你用sdk发表评论它不会启用它。

请尝试禁用睡眠模式并留下WDG_RELOAD(WATKDOG_DEFAULT_PERIOD)注释,通过在新鲜模板中使用KEIL ENVIROMENT来运行它。如果您这样做,您的代码将转到NMI_Handler()。

谢谢mt_dialog.

Kobyfr_mag.
离线
最后一次露面:5年1个月前
加入:2015-06-02 12:48
谢谢你。

谢谢你。
添加#define CGF_WDOG做了诀窍。
因为while(1)I inserted, I hit NMI_Handler and the watchdog keeps firing every 2.5 seconds.

chen123
离线
最后一次露面:2个月4周前
加入:2021-01-07 01:43
你能告诉我如何
  • 你能告诉我如何to do the software reset operation for DA14580
PM_DIALOG.
离线
最后一次露面:21 hours 18 min ago
职员
加入:2018-02-08 11:03
嗨Chen123,

嗨Chen123,

谢谢你的评论。这个论坛线程非常古老和关闭,所以你可以提出一个新的吗?

谢谢,PM_DIALOG.