Bug 32164 - Ошибки в eeprom функциях
Summary: Ошибки в eeprom функциях
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: avr-libc (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Grigory Milev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 32163
  Show dependency tree
 
Reported: 2016-06-01 12:38 MSK by Andrey Cherepanov
Modified: 2016-06-01 12:38 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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

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