I2C - consulta de bit banging [duplicado]

1

Al intercambiar bits I2C, en lugar de cambiar los estados LOW / HIGH del pin, cambie entre LOW / HiZ simplemente modificando los registros DDR / DIR. ¿Por qué es así? ¿Por qué no podemos cambiar los estados de BAJA / ALTA del pin de datos? Mi controlador se está comunicando con un solo esclavo.

    
pregunta Akshara Prasad

1 respuesta

2

Su código cambia el bit DDR / DIR de ese pin porque en I2C desea un pin de alta impedancia (pin establecido como pin de entrada - > enviar un "1") o un pin de impedancia súper baja (pin de salida establecido en 0 - > enviar un "0"). Por su diseño, I2C prohíbe tirar del bus directamente desde el pin, ya que causará cosas muy MALAS (un dispositivo con un nivel alto, otro con un nivel bajo y ... ¡un gran cortocircuito!). El pull up se realiza mediante los pull-ups externos de 4.7K. Cualquier pin utilizado para I2C debe ser de drenaje abierto.

    
respondido por el Gianluca Ghettini

Lea otras preguntas en las etiquetas