пропробуй мой код: (прерывание пока запрещены т.к. все делаю в инициализации)
стоит по мимо прочьего команда NO Operation
и чтение данных сигнатурной таблицы идет по байтно (в смысле каждый байт читаю подпрограммой SP_ReadCalibrationBytе)
никаких пост инкрементов Z
в Z кажный раз новый адрес забивай.
ldi temp,PROD_SIGNATURES_START + NVM_PROD_SIGNATURES_LOTNUM0_offset
call SP_ReadCalibrationByte
;-------
SP_ReadCalibrationByte:
mov ZL, temp ; Load byte index into low byte of Z.
ldi temp, NVM_CMD_READ_CALIB_ROW_gc ; Prepare NVM command in R20.
clr ZH ; Clear high byte of Z.
sts NVM_CMD,temp ; Load prepared command into NVM Command register.
lpm temp,Z ; Preform a LPM to read out byte to R16
ldi temp2, NVM_CMD_NO_OPERATION_gc ; Clear NVM Command register
sts NVM_CMD,temp2
ret