Bug 32163 - Ошибки в eeprom функциях
Summary: Ошибки в eeprom функциях
Status: NEW
Alias: None
Product: Branch p8
Classification: Distributions
Component: avr-libc (show other bugs)
Version: не указана
Hardware: all Linux
: P3 normal
Assignee: Andrey Cherepanov
QA Contact: qa-p8@altlinux.org
URL:
Keywords:
Depends on: 32164
Blocks:
  Show dependency tree
 
Reported: 2016-06-01 12:31 MSK by Dmitry A. Kharitonov
Modified: 2016-06-01 12:44 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry A. Kharitonov 2016-06-01 12:31:29 MSK
Для MCU ATMEGA8535 не правильно откомпилированы функции для работы с eeprom
Библиотечная функция не работающая функция:
0000073e <eeprom_read_byte>:
73e:   f9 99           sbic    0x1f, 1 ; 31
740:   fe cf           rjmp    .-4         ; 0x73e <eeprom_read_byte>
742:   92 bd           out 0x22, r25   ; 34
744:   81 bd           out 0x21, r24   ; 33
746:   f8 9a           sbi 0x1f, 0 ; 31
748:   99 27           eor r25, r25
74a:   80 b5           in  r24, 0x20   ; 32
74c:   08 95           ret

Самописная работающая функция:
    while(EECR&(1<<EEWE));
    EEAR=(uint16_t)eeaddr;
    EECR|=(1<<EERE);
    s=EEDR;

       while(EECR&(1<<EEWE));
50e:   e1 99           sbic    0x1c, 1 ; 28
510:   fe cf           rjmp    .-4         ; 0x50e <eedata_read_block+0x36>
       EEAR=(uint16_t)addr;
512:   df ba           out 0x1f, r13   ; 31
514:   ce ba           out 0x1e, r12   ; 30
       EECR|=(1<<EERE);
516:   e0 9a           sbi 0x1c, 0 ; 28
       s=EEDR;
518:   8d b3           in  r24, 0x1d   ; 29

Видно, что библиотечная функция обращается к неправильным портам
Comment 1 Dmitry A. Kharitonov 2016-06-01 12:44:57 MSK
avr-libc-2.0.0-alt1