Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему код flash+EEPROM занимает больше места
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
scorpio3
Пишу библиотеку для светодиодного индикатора,сначала массив разместил в sram - unsigned char,потом думаю для экономии flash памяти размещу в EEPROM,но после компиляции у меня получается,что 1,81 Kb flash + 26 байт eeprom,тогда как в sram - 1,76 kb,код наоборот стал больше при использовании eeprom.Может я чего то не так понимаю?Подскажите пожалуйста.
Использую Iar 6.1,atmega 16.
При компиляции sram выставляю в настройках intel-standart.
При компиляции с eeprom добавляю
-Ointel-standard,(CODE)=$PROJ_DIR$\Release\Exe\Test.hex
-Ointel-standard,(XDATA)=$PROJ_DIR$\Release\Exe\Test.eep
hd44780
К EEPROM адресоваться напрямую (как к флэшу или RAM) нельзя, только вычитывать побайтно, как из UART/TWI/....
Потому как EEPROM не отображается на адресное пространство, это обычная периферия, работает через регистры, а не через указатели на что-то там.

Поэтому если Вы пишете типа

eeprom char a;
a='A';
b=a;

то в последних 2 операторах компилятор автоматом подставляет код для обращения к EEPROM. А это не 1-2 команды (см. даташит).
За счёт этого и код больше. Если Вам это так актуально, храните в RAM. Или flash ...

PS.
А коды, описывающие циферки на дисплее надо всё же во flash хранить. Или Вы меняете эти описания на лету?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.