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

1

Estoy leyendo el archivo de cabecera 1_wire para PIC18 con compilador C18. en la función write_byte, especificaron eso 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;
    }
}
    
pregunta Makhlouf GHARBI

1 respuesta

4

La idea detrás de esto es la siguiente:

  • La configuración del bit TRIS (haciéndolo 1 ) hará que el pin correspondiente sea una entrada.

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

      

    La configuración de un bit TRISA (= 1) hará que el pin PORTA correspondiente sea una entrada (es decir, ponga 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, ponga el contenido del pestillo de salida en el pin seleccionado).

  • Que el pin esté en el modo de alta impedancia , significa (entre otras cosas) que el pin no está Impulsado 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 usa resistencias de pull-up . Puede verlo en el artículo de wikipedia :

      

    Comopuedever,elestadopredeterminadoesalto.Esosignificaqueelbusutilizaunaresistenciadepull-upparaquesuestadopredeterminadoseaalto.

    Esotambiénestáescritoenlawikipedia:

      

    LaredDallas1-Wireseimplementafísicamentecomoundispositivomaestrodedrenajeabiertoconectadoaunoomásesclavosdedrenajeabierto.Unaúnica resistencia pull-up es común a todos los dispositivos y actúa para tirar del bus hasta 3 o 5 voltios, y puede proporcionar energía a los dispositivos esclavos. La comunicación se produce cuando un maestro o esclavo afirma que el bus está bajo, es decir, conecta la resistencia de extracción a tierra a través de su salida MOSFET. También están disponibles chips específicos de 1-Wire driver y bridge. Se pueden alcanzar velocidades de datos de 16.3 kbit / s. También hay un modo de sobremarcha que acelera la comunicación en un factor de 10.

respondido por el Keelan

Lea otras preguntas en las etiquetas