6.4 Application Example

Word-Write

   long DataWord1;
   long DataWord2;
   long DataWord3;
   long DataWord4;

   long TargetWriteAddress;

    NVMCONbits.NVMOP = 1; 
    NVMCONbits.WREN = 1;
    NVMADR =  TargetWriteAddress ;
    NVMDATA0 =  DataWord1; 
    NVMDATA1 =  DataWord2;
    NVMDATA2 =  DataWord3;
    NVMDATA3 =  DataWord4;

    NVMCONbits.WR = 1;
    while (NVMCONbits.WR == 1);

CRC Checksum Calculation

   long StartAddress;
   long StartAddress;
   long EndAddress;
   int InitialValue;
   int DelayValue;
   int IdleValue;

   NVMCRCCONbits.CRCIDL = IdleValue;
   NVMCRCCONbits.DELAY = DelayValue;
   NVMCRCCONbits.ON = 1; 

    NVMCRCST = StartAddress;
    NVMCRCEND = EndAddress;
    
    NVMCRCSEED = InitialValue;  
   
    NVMCRCCONbits.START = 1;

   while(IFS0bits.NVMCRCIF == 0);