打印

PIC单片机必死大 法

[复制链接]
3255|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
snakeemail|  楼主 | 2011-8-25 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 snakeemail 于 2011-8-25 22:28 编辑

最近PIC的单片机死机了,死的很彻底,连晶振都没波形了。
最后发现不是硬件问题,而是软件问题。单片机是使用18系列的,编译器为C18,程序在高、低中断都调用了一个程序,结果引起了“可重入”问题,当高中断打断低中断,死了。
而且像这种问题是隐形的问题,特别不好查,故此纪念。
解决的方法很简单,以后将程序都放到主循环中就ok了。
沙发
NE5532| | 2011-8-25 22:22 | 只看该作者
楼主高兴得太早,软件死机不会停晶振的。

使用特权

评论回复
板凳
谈的元| | 2011-8-26 07:54 | 只看该作者
楼主高兴得太早,软件死机不会停晶振的。
NE5532 发表于 2011-8-25 22:22

楼主需要再检查

使用特权

评论回复
地板
yewuyi| | 2011-8-26 08:38 | 只看该作者
楼主高兴得太早,软件死机不会停晶振的。
NE5532 发表于 2011-8-25 22:22


呵呵,如果进入SLEEP并且再也醒不过来,到也是可能的。

使用特权

评论回复
5
yewuyi| | 2011-8-26 08:40 | 只看该作者
不过LZ的解决方案是因噎废食,太绝对化了。

可重入其实就是临界代码的一种表现,写一个无临界代码的程序,是一个程序员的基本功能。

使用特权

评论回复
6
snakeemail|  楼主 | 2011-8-26 18:29 | 只看该作者
不过LZ的解决方案是因噎废食,太绝对化了。

可重入其实就是临界代码的一种表现,写一个无临界代码的程序,是一个程序员的基本功能。
yewuyi 发表于 2011-8-26 08:40

是的。不过看了不知多少书,才有讲呀。又不举例子,只能自己搞。

使用特权

评论回复
7
yewuyi| | 2011-8-26 22:52 | 只看该作者
高手:因为他失败经历的比别人多,所以成为高手,因为他成功的产品比别人多,所以成为高手.

使用特权

评论回复
8
lzw625| | 2011-9-12 20:11 | 只看该作者
说明你写程序的结构有问题,中断套嵌在PIC单片机中,最好不要用

使用特权

评论回复
9
lzw625| | 2011-9-12 20:24 | 只看该作者
说明你写程序的结构有问题,中断套嵌在PIC单片机中,最好不要用

使用特权

评论回复
10
shizaigaole| | 2011-9-13 07:50 | 只看该作者
PIC18按说可以支持重入,
编译器不支持而已。

使用特权

评论回复
11
黄jiajia| | 2011-9-14 19:29 | 只看该作者
:)

使用特权

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

本版积分规则

个人签名:提供500W线性 交流电源。0~300VAC,45~500Hz 提供10KW,0-330V直流电源,具体见http://blog.21ic.com/user1/3639/archives/2012/88528.html

547

主题

1910

帖子

8

粉丝