PIC18 cómo explicar: escribe el bit 1 haciendo entrada TRIS

Estoy leyendo el archivo de encabezado 1_wire para PIC18 con el compilador C18. en la función write_byte, especificaron que para escribir bit1; hacemos entrada de línea y eso lo llevará alto. ¿Podemos especificar un valor de salida alto o bajo en el puerto TRIS que especifica la dirección de E/S?

#define OW_LAT LATCbits.LATC1
#define OW_PIN PORTCbits.RC1
#define OW_TRIS TRISCbits.TRISC1

void ow_write_byte(unsigned char data)
{
    char i;
    for (i=0;i<8;i++)
    {
        // DQ Low
        OW_LAT=0;
        OW_TRIS=OUTPUT;
        // Keep it low for 10us to start the WRITE
        Delay10TCYx(10);
        // Keep low i.e. keep output mode and low if WRITE0 (bit 0)
        // or release line i.e. make input to take it high if WRITE1 (bit1)
        OW_TRIS = data & 0x01;
        Delay10TCYx(50);
        // Release the line. Total of 60us
        OW_TRIS=INPUT;
        // Some recovery time between the bits 2us
        Delay10TCYx(2);
        data =data >>1;
    }
}
TRIS = 10101010 hace que las líneas IO 7, 5, 3 y 1 sean entradas y las demás salidas.
@Andyaka TRIS hace entrada o salida, pero ¿puede el sensor leer 1 en su entrada (salida de imagen) configurando PIC tris 1 (entrada)?

Respuestas (1)

La idea detrás de esto es la siguiente:

  • Establecer el bit TRIS (haciéndolo 1) hará que el pin correspondiente sea una entrada.

    Un extracto típico de una hoja de datos PIC:

    Establecer un bit TRISA (= 1) convertirá el pin PORTA correspondiente en una entrada (es decir, pondrá el controlador de salida correspondiente en un modo de alta impedancia). Borrar un bit TRISA (= 0) hará que el pin PORTA correspondiente sea una salida (es decir, colocará el contenido del latch de salida en el pin seleccionado).

  • Que el pin esté en modo de alta impedancia significa (entre otras cosas) que el pin no está controlado por el propio chip. Por lo tanto, toma cualquier estado definido por el circuito externo (el circuito alrededor del PIC).

  • El bus de 1 cable utiliza resistencias pull-up . Puedes verlo en el artículo de wikipedia :

    ingrese la descripción de la imagen aquí

    Como puede ver, el estado predeterminado es alto. Eso significa que el bus usa una resistencia pull-up para hacer que su estado predeterminado sea alto.

    Eso también está escrito en la wikipedia:

    La red Dallas 1-Wire se implementa físicamente como un dispositivo maestro de drenaje abierto conectado a uno o más esclavos de drenaje abierto. Una sola resistencia pull-up es común a todos los dispositivos y actúa para elevar el bus hasta 3 o 5 voltios y puede proporcionar energía a los dispositivos esclavos. La comunicación ocurre cuando un maestro o esclavo afirma que el bus está bajo, es decir, conecta la resistencia pull up a tierra a través de su MOSFET de salida. También están disponibles chips de puente y controladores de 1 cable específicos. Se pueden lograr velocidades de datos de 16,3 kbit/s. También hay un modo de sobremarcha que acelera la comunicación por un factor de 10.