¿Por qué los pines RC3 (SCL) y RC4 (SDA) están configurados como entradas durante la inicialización de I2C en PIC18F?

0

Estoy en el proceso de interfaz de un RTC DS1307 con PIC18F. Entonces, el controlador será el maestro y I2C el esclavo, por lo tanto, el controlador generará el reloj y los datos como salidas, ¿Si tengo razón? Sin embargo, revisé un par de códigos y noté que los pines RC3 y RC4 están configurados como entradas durante la inicialización de I2C. Mi pregunta es, ¿no se supone que estas patillas deben configurarse como salidas para descontar y sacar datos (como se encuentra en el Modo maestro) al RTC?

A continuación se muestra un ejemplo de uno de esos códigos:

void i2c_init()
{
 TRISC3 = 1;
 TRISC4 = 1;
 SSPSTAT |= 0x80; //Slew Rate Disabled
 SSPADD = 49;

 SSPCON=0b00101000; //Master mode
 SSPADD = 49;

 /*SSPEN = 1
 Enables the Serial Port and configures the SDA and SCL
 Pins as the Serial Pins
 SSPM3:SSPM0 --> 1000
 I2C Master Mode
 Clock = Fosc/4*(SSPADD+1)
 */

}

¿Puede alguien explicar por qué están configurando estos pines como entradas?

¡Gracias a todos por adelantado!

Saludos

~ VD

    
pregunta PsychedGuy

2 respuestas

2

Se debe a que el bus PIC I2C es un módulo maestro múltiple, por lo que necesita detectar que el bus está libre antes de enviarle datos. El requisito para configurar los pines como entradas están en la hoja de datos (estoy usando 18F4550 como referencia):

  

El módulo MSSP en modo I2C implementa completamente todos   Funciones maestro y esclavo (incluyendo llamada general   soporte) y proporciona interrupciones en los bits de inicio y parada   en hardware para determinar un bus libre (multi-master   función).   [...] El usuario debe configurar estos pines como entradas configurando   los bits TRIS asociados.

( enlace - Página 209)

EDITAR: Acabo de darme cuenta de que especificaste el modo maestro. En este caso, consulte la página 228 de la misma hoja de datos:

  

En el modo maestro, las líneas SCL y SDA   son manipulados por el hardware MSSP si los bits TRIS   están establecidos.

    
respondido por el ricardomenzer
1

Generalmente:
Al hacer bit bitging, es decir, construir su propia interfaz de comunicación en software puro utilizando GPIOs, es su responsabilidad cómo configurar dinámicamente un pin en un momento dado (dependiendo de quién se espera que envíe / reciba algo).

Pero cuando se usan periféricos, como la unidad I2C, no se puede saber fácilmente si la configuración GPIO de los pines asociados debe ser de entrada o salida. Siempre hay que leer la ficha técnica.
En el PIC, ambos pines tienen que introducirse, en otro micro puede que tengan que salir, en otro micro puede que no importe nada.
Solo asegúrese de que la configuración inicial sea correcta, el resto es administrado por el propio periférico.

    
respondido por el mic

Lea otras preguntas en las etiquetas