Цитата(_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 то ваша программу ни на йоту не увеличится из-за его присутствия.