iC-MR 13-BIT S&H SIN/COS
INTERPOLATOR WITH CONTROLLER INTERFACES
Rev A1, Page 40/44
SAFETY FEATURES
CRC Verification
Safety register
The configuration check sum CRCCFG is stored in If safety register SEC_HI does not equal 0x00, NR-
registers 0x2E-0x2F. The CRC polynomial used is DOK can be used to select whether write or read/write
x16 + x12 + x5 + 1 (CRC-16), the start value is 0x0000.
protection is valid for memory area CONF - in the lat-
ter case the configuration registers can then be neither
If an EEPROM is available, the check sum read out is read out nor overwritten. On read access 0x00 is out-
stored to the CRCCFG register and is used for verifica- put.
tion. If no EEPROM is connected, or if the check sum In both cases bit EWKH of status byte 0x60 is disabled.
read in is incorrect, renewed configuration data with Safety register SEC_HI can be reset and protection
check sum must be written and the CRC verification deleted only if the current register key data is again
executed on command (to register 0x60).
written.
NRDOK
Addr. 0x25; bit 7
Function
R/W
If the configuration is written to the EEPROM by com-
mand, the current check sum in addresses 0x2E-0x2F
is not used but the CRCCFG register is calculated
again.
Code
0
1
Only write protection active
Read and write protection active
Table 77: Selecting read/write protection
CRCCFG(15:8)
CRCCFG(7:0)
Addr. 0x2E; bit 7...0
Addr. 0x2F; bit 7...0
R/W
Code
0x0000
...
Function
SEC_HI
Addr. 0x25; bit 6...0
Function
No read/write protection active
R/W
Code
0x00
Test value generated with CRC polynomial 0x1021,
Start value is 0x0000
0xFFFF
Otherwise Read/write protection active depending on NRDOK
value
Table 76: CRC test value for configuration
Table 78: Safety register for configuration
Example of CRC calculation routine:
If safety register SEC_LO does not equal 0x00, write
protection is active for memory area EDS (indicated by
the disabled EWKL bit in status byte 0x60). All regis-
ters in this area can be read out but not overwritten.
Safety register SEC_LO can be reset and protection
deleted only if the current register key data is again
written.
unsigned char ucDataStream
int iCRCPoly 0x1021 ;
unsigned char ucCRC=0;
int 0;
= 0;
=
i
=
ucCRC = 0; / / s t a r t value ! ! !
for ( iReg
= 0; iReg <46; iReg ++)
{
ucDataStream
for ( i =0; i <=7; i ++)
i f ( (ucCRC & 0x80 ) != ( ucDataStream & 0x80 ) )
ucCRC = (ucCRC << 1) iCRCPoly ;
else
ucCRC = (ucCRC << 1 ) ;
ucDataStream ucDataStream << 1;
= ucGetValue ( iReg ) ;
{
^
SEC_LO
Code
Addr. 0x26; bit 5...0
Function
No write protection active
R/W
=
0x00
}
Otherwise Only write protection active
}
Table 79: Safety register for EDS memory area