搜索
bottom↓
回复: 18

VAR ATmega128 一个很严重的Bug

[复制链接]

出0入0汤圆

发表于 2011-6-3 10:33:34 | 显示全部楼层 |阅读模式
unsigned long int aa=0;  
unsigned long int bb=0;  

// Timer 0 overflow interrupt service routine  
interrupt [TIM0_OVF] void timer0_ovf_isr(void)  
{  
// Reinitialize Timer 0 value  
TCNT0=0x90;  
// Place your code here  
if(aa<=bb)   //如果去掉这个分支判断,一切都正常
{  
   aa=bb+(unsigned long int)100;  //每次断点在这调试,aa=0;bb=0  
}  
bb++;  

}  

我在 ATmega16 里调试通过,没问题,但是在 ATmega128 里调试就是 每次断点在这调试,aa=0;bb=1 这个问题。 我用的是 JTAG 调试器,阿莫这里买的。  

请高手帮帮助,这是什么问题?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2011-6-3 10:34:56 | 显示全部楼层
AVR ATmega128 这个Bug 是我第一个发现的

出0入0汤圆

 楼主| 发表于 2011-6-4 08:37:45 | 显示全部楼层
有知道问题所在的高手请教教我。

出0入0汤圆

发表于 2011-6-4 09:24:10 | 显示全部楼层
首先,没有VAR这个系列,就算是machao老师也没见过啊

另外,你发现的不叫bug。是你自己不懂

这个是中断中操作变量,变量声明时,加上volatile 就没事了

出0入0汤圆

发表于 2011-6-4 09:26:30 | 显示全部楼层
如果修改后,仍存在你说的那种情况
那就检查一下是不是有数组或指针溢出了,覆盖到了这个变量

编译器的Bug,没那么容易给你发现的

出0入0汤圆

发表于 2011-6-4 09:26:37 | 显示全部楼层
LCQTJJTDS

出0入0汤圆

发表于 2011-6-4 09:32:08 | 显示全部楼层
引用AVR-LIB作者的话“怀疑编译器有问题的使用者99.99999999%是自己编程的问题”

出0入0汤圆

发表于 2011-6-4 09:32:11 | 显示全部楼层
VAR 是什么意思?

出0入0汤圆

 楼主| 发表于 2011-6-4 09:35:43 | 显示全部楼层
我发现问题了,是因为每隔n个时钟周期,就会重启一次,所以变量全部清空。

但是,我没有开那个看门狗呀。会不会是因为别人写这个芯片的时候,熔丝用上的看门狗吗?

熔丝位这东西,是不是设置了,就永久性了,即使用JTAG调动代码时,没有开启某功能。

出0入0汤圆

 楼主| 发表于 2011-6-4 09:39:16 | 显示全部楼层
打错字,是 AVR 不是 VAR 我写惯了JavaScript脚本语言,所以总打错了。

我学AVR,是半路子出家的那种。

出0入0汤圆

发表于 2011-6-4 09:39:32 | 显示全部楼层
http://www.ourdev.cn/guide_index.html
每个链接的内容都看一遍

出0入0汤圆

发表于 2011-6-4 09:41:33 | 显示全部楼层
看门狗被设置过是有很大可能性的。
把狗关了应该就好了,熔丝设置除了加密位要小心以外都是可以反复设置的

出0入0汤圆

 楼主| 发表于 2011-6-4 09:41:34 | 显示全部楼层
To: erxun 老孟
    好的,谢谢!

出0入0汤圆

发表于 2011-6-4 09:57:54 | 显示全部楼层
回复【楼主位】cba2011
unsigned long int aa=0;   
unsigned long int bb=0;   
// timer 0 overflow interrupt service routine   
interrupt [tim0_ovf] void timer0_ovf_isr(void)   
{   
// reinitialize timer 0 value   
tcnt0=0x90;   
// place your code here   
if(aa<=bb)   //如果去掉这个分支判断,一切都正常
{   
   aa=bb+(unsigned long int)100;  //每次断点在这调试,aa=0;bb=0   
}   
bb++;   
}   
我在 atmega16 里调试通过,没问题,但是在 atmega128 里调试就是 每次断点在这调......
-----------------------------------------------------------------------

我刚测试了一下:

(原文件名:调试.jpg)


没问题




修改说明,改了一下语气

出0入0汤圆

 楼主| 发表于 2011-6-4 10:08:05 | 显示全部楼层
诸位高手们,你们太好了。我服了。说芯片很严重的BUG,是想引起您们的注意。不好意思,我在这里先道个歉“对不起!”。

我的问题解决了,是这个芯片之前有人使用过,他设置熔丝位看门狗使能。现在我熔丝把看门狗关掉后,一切就正常了。

太高兴了,我两天才把这个这么基础的问题给解决了。多谢诸位高手们的指引与帮助。以后我要常来这里看看。

出0入0汤圆

发表于 2011-6-4 11:37:15 | 显示全部楼层
晕,我想到了那个.........搞电源的。拜托下次别整这样的字眼了。

出0入0汤圆

发表于 2011-6-4 11:46:57 | 显示全部楼层
又多一个“高手”

出0入0汤圆

发表于 2011-6-10 13:24:41 | 显示全部楼层
对于任何想真正学习掌握MCU应用的,这个是必走之路,多经历几次,就会培养认真、踏实的态度,肤浅和浮躁都做不了这个工作。

出0入0汤圆

发表于 2011-6-10 17:49:29 | 显示全部楼层
高手多,心态好。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 18:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表