Ahora mismo esto yo también liado con este mismo tema en
Las Pull-Ups locas atacan de nuevo.(
1)
La conclusión a la que he llegado es la siguiente:
* Las pull-ups internas se activa TODAS con port_b_pullups(true);
* Las pull-ups internas se desactivan UNA a UNA cuando les da la gana: Por ejemplo al poner un tris del pin correspondiente como salida.
Por eso tu port_b_pullups(0b00000010); es siempre igual a port_b_pullups(true); de igual forma que port_b_pullups(0b00000000); sería igual a port_b_pullups(false);
Cualquier cosa que pongas distinto de 0 en el port_b_pullups(); te lo va a tomar como port_b_pullups(true);
Ten en cuenta que las pull-ups se activan con un solo bit.
RBPU: PORTB Pull-up Enable bit Pero se desactivan dependiendo de qué función tenga después cada Pin.
Ahora hay que bucear en el Datasheet para ver cuando se desactivan las distintas pull-ups internas y ver de usar tris(es) ó ad(eses) ó ccp(eses) para dejar activas solo las que necesitemos.
Por ahí van los tiros de este tema.
(
1) Casi hemos usado el mismo título.