¿Resolver problema de resistencia?

3

Tengo tres dispositivos i2c conectados al microcontrolador AVR. En el bus i2c en el lado maestro hay dos pull ups con 2k7 ohm. Lo que estoy experimentando es que cuando enciendo los dispositivos del microcontrolador no se puede "abandonar la línea" / inicializar. Después de reiniciar la unidad de control, todo está bien. En la rutina de inicio de uC hay algunas inicializaciones que toman alrededor de 100 ms. ¿Podría ser esto debido a los valores de recuperación o debo esperar más tiempo para la inicialización?

ACTUALIZACIÓN: el pull-up interno está deshabilitado. Usando pull-up para cada línea.

    
pregunta Gossamer

1 respuesta

3

No creo que haya ningún problema con el valor de pull-up. Los conductores I2C deben poder hundir al menos 3 mA, y el mínimo de 2 kΩ se determina teniendo esto en cuenta: 3 mA a 2 kΩ es suficiente para tirar de un voltaje de bus de 5 V hasta la tierra.

Me parece que las E / S no se han inicializado correctamente después del encendido. ¿Estás seguro de que el reinicio funcionó correctamente? ¿El AVR tiene un restablecimiento interno (no menciona qué tipo está utilizando y no voy a leer docenas de hojas de datos), o tiene un circuito RC en un pin de restablecimiento externo, o tal vez un restablecimiento? Controlador como el MAX809?

Sugeriría agregar algún código que indique un reinicio adecuado, como por ejemplo un LED que parpadea a 2 Hz. Realice la inicialización del parpadeo inmediatamente después de la inicialización del I2C. Si el LED parpadea, el puerto se inicializará correctamente, probablemente no si el LED no parpadea.

Lecturas adicionales
Especificación del bus I2C y manual del usuario
Usando el módulo TWI como maestro I2C , Atmel Application Note AVR315
Usando el módulo TWI como esclavo I2C , Atmel Application Note AVR311 (para completar :-))

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas