Microchip
直播中

金果子

8年用户 185经验值
私信 关注
[问答]

PIC32MZ怎么使用NMICNT来避免WDT复位?

嗨,PIC32参考手册第7.2节说:对于那些具有NMI重置的设备,通过将WDT或DMT重置事件向量化为NMI而不是立即强制重置来延迟WDT或DMT重置事件成为可能。延迟等于NMNT系统时钟数的持续时间,因为它被递减到零。在这个间隔期间,程序可以清除WDT或DMT标志位,如果需要的话,以避免重置。如果活动标志未被清除,则设备将在间隔结束时重置。NMICNT值可以设置为零,没有延迟,最多可达255个SYSCLK周期。这个特性在PIC32MZ2048ECM100上似乎不起作用。应该吗?如果不能完全取消复位,有没有办法延长宽限期?(例如,可以将堆栈保存到持久内存)。我有示例代码要发布,但论坛软件不允许。

回帖(7)

程娇

2019-9-6 14:47:58
看到这些代码会很好。你应该使用“代码”标签来发布它。你提前将NMNT设置为0xFF吗?当你进入NMI时,设置NMNT太晚了,如果它是0x00!休克:[8D]
举报

何丽

2019-9-6 14:54:06
我正在通过PIC32 MZ1024EFG100完成这项工作。到目前为止,我唯一的建议是:在写到NMICNT之前锁定系统,否则它将保持在零。eg您会看到,我尝试了几种变体,虽然NMICNT在我的设备上是16位,但是实际上只设置了较低的8位。当WD到期时被调用。这应该是一个真正的NMI中断处理程序吗?
举报

程娇

2019-9-6 15:00:28
这里是来自SysRealth.c的调用(我使用MPLAB 3.26)。
举报

潘沪城

2019-9-6 15:06:14
谢谢你的回复。UART输出粘贴在下面。作为文件附在本帖子上的源代码(论坛软件对粘贴代码标签也不满意)。应用程序是使用Harmony框架生成的,尽管直接寄存器访问被“确保”使用。预期的行为是UART将打印寄存器的单个转储。后面是连续的“....n”行,间隔等于WDT超时,即它永远不应该实际重置。实际行为是,_nmi_handler()确实运行(通过设置nmi_magic来证明),但是重置不能避免(通过重置之前的单行“....n”来证明)。
主C。(0.23 KB)-下载71次
举报

更多回帖

发帖
×
20
完善资料,
赚取积分