Чё-то никак не найду, где собака порылась (fucking LPM !! :P) код-то в общем незатейливый :(
//Копирование табличных данных из программной памяти в ОЗУ (четверть периода периодической функции (синуса)
LDZ quarter_SinDATA ;Установим адрес начала исходного массива данных (FLASH)
LDY S_Begin_of_functionDATA ;Установим адрес начала массива данных для размещения в ОЗУ
Begin_copyDATA1:
lpm XL,Z+ ;считываем из FLASH с автоинкрементом адреса
lpm XH,Z+
st Y+,XL ;пишем в RAM с автоинкрементом адреса
st Y+,XH
LDX S_End_of_functionDATA ;Запишем в X адрес конца массива данных для контроля окончания операции
cp XL,YL ;Сравним, не дошли ли до конца выделенной области данных в RAM?
cpc XH,YH
brcc Begin_copyDATA1 ;Если ещё не закончили, то продолжаем копировать
;
В отладчике считыавает по адресам из флеша какую-то херню (в окне дизассемблера по эти адресам нормальные данные)
Все адресные регистры (Y и Z) устанавливаются и инкрементируются корректно.
В железе, программа, аналогичным образом тоже не работает. Никак не пойму, в чём причина?
Да, камень - Xmega128AU3