Summary: can't get internal weak pull-ups on port B of 16F84 to "work". On RB1 and RB2 are DS-1820 temperature sensors, but not parasitically powered. Works fine if I have external pull-up resistors. When I try to replace these with the internal weak pull-ups on port B by clearing the NOT_RBPU bit in OPTION_REG, there is apparently no effect. The wire distance is about 3cm, on a breadboard. My initialisation of the OPTION_REG is like this; movlw b'01011110' movwf OPTION_REG I know this worked, because the watchdog timer is going off properly. Bit 7 is said by the data sheet to be the one to clear to enable the weak pull-up. The port latch for the pins is left with a zero, and TRISB is toggled by the one wire bus communication code. My bus reset code includes some logic to detect if nothing is connected to the port pin ... a) release the pin (let it be pulled-up), for 60uS, b) if the pin is low, bus is shorted to ground, fail c) pull the pin low for 500uS, d) release the pin for 60uS, e) if the pin is low, DS-1820 is present, pass f) if the pin is high, DS-1820 is not present, fail The bus reset code is returning "pass" despite there being nothing at all connected to the RB0 or RB1 pins. -- James Cameron mailto:quozl@us.netrek.org http://quozl.us.netrek.org/