cba2011 发表于 2011-6-3 10:33:34

VAR ATmega128 一个很严重的Bug

unsigned long int aa=0;
unsigned long int bb=0;

// Timer 0 overflow interrupt service routine
interrupt 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 调试器,阿莫这里买的。

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

cba2011 发表于 2011-6-3 10:34:56

AVR ATmega128 这个Bug 是我第一个发现的

cba2011 发表于 2011-6-4 08:37:45

有知道问题所在的高手请教教我。

STM32_Study 发表于 2011-6-4 09:24:10

首先,没有VAR这个系列,就算是machao老师也没见过啊

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

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

STM32_Study 发表于 2011-6-4 09:26:30

如果修改后,仍存在你说的那种情况
那就检查一下是不是有数组或指针溢出了,覆盖到了这个变量

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

erxun 发表于 2011-6-4 09:26:37

LCQTJJTDS

vivalite 发表于 2011-6-4 09:32:08

引用AVR-LIB作者的话“怀疑编译器有问题的使用者99.99999999%是自己编程的问题”

cyr_hongfeng 发表于 2011-6-4 09:32:11

VAR 是什么意思?

cba2011 发表于 2011-6-4 09:35:43

我发现问题了,是因为每隔n个时钟周期,就会重启一次,所以变量全部清空。

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

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

cba2011 发表于 2011-6-4 09:39:16

打错字,是 AVR 不是 VAR 我写惯了JavaScript脚本语言,所以总打错了。

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

erxun 发表于 2011-6-4 09:39:32

http://www.ourdev.cn/guide_index.html
每个链接的内容都看一遍

vivalite 发表于 2011-6-4 09:41:33

看门狗被设置过是有很大可能性的。
把狗关了应该就好了,熔丝设置除了加密位要小心以外都是可以反复设置的

cba2011 发表于 2011-6-4 09:41:34

To: erxun 老孟
    好的,谢谢!

cyr_hongfeng 发表于 2011-6-4 09:57:54

回复【楼主位】cba2011
unsigned long int aa=0;   
unsigned long int bb=0;   
// timer 0 overflow interrupt service routine   
interrupt 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 里调试就是 每次断点在这调......
-----------------------------------------------------------------------

我刚测试了一下:
http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_645660JUFGNE.jpg
(原文件名:调试.jpg)


没问题




修改说明,改了一下语气

cba2011 发表于 2011-6-4 10:08:05

诸位高手们,你们太好了。我服了。说芯片很严重的BUG,是想引起您们的注意。不好意思,我在这里先道个歉“对不起!”。

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

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

plc_avr 发表于 2011-6-4 11:37:15

晕,我想到了那个.........搞电源的。拜托下次别整这样的字眼了。

avr-qq 发表于 2011-6-4 11:46:57

又多一个“高手”

machao 发表于 2011-6-10 13:24:41

对于任何想真正学习掌握MCU应用的,这个是必走之路,多经历几次,就会培养认真、踏实的态度,肤浅和浮躁都做不了这个工作。

lanjingjing 发表于 2011-6-10 17:49:29

高手多,心态好。
页: [1]
查看完整版本: VAR ATmega128 一个很严重的Bug