Цитата(IVN2013 @ Feb 3 2014, 21:59)

Читаю и вывожу так:
Код
for (uint16_t address_short = 0; address_short<0x01fc00; address_short++ )
Цитата(IVN2013 @ Feb 3 2014, 21:59)

Подскажите пожалуйста - что может быть не так. Сам подозреваю что ошибки возникают из-за того, что адрес 16-ти битный.
Нет, пока не возникают. Но возникнут, как только ожидание готовности от UART-а вставите:
1) address_short имеет максимальное значение 0xFFFF и значит всегда меньше 0x01fc00. Цикл бесконечный (при включённой оптимизации).
2) в m128 число байтов равно 0x1FFFF - значит с помощью 16р. адреса считаете только первую половину памяти.
Цитата(IVN2013 @ Feb 3 2014, 21:59)

И еще не понял отличие pgm_read_byte от pgm_read_byte_near.
В итоге одно и тоже - чтение flash с адресом до 0xFFFF. Нажмите Go to definition или Go to Implementation или как у вас в IDE называется.
Вам нужна функция pgm_read_byte_far. Или что-то своё аналогичное написать можно.