Datasheet
2011 Microchip Technology Inc. DS39762F-page 285
PIC18F97J60 FAMILY
20.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 20-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.
In 7-Bit Addressing mode, address mask bits,
ADMSK<5:1> (SSPxCON2<5:1>), mask the corre-
sponding address bits in the SSPxADD register. For any
ADMSK bits that are set (ADMSK<n> = 1), the corre-
sponding address bit is ignored (SSPxADD<n> = 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.
In 10-Bit Addressing mode, bits, ADMSK<5:2>, mask
the corresponding address bits in the SSPxADD regis-
ter. In addition, ADMSK1 simultaneously masks the two
LSbs of the address (SSPxADD<1:0>). For any
ADMSK bits that are active (ADMSK<n> = 1), the cor-
responding address bit is ignored (SSPxADD<n> = x).
Also note, that although in 10-Bit Addressing mode, the
upper address bits re-use part of the SSPxADD regis-
ter bits. The address mask bits do not interact with
those bits; they only affect the lower address bits.
EXAMPLE 20-2: ADDRESS MASKING EXAMPLES
Note 1: ADMSK1 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> = A0h (1010000) (SSPxADD<0> is assumed to be ‘0’)
ADMSK<5:1> = 00111
Addresses Acknowledged: A0h, A2h, A4h, A6h, A8h, AAh, ACh, AEh
10-Bit Addressing:
SSPxADD<7:0> = A0h (10100000) (the two MSb of the address are ignored in this example since they are
not affected by masking)
ADMSK<5:1> = 00111
Addresses Acknowledged: A0h, A1h, A2h, A3h, A4h, A5h, A6h, A7h, A8h, A9h, AAh, ABh, ACh, ADh, AEh, AFh