Datasheet
PIC18F87J10 FAMILY
DS39663F-page 210 © 2009 Microchip Technology Inc.
19.4.3.2 Address Masking
Masking an address bit causes that bit to become a
“don’t care”. When one address bit is masked, two
addresses will be Acknowledged and cause an
interrupt. It is possible to mask more than one address
bit at a time, which makes it possible to Acknowledge
up to 31 addresses in 7-bit mode and up to
63 addresses in 10-bit mode (see Example 19-2).
The I
2
C slave behaves the same way whether address
masking is used or not. However, when address
masking is used, the I
2
C slave can Acknowledge
multiple addresses and cause interrupts. When this
occurs, it is necessary to determine which address
caused the interrupt by checking SSPxBUF.
• 7-Bit Addressing mode
Address Mask bits, ADMSK<5:1>, mask the
corresponding address bits in the SSPxADD
register. For any ADMSK bits that are active
(ADMSK<x> = 1), the corresponding address bit is
ignored (ADD<x> = x). For the module to issue an
address Acknowledge, it is sufficient to match only
on addresses that do not have an active address
mask.
• 10-Bit Addressing mode
Address Mask bits, ADMSK<5:2>, mask the
corresponding address bits in the SSPxADD
register. In addition, ADMSK<1> simultaneously
masks the two LSBs of the address, ADD<1:0>.
For any ADMSK bits that are active
(ADMSK<x> = 1), the corresponding address bit is
ignored (ADD<x> = x). Also note, that although in
10-Bit Addressing mode, the upper address bits
reuse part of the SSPxADD register bits; the
address mask bits do not interact with those bits.
They only affect the lower address bits.
EXAMPLE 19-2: ADDRESS MASKING
Note 1: ADMSK<1> masks the two Least
Significant bits of the address.
2: The two Most Significant bits of the
address are not affected by address
masking.
7-Bit Addressing:
SSPxADD<7:1> = 1010 0000
ADMSK<5:1> = 00 111
Addresses Acknowledged = 0xA0, 0xA2, 0xA4, 0xA6
0xA8, 0xAA, 0xAC, 0xAE
10-Bit Addressing:
SSPxADD<7:0> = 1010 0000 (The two MSbs are ignored in this example since they are not affected.)
ADMSK<5:1> = 00 111
Addresses Acknowledged = 0xA0, 0xA1, 0xA2, 0xA3
0xA4, 0xA5, 0xA6, 0xA7
0xA8, 0xA9, 0xAA 0xAB
0xAC, 0xAD, 0xAE, 0xAF
The upper two bits are not affected by the address masking.