Conecte un microcontrolador ATmega al bus HDMI CEC

5

Necesito un poco de ayuda con un circuito adecuado para una conexión entre un microcontrolador y el bus HDMI CEC .

Aquí está el plan completo:

Básicamente, quiero usar un microcontrolador ATMega para decodificar la señal del bus CEC y comunicarme a través del bus CEC con otros dispositivos conectados (TV / BD-Player / AV).

El estado actual:

Conecté la línea CEC al pin de captura de entrada de mi microcontrolador. Y la CEC molió hasta el suelo del microcontrolador. El bus CEC funciona a 3,3 V (máx. 3,63 V) y mi microcontrolador a 5 V. Esto no es un gran problema y funciona bien (debido al umbral de conmutación). Un programa C está haciendo el trabajo de decodificar la señal y enviarla actualmente a través de UART. Esto funciona muy bien y puedo leer cada señal de mis dispositivos con capacidad CEC.

Ahora el problema:

En el estado actual solo puedo leer señales, pero obviamente también quiero escribir algo. ¿Cómo necesito conectar mi microcontrolador para cambiar el estado entre alto / bajo en el bus?

¿Quizás la solución?!:

Debido a los diferentes niveles lógicos (3,3 V < - > 5V), primero necesito un cambio de nivel. Usaría un divisor de voltaje simple (10k y 6,8k) y lo conectaría a la línea CEC desde algún pin de salida (que no sea el pin que estoy usando para leer la señal). ¿Funcionaría así? Si la línea es ALTA y estoy aplicando también un estado ALTO con mi microcontrolador, ¿esto causa algún problema? ¿Cómo minimizaría la salida de corriente?

No quiero dañar nada aquí y mi conocimiento eléctrico es solo lo básico: D

    
pregunta MrNobody

3 respuestas

1

Dado que el bus HDMI CEC es una configuración de colector abierto con pullups compartidos como i2c, debe escribir en él alternando el estado del puerto (el registro de dirección de datos o DDR) entre la entrada (no afecta al bus, a 1) para dar salida a 0 (bajar el bus) y regresar. En lugar de escribir 1 y 0 en el registro PORT [ABCD], ya que el microcontrolador no necesita volver a subir la línea.

En otros microcontroladores, puede configurar el puerto en modo de drenaje abierto o usar un periférico CEC incorporado.

Debe desactivar las resistencias de subida / bajada incorporadas del microcontrolador. El bus ya tiene pullups y el suyo no coincidirá con la especificación de voltaje / corriente requerida por el bus. Un dispositivo comercial puede proporcionar sus propias resistencias de activación discretas o depender del otro extremo según la especificación.

También sería una buena idea ejecutar su ATMega a 3.3V. Funcionará a 3.3V; muchos AVR están diseñados para funcionar hasta 1.8V.

    
respondido por el joeforker
0

Hay mucha información en este hilo en foro Arduino , hay un esquema para recibir y transmitir, ver más abajo. La respuesta # 81, en la página 6, tiene archivos completos de esquemas y diseño de Cadsoft Eagle.

Podría ser útil conectar también I2C al puerto HDMI para obtener información EDID del televisor, no se necesitan circuitos si el AVR se está ejecutando a 3.3 V, simplemente conecte los pines de los datos y el reloj directamente de AVR a HDMI ( ver el esquema del águila).

También escribieron algún tipo de biblioteca, no estoy seguro de lo útil que es, ya que está escrito para Arduino, pero el código se puede encontrar en Google Code .

Por favor, comparta su biblioteca de C para AVR, me encantaría tener algo para comenzar conmigo mismo. :)

,

    
respondido por el Anders Sandblad
-1

todo lo que necesitas es el circuito a continuación.

Por favor, ¿podría compartir su proyecto?

    
respondido por el Hertz Oliveira

Lea otras preguntas en las etiquetas