|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
这是不是avr-libc的bug? |
作者:zj4068 栏目:单片机 |
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 于 2005/1/22 19:28:00 发布:
先确定你用的哪个版本 1.20已支持M48。 |
3楼: | >>参与讨论 |
作者: zj4068 于 2005/1/22 19:43:00 发布:
不是支持不支持的问题 我装的是winavr0720版本,里面已经支持ATMEGA48.88/168了。编译已经顺利通过了。我也用在avr freaks的avr-libc-120-win的update过了,编译出来的结果也一样。 因为EEPROM_write_byte这个函数是在avr-libc1库里面的,我的猜想是ATMEGA48比较新,但是ATMEGA48有些寄存器的地址和ATMEGA8已经不一样了,但是avr-libc可能还没有更新EEPROM里的几个函数的相关的寄存器地址。 请各位赐教。 |
4楼: | >>参与讨论 |
作者: athlon64fx 于 2005/1/22 19:58:00 发布:
怎样才算不支持? 1ibc1.04从来没有声明支持M48 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |