Microchip
直播中

汪潇潇

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

看门狗timeout问题

嗨,我用PIC16F87设备和MPLAB X与XC8。当WDT重置设备时,我可以在变量窗口中看到_u timeout在第一次启动时是1,当发生WDT时为0。但是代码没有回应。我用这个测试它:即使当变量窗口中的_u resetbits、u powerdown和_u timeout显示为1时,代码也被跳过。我还设置了“Backup reset.s标志”(尽管根据手册,这应该不是必须的)。问候,CJ。

回帖(3)

丁亚念

2019-9-12 08:31:58
不能。C运行时启动代码会破坏STATUS寄存器。u resetbits、u powerdown和_u timeout ARE编译器变量,并且手册特别告诉您以这种方式使用它们。请参阅XC8手册中的5.101.4状态寄存器保存,您没有提到您使用的XC8版本。只有最新的版本才“没有必要”手动启用它。您的代码从不读取“i”变量,所以如果您不将其声明为“volatile”,编译器可以自由地优化它。
举报

罗茵

2019-9-12 09:20:23
嗨,刚才有一个bug报告在几天前出现在这个问题上。外部位对象存在一个银行选择问题。选择所需存储库的代码没有考虑对象的地址是位地址(而不是字节地址),因此它选择了错误的存储库。您将能够使用resetbits对象并从该对象中屏蔽位,但是使用单独的位对象本身可能会有问题。
举报

贾熹

2019-9-12 09:31:16
嗨,杰夫,好的,这就解释了这个问题。幸运的是,RealSeTeBIT工作,所以程序也将工作。谢谢和问候,CJ。
举报

更多回帖

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