Microchip Technology AC164139 Data Sheet

Page of 408
 2010 Microchip Technology Inc.
DS39969B-page 163
PIC24FJ256DA210 FAMILY
10.3
Input Change Notification
The input change notification function of the I/O ports
allows the PIC24FJ256DA210 family of devices to gen-
erate interrupt requests to the processor in response to
a Change-Of-State (COS) on selected input pins. This
feature is capable of detecting input Change-Of-States,
even in Sleep mode, when the clocks are disabled.
Depending on the device pin count, there are up to
84 external inputs that may be selected (enabled) for
generating an interrupt request on a Change-Of-State.
Registers, CNEN1 through CNEN6, contain the inter-
rupt enable control bits for each of the CN input pins.
Setting any of these bits enables a CN interrupt for the
corresponding pins.
Each CN pin has a both a weak pull-up and a weak
pull-down connected to it. The pull-ups act as a current
source that is connected to the pin, while the
pull-downs act as a current sink that is connected to the
pin. These eliminate the need for external resistors
when push button or keypad devices are connected.
The pull-ups and pull-downs are separately enabled
using the CNPU1 through CNPU6 registers (for
pull-ups), and the CNPD1 through CNPD6 registers
(for pull-downs). Each CN pin has individual control bits
for its pull-up and pull-down. Setting a control bit
enables the weak pull-up or pull-down for the
corresponding pin.
When the internal pull-up is selected, the pin pulls up to
V
DD
 – 1.1V (typical). When the internal pull-down is
selected, the pin pulls down to V
SS
.
EXAMPLE 10-1:
PORT WRITE/READ IN ASSEMBLY
EXAMPLE 10-2:
PORT WRITE/READ IN ‘C’
Note:
Pull-ups on change notification pins
should always be disabled whenever the
port pin is configured as a digital output.
Note:
To use CN83 and CN84, which are on the
D+ and D- pins, the UTRDIS bit
(U1CNFG2<0>) should be set.
MOV
0xFF00, W0
; Configure PORTB<15:8> as inputs
MOV
W0, TRISB
; and PORTB<7:0> as outputs
NOP
; Delay 1 cycle
BTSS
PORTB, #13
; Next Instruction
TRISB = 0xFF00;
// Configure PORTB<15:8> as inputs and PORTB<7:0> as outputs
Nop();
// Delay 1 cycle
If (PORTBbits.RB13){ };
// Next Instruction