15.1.1.1 FSR Read

The FSRs are used to provide read access to program memory.

Program memory is accessed by loading the FSRxH:FSRxL register pair with the address to be read and setting bit 7 of the FSRxH register to ‘1’. When a MOVIW instruction, or any instruction that accesses INDFx, is executed, the value loaded into the FSRx register pair points to the location in program memory to be accessed. If the FSRx register pair points to an INDFx register, the read will return ‘0’.

Reading from NVM requires one instruction cycle. The CPU operation is suspended during the read and resumes immediately after. Read operations return a single byte of memory.