Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: float в flash
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
demiurg_spb
Собственно описание проблемы и её решение:

http://www.avrfreaks.net/index.php?name=PN...pic&t=64213

Пач я запостил на:

https://savannah.nongnu.org/patch/?group=avr-libc

Надеюсь оценитеsmile.gif
_Pasha
Код
#define flash_read(dest,src) memcpy_P(&dest, &src, sizeof(dest));
demiurg_spb
Цитата(_Pasha @ May 26 2008, 16:46) *
Код
#define flash_read(dest,src) memcpy_P(&dest, &src, sizeof(dest));

Такой макрос тоже иногда нужен (для чтения структур и т.п.).
Но это означает вызов процедуры, которая в цикле будет читать данные и инкрементировать счётчик цикла вместо предложенных мной 4 ассемблерных инструкций (плюс инициализация регистровой пары Z)...
Код
lpm r, Z+
lpm r, Z+
lpm r, Z+
lpm r, Z

Ведь гораздо удобнее написать:
Код
float f = pgm_read_float(&flash_float);


Для параноиков: pgm_read_float - это макрос и если Вы не храните float в flash, но используете pgm_space.h то ваша программу ни на йоту не увеличится из-за его присутствия.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.