主题中讨论的其他器件:C2000WARE
大家好、
当前项目需要软件复位功能。 之前的迭代(微芯片 MCU)使用 GPIO 引脚将其自身的复位引脚拉低。 这种方法不适用于28020。 首先、GPIO 引脚在启动时为低电平、因此 MCU 永远不会脱离复位状态。 将一个反相器串联放置可实现启动、但是当尝试将引脚置为高电平时、它开始上升、然后在毫伏时挂起。
现在、我想使用 WDT 功能来进行复位。 我已经读取了几个线程、这些线程是指将 WDCR 设置为非法状态。 添加这样的行会导致代码进入杂草中。 单步执行代码、我在反汇编窗口中看到程序已在 estop 上停止、但我不确定它是如何到达的。
以下是导致错误的代码片段:
if(val1 == 9) { if(resetFlag_CPU) { resetFlag_CPU = 0; EALLOW; DINT; myWDog->WDCR = 0x17; // 0X17 Keeps div by in lower 3 bits and adds faulty check bit EINT; EDIS; } }
在注释掉第10行(上面)后、代码工作正常。 当未注释掉时、代码看起来像预期的那样执行、它在中运行的函数完成并返回、但这是它运行到 estop 时的结果。
我打算重置处理器并在 main()顶部重新启动代码。
有人能给我一些方向吗?
谢谢、
Robin