There are two sources of the pullups - one inside the chip for PORTB pins (digital inputs 1-6), and the other within the IFI black robot controller case for digital inputs 7-18.
See
IFI diagram for controller pullup information.
Code:
PORTB is a bidirectional I/O port. PORTB can be software
programmed for internal weak pull-ups on all inputs.
DS39646B-page 15
bit 7 RBPU: PORTB Pull-up Enable bit
1 = All PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values
DS39646B-page 122
So if !RPBU is asserted (0) AND the PORTB input pin is configured as input, then a weak pullup resistor to +5V is enabled on-chip for the robot controller's digital inputs 1-6.
The other digital lines 7-18 always have a 100k pullup supplied by IFI whether input or output.
The internal PORTB pullups are enabled within the code build environments by default. In IFI file ifi_library.c:
Code:
Initialize_Registers()
:
.
TRISH = 0xFF;
ADCON1 = 0x00; /*all analog inputs; no digital*/
INTCON2bits.NOT_RBPU = 0; /*enable PORTB pull-ups (for bootloader interrupt)*/
PSPCONbits.PSPMODE = 0;
MEMCONbits.EBDIS = 1; /*use PORTD for I/Os, not for external memory interface*/
The other resistors/capcitors shown; 1k/0.001uf on 1-6 and 680/0.01uf on lines 7-18 are passive RC networks to help reduce/eliminate input glitches seen on these lines due to noise and make/break actions of mechanical switches (i.e. to
de-bounce inputs).
RC Networks effectively act as a time delay for the signal/signal change.
Attached is a schematic of a typical limit switch input into the robot controller.