Сам задал вопрос - сам и отвечаю

Изменил определение указателя на следующее:
const unsigned char __flash *Flash_ptr = (const unsigned char __flash *)0x0000;
и все заработало!
Цитата(Сергей Борщ @ Mar 29 2007, 15:51)

Потому что AVR имеет несколько адресных пространств. Указатель на флеш, расположенный в озу объявляется как __flash unsigned char const* Flash_ptr = (__flash unsigned char const*)0x0001; И считать сумму надо наверное с нулевого адреса?
Спасибо за ответ! Я даже не заметил его. Только когда свой уже ответ самому же себе написал, тогда и заметил. Но все равно спасибо.
не знаю почему, но в таком виде, как Вы говорите, "не работает"...:
__flash unsigned char const* Flash_ptr = (__flash unsigned char const*)0x0001;
причем, я так пробовал, что меня и сбило с толку и заставило сюда написать.
Но стоит только перенести __flash в конец определения типа - начинает работать:
const unsigned char __flash *Flash_ptr = (const unsigned char __flash *)0x0000;
Конечно же, надо считать с нулевого адреса. Там в целях отладки стояла единица.