12.3.1 Reading the DFM

To read a DFM location, the user must write the address to the NVMADR register and then set the RD control bit. The data is available on the very next instruction cycle; therefore, the NVMDAT register can be read by the next instruction. NVMDAT will hold this value until another read operation, or until it is written to by the user (during a write operation).

The basic process is shown in the following flowchart.

Figure 12-11. DFM Read Flowchart

DFM Read

; Data Flash Memory Address to read
        MOVF    DFM_ADDRL, W            ;
        MOVWF   NVMADRL                 ; Setup Address low byte
        MOVF    DFM_ADDRH, W            ;
        MOVWF   NVMADRH                 ; Setup Address high byte
        MOVF    DFM_ADDRU, W            ;
        MOVWF   NVMADRU                 ; Setup Address upper byte
        BSF     NVMCON1, RD             ; Issue EE Read
        MOVF    NVMDAT, W               ; W = EE_DATA

Only byte reads are supported for DFM. Reading a block of DFM with a SECRD operation is not supported.