Bug 32164

Summary: Ошибки в eeprom функциях
Product: Sisyphus Reporter: Andrey Cherepanov <cas>
Component: avr-libcAssignee: Grigory Milev <week>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: viy, week
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 32163    

Description Andrey Cherepanov 2016-06-01 12:38:24 MSK
+++ Данная ошибка создана размножением ошибки 32163 +++

Для 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

Видно, что библиотечная функция обращается к неправильным портам