5932|14

88

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

中断程序被擦除 [复制链接]

请教各位:

我的热表程序运行一段时间后出现异常,经读回代码查看后得知,从0xFFE0地址开始,也就是中断向量口地址,全部变成0XFF,包括中断的入口地址也是如此;我分析如果是程序跑飞,至少入口地址不应该全为FF吧,它应该是读操作而非写操作呀,但从现象看来不是被擦除了就是这段地址被破坏了,不知道哪位高手可以帮忙分析一下,非常感谢!
另外还有一个情况说明,这个现象只是部分表的程序才会出现,其它的运行几年的也没出现

最新回复

要不要对要存储的数据进行备份? 还有就是我现在用169片子,RST引脚直接上拉到VCC,没有加其他的器件,这样做行吗?? 引用: 有FLASH操作的时候最好对中断向量等重要数据进行备份   详情 回复 发表于 2009-3-13 11:01
 
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你程序有对FLASH操作的语句吗
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我想知道你是怎么读回代码的?除了中断向量外,其他的数据对吗?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
工作温度,电压都正常吗?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果有对flash操作代码,在单片机因为电压不稳或干扰造成错误是有可能的
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用:

我想知道你是怎么读回代码的?除了中断向量外,其他的数据对吗?
直接用编程器读回,其他数据都对,只有中断向量这块出了问题
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用:

你程序有对FLASH操作的语句吗
有对Information段的读写操作,不过在写操作时关中断了,时序也没有问题
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用:

如果有对flash操作代码,在单片机因为电压不稳或干扰造成错误是有可能的
请教:如果是这样,在硬件没办法改动的情况下,如何在软件上进行改进来规避这种情况的发生,或者受到干扰后能够重新执行程序呢?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
再请教高手:我发现同样的中断程序经C语言编译后代码不相同,汇编理论上应该是一样的,不知道C语言编译后会不会一样? 如果应该相同,那么是否说明我的中断程序有问题呢
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
编译后代码不一定得相同,你可以把你中断程序贴出来大家帮你看看
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

11
 
有FLASH操作的时候最好对中断向量等重要数据进行备份
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

12
 
先写 一段小程序看看是不是 也会跑飞掉
看看中断向量里面的内容是不是变成FFFF了
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

13
 
我重新核对问题后发现出厂前没有出现这个问题,都是运行一段时间后才出现,但是对FLASH的操作在出厂后就没有了,很困惑!下面这段程序是基本定时器中断程序,也就是中断向量开始的地方,请大家看看有什么问题
#pragma vector=BASICTIMER_VECTOR //基本定时器中断程序,秒中断
__interrupt void BASICTIME()
{
display_renew_time++; //显示更新时间+1
key_time++; //test key‘s delay
if(LCDCTL&LCDON)
displaytime++;//显示时间+1
if(display_instant_flux_flag==0x5a)
{
if(++display_instant_time>=5)
{
display_instant_flux_firstflag=0;
_BIC_SR_IRQ(LPM3_bits);
}
}
if(display_power_flag==0x5a)
{
if(++display_power_time>=30)
{
display_power_firstflag=0;
_BIC_SR_IRQ(LPM3_bits);
}
}
if(++second10>=60)
{
second10=0;
if(++minute10>=65) //分钟计数器+1
{
minute10=0;
hour_soft_flag=0x5a;//软件定时一小时标志
_BIC_SR_IRQ(LPM3_bits);
}
}
if(debug_flag==0x5a)// sample AD per 2 second when debuging
{
if(++debug_time>=2)
{
debug_time=0;
temperaturemesure_flag=0x5a; //置AD采样标识
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}
}
else if(fluxing_flag==0x5a)
{
if(++basic_time>=10)//若5秒钟没有脉冲标志,即认为无脉冲
{
fluxing_flag=0;
temperaturemesure_flag=0x5a;//when flux stop,calculate flux and heat
_BIC_SR_IRQ(LPM3_bits);
}
else if(!(second10%30))//when fluxing test temperature once 30 second
{
temperaturemesure_flag=0x5a;
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}
}
else if(!second10)
{
if(minute10>=2)
{
minute10=0;
temperaturemesure_flag=0x5a;
_BIC_SR_IRQ(LPM3_bits); //test temperature once 2 minute when no flux
}
}//
if(displaypoint!=0)
{
if(debug_flag==0x5a)
{
if(LCDMEM[0]&BIT0)//调试状态时“t"闪烁
guanceshi;
else
ceshi;
}
_BIC_SR_IRQ(LPM3_bits);
}
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用:

先写 一段小程序看看是不是 也会跑飞掉
看看中断向量里面的内容是不是变成FFFF了
我现在对程序调试也不会跑飞,除非中断程序只有_NOP()指令而没有实际操作就会全变成FFFF了,这个问题好像是小概率事件,但是就是不知道在什么条件下会触发它?如何测试呢?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 
要不要对要存储的数据进行备份?

还有就是我现在用169片子,RST引脚直接上拉到VCC,没有加其他的器件,这样做行吗??


引用:

有FLASH操作的时候最好对中断向量等重要数据进行备份
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 11

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表