Cómo usar la función SET_TRIS_B en el PIC C

2

Supongamos que quiero la siguiente configuración

B7 B6 B5 B4 B3 B2 B1 B0
0  0  0  0  0  1  0  1

Quiero que B0 y B2 sean ingresados y que el resto salga, así que hice lo siguiente

 set_tris_b(0x05);

¿Esto hace que B0 y B2 ingresen pero tampoco hace que B5 y B4 tengan un nivel lógico alto por defecto, sino que tienen un nivel lógico bajo? Porqué es eso ? ¿Estoy haciendo algo mal?

    
pregunta MistyD

2 respuestas

4

Estaba escribiendo esta respuesta a tu otra pregunta, pero la borraste. Como esta pregunta está relacionada con la otra, la publicaré aquí, ya que debería responder a las dos preguntas:

La configuración de un pin para la entrada no lo establece en ningún valor, el pin en sí está flotando. Esto significa que parece una impedancia muy alta para cualquier cosa que se conecte a ella (como un circuito abierto)

Otra forma de explicar la diferencia es con el pin configurado para una salida y la lógica 0, puede descargar hasta 20mA aproximadamente de corriente, por ejemplo, para encender un LED (ánodo LED conectado a Vdd a través del resistor apropiado) , LED cátodo conectado al pin - para activar set pin to logic 0, para apagar set to logic 1)
Si lo hace con el pin configurado en entrada, el LED no se iluminará ya que no hay una ruta actual a tierra.
El registro TRIS solo controla el estado de alta impedancia, desconectando el controlador de salida del pin:

Laaltaimpedanciaesbuenaparaunaentrada,yaquesignificaquetodoloqueestéconectadopuedeimpulsarelpinaltoobajofácilmente.

Estetipodepinessellaman" tristate ", ya que pueden estar en tres estados: alto, impedancia baja o alta ("1", "0" o "Z")

Cuando el pin está configurado en entrada, si desea asegurarse de que esté en alto o bajo, puede configurar lo que se denomina "pullup débil" o "pulldown débil" si el microcontrolador tiene esto disponible. Esto parece una resistencia alta conectada entre Vdd (o tierra) y el pin, que la empuja hacia arriba o hacia abajo débilmente, por lo que algo puede llevarlo a otro estado fácilmente sin usar demasiada corriente (una salida conectada a una salida es una mala idea) , y se llama "contención de bus" ya que las dos salidas luchan para establecer la línea a su estado particular. La línea generalmente terminará entre estados, donde depende exactamente de la fuerza relativa de cada conductor)

    
respondido por el Oli Glaser
1

Para hacer que la lógica sea alta de forma predeterminada, tendrá que habilitar los registros internos de recuperación del PIC, si corresponde a su chip. (Es posible que no haya pullups internos disponibles en ese puerto, no sé qué chip está usando).

Si desea elevar los pines manualmente, debe establecerlos modificando el registro PORTB.

    
respondido por el dext0rb

Lea otras preguntas en las etiquetas