发新帖我要提问
12
返回列表

PICC+ICD程序乱跑咋回事?附上了简洁的源程序,大侠看看

[复制链接]
楼主: 秋雨
手机看帖
扫描二维码
随时随地手机跟帖
yewuyi| | 2011-8-8 08:32 | 显示全部楼层
因为TMR1IE一直是打开的,就不需要判断TMRIE了吧?
这个改了也不管用,不过总算找到一点规律。我的TMR0改为256uS中断一次时,上电就跑到asm("nop"),
当把TMR0的分频器改为1:32时,就是8MS中断一次时,跑飞的概率低 ...
秋雨 发表于 2011-8-5 21:17


只要有中断容许位时而打开时而关闭,就必须辅助使能位一起判断,另外,处于移植和避免麻烦的需要,在中断函数中,尽量别管它,所有的中断都用使能位和标志位一起判断,这也浪费不了几条指令。

使用特权

评论回复
yewuyi| | 2011-8-8 08:36 | 显示全部楼层
di();
ei();
在中断函数中加入这个干什么?

如果是用它来控制中断开关的话,则抓紧删除掉, ei();是一种临界代码,会造成不正常的中断嵌套。

使用特权

评论回复
headwolf_83| | 2011-8-10 17:06 | 显示全部楼层
DEBUG状态下,不要用编译器的PRO模式,否则就是跳来跳去了。用STD模式。或者就是STD版本的编译器。记得COMPILE FOR ICD或者LINK FOR ICD2(不同版本不一样),要钩。

使用特权

评论回复
yuandm1| | 2011-11-14 22:35 | 显示全部楼层
弱弱的问下,
di(),ei()。今天看到这两个,是pic单片机里面特有的函数吗,我百度了一下,找不到资料。

使用特权

评论回复
yewuyi| | 2011-11-15 08:21 | 显示全部楼层
弱弱的问下,
di(),ei()。今天看到这两个,是pic单片机里面特有的函数吗,我百度了一下,找不到资料。
yuandm1 发表于 2011-11-14 22:35


是编译器中的特征函数。

使用特权

评论回复
asspeed| | 2011-11-15 10:54 | 显示全部楼层
编译器自定义的宏而已!

使用特权

评论回复
MIKEZHONG| | 2011-11-15 12:09 | 显示全部楼层
关于程序乱跳的我也有遇到。
我的情况不一样,

当我用PIC16F1937时,用ICD2调试完全正常,可单步,等,但是用PIC16F723(当然程序不一样),就会出现乱跳,而且我试过在程序的开始(main后第一条语句)设个断点,居然不会跑到断点处。但是我烧到实际的IC中,程序完全正常,有AD,I2C Slave,PWM等功能,都正常。

IDE 是8.50的。PICC-V9.81

各位是否有遇到这种情况?

使用特权

评论回复
yewuyi| | 2011-11-15 12:33 | 显示全部楼层
关于程序乱跳的我也有遇到。
我的情况不一样,

当我用PIC16F1937时,用ICD2调试完全正常,可单步,等,但是用PIC16F723(当然程序不一样),就会出现乱跳,而且我试过在程序的开始(main后第一条语句)设个断点,居 ...
MIKEZHONG 发表于 2011-11-15 12:09


1、断点处的代码可能被优化掉了,这也就造成该断点成为无效设置,所以在很多芯片的开发环境中都要求DEBUG的时候将编译器优化等级设置为0
2、所谓乱跳一般也是优化造成的,当优化打开后编译器会根据优化原则调整代码的顺序等,此时调试者会看上去混乱了。
3、当使用单步时,因为ICSP方式的原因,会造成PC指针加载出现一些不希望看到的现象,而且ICD2调试时,MCU内部的各个模块都是在运行的,如果你用原来那种ICE4000或者其他全仿真工具的思路来看,似乎变得混乱了。
4、根本原因首先是你还不熟练使用ICD2,其次时写代码的经验和水平还不够。

使用特权

评论回复
MIKEZHONG| | 2011-11-15 17:42 | 显示全部楼层
我的编译器用的是9.81的,来自网络,编译时,我也想到将优化调为0,以前用KEIL也是这样的,调试时直接设为不优化。但是可能9.81的原因,无法改变优化选项,而且最小为1,改为1后编译后再回头看优化的设置又跑回到9了。 总之,是有点怪怪的。我现在还没有完全弄清楚。

我用KEIL的都还没有遇到这个情况,而且PIC16F1937,PIC16F887都可以。

ICD2是贝能的,同时经常会出现连接不上,接着要拔掉ICD2电源,上电复位一下目标板,再接上才能连接上。编译连接时间长。

PICKIT3 是否有改进这些问题?

使用特权

评论回复
l4157| | 2011-11-15 20:11 | 显示全部楼层
多年前师父就告诉我,工程师一定要用好的工具,为什么不用原厂的ICD3?

使用特权

评论回复
yewuyi| | 2011-11-15 21:38 | 显示全部楼层
我当年至少扔掉了10个贝能的ICD2

使用特权

评论回复
MIKEZHONG| | 2011-11-16 11:17 | 显示全部楼层
看来我也要把这个ICD2扔了,换个ICD3来用用。

使用特权

评论回复
ayfalcon| | 2014-7-27 07:18 | 显示全部楼层
问题解决没有呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则