ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
8 мая
783915 Топик полностью
Ксения (01.10.2017 17:27 - 17:31, просмотров: 262) ответил йцукен на UPD. Просьба к тем, у кого в руках исходники иаровских библиотек: выложите функцию __x_ML_SRAM_EEPROM_24_16.
Думаю, что дело тут не столько в IAR, сколько в простоте операций записи/чтения EEPROM у конкретного контроллера. У Tiny и Mega это байтный обмен через регистр, отягощенный лишь ожиданием завершения операции. Поэтому в этом случае поддержка типа __eeprom досталась легко. Но в тех случаях, когда доступ к EEPROM блочный, тип __eeprom обычно не поддерживают. Кажется, он и в X-Меге не поддержан, хотя та тоже AVR и, как контроллер, более продвинутая. У IAR для AVR в intrinsics.h определены встроенные функции: #define __EEPUT(ADR,VAL) {while (EECR & 0x02) ; EEAR = (ADR); EEDR = (VAL); EECR = 0x04; EECR = 0x02;} #define __EEGET(VAR, ADR) {while (EECR & 0x02) ; EEAR = (ADR); EECR = 0x01; (VAR) = EEDR;} Именно ими пользуется компилятор, когда пишет или читает из __eeprom. Но можно пользоваться этими функциями напрямую.