Microchip
直播中

邓天文

7年用户 268经验值
私信 关注
[问答]

从PIC18F26K42移植到PIC16F886的项目上的随机复位

晚上好,我们的产品是随着时间演变的,从PIC16F886开始,用各种PIC18代替,当前版本有PIC18F26K42。租用固件(因为随着时间的推移添加更多的功能)…哇,我用了16F8xx已经很久了,黑暗的时代:我已经适应了丰富的RAM、tiMERS和其他外围设备,无论如何,在改变所有的硬件定义、中断例程回到单个块和其他(见下文)项目编译之后。然而,在一个随机的时刻,它重置,然后它不确定地在一个循环内,我真的不知道它在哪里。这可能是启动程序的一部分,我将能够在周一进一步研究。从PIC18到PIC16的主要重大变化:在PIC18中,许多表从闪存加载到ram以加速执行,这对于只有384字节的16F是不可能的。我现在禁用了看门狗。n我触发问题,同时调试:-如果我点击暂停,然后恢复执行,它可能触发问题-如果我点击暂停,然后在从表读取之前恢复执行,它将触发问题更加频繁-如果我点击中断例程内的暂停,然后恢复它将触发问题似乎更频繁,如果我禁用中断,问题从来没有出现。中断例程是这样的。老实说,我不知道从哪里开始,除了开始重写整个固件,一次一小步,这样我就能确定问题何时出现,我希望我能当MCU有第一次重置时,获得一些信息。如何使应用程序在重置向量上中断,而不是在主(?)入口点上?

回帖(11)

tijing忽忽

2020-3-30 07:48:31
可能的页面问题?(18F不使用PaSeSe)?你从ISR内部调用函数吗?堆栈溢出/下溢?
举报

蒋喜玲

2020-3-30 08:06:27
我认为这是一个程序集问题,看起来OPs代码是C。无论如何,我很想了解如何避免pic18xxk42上的pagesel。我对汇编不太熟练,但我在ISRs的K42内嵌程序集上使用PaxESEL访问不同页面中的SFR。我把所有的打字都浪费了吗?
举报

蒋喜玲

2020-3-30 08:38:48
哦!
举报

夏涌革

2020-3-30 08:55:38
这些不应该是逻辑.(&&),而不是逐位(&):而且,RCIF在PIR1寄存器中,但是RCIE在PIE1寄存器中。它们恰好在同一位置(位5),因此位和放大器可能起作用。
举报

更多回帖

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