登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

这是不是avr-libc的bug?

作者:zj4068 栏目:单片机
要sourcecode和makefile请和1联系,我不知道这边附件怎么和上去
In makefile file i use
# MCU NAME
MCU = ATMEGA48

in main.c file i call eeprom_write_byte function. (define in eeprom.h within avr-libc)

compile finish in main.lss i found some bug

eeprom_busy_wait();
c8: f9 99 sbic 0x1f, 1 ; 31
ca: fe cf rjmp .-4 ; 0xc8

sbic 0x1f, 1

0x1f is ATMEGA48 EECR register address.it is right


eeprom_write_byte(1,c);
cc: 60 91 01 01 lds r22, 0x0101
d0: 81 e0 ldi r24, 0x01 ; 1
d2: 90 e0 ldi r25, 0x00 ; 0
d4: 01 d0 rcall .+2 ; 0xd8

while(1);
d6: ff cf rjmp .-2 ; 0xd6


see above sbic 0x1c,1

//0x1c is EFIR register address it is not EECR register address in ATMEGA48
//but 0x1c it is EECR register address in ATMEGA8.
// i mean it is avr-libc's bug?because this function is in avr-libc.

000000d8 <eeprom_write_byte>:
d8: e1 99 sbic 0x1c, 1 ; 28
da: fe cf rjmp .-4 ; 0xd8
dc: 9f bb out 0x1f, r25 ; 31
de: 8e bb out 0x1e, r24 ; 30
e0: 6d bb out 0x1d, r22 ; 29
e2: 0f b6 in r0, 0x3f ; 63
e4: f8 94 cli
e6: e2 9a sbi 0x1c, 2 ; 28
e8: e1 9a sbi 0x1c, 1 ; 28
ea: 0f be out 0x3f, r0 ; 63
ec: 08 95 ret

not ONLY EECR but aove that
dc: 9f bb out 0x1f, r25 ; 31
de: 8e bb out 0x1e, r24 ; 30
e0: 6d bb out 0x1d, r22 ; 29

0x1f and 0x1e is EEARH and EEARL register address in ATMEGA8.
ATMEGA48 EEARH and EEARL register address is 0x22 and 0x21

0x1d is EEDR register address in atmea8
but ATMEGA48 EEDR register address is 0x20


Can anyone tell me it is avr-libc bug?If it is bug.pls fix this bug soon.
pls contact me freeely.my email is: zj4068@163.com


2楼: >>参与讨论
athlon64fx
先确定你用的哪个版本
1.20已支持M48。

3楼: >>参与讨论
zj4068
不是支持不支持的问题
    我装的是winavr0720版本,里面已经支持ATMEGA48.88/168了。编译已经顺利通过了。我也用在avr freaks的avr-libc-120-win的update过了,编译出来的结果也一样。
    因为EEPROM_write_byte这个函数是在avr-libc1库里面的,我的猜想是ATMEGA48比较新,但是ATMEGA48有些寄存器的地址和ATMEGA8已经不一样了,但是avr-libc可能还没有更新EEPROM里的几个函数的相关的寄存器地址。
    请各位赐教。

4楼: >>参与讨论
athlon64fx
怎样才算不支持?
1ibc1.04从来没有声明支持M48

参与讨论
昵称:
讨论内容:
 
 
相关帖子
询问ATmega128的同步方式的主机、从机的设置问题(急)
和51比AVR怎么多占用那么多FLASH?????请教!!!!
串口通讯接收数据时,发现了个问题!!!来看看吧!!!!
请问有人用双龙的并口ISP下载线通过MAX232向MEGA128下过程序吗
新版WINAVR环境下Demo.c编译及调试具体步骤
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号