4 votos

Pregunta terminológica: ¿el término "bit-banging" implica no usar interrupciones de flanco de señal externa para el tiempo?

Suponiendo que realice algún protocolo de comunicación (por ejemplo, SPI o I2C) solo con GPIOs (sin hardware dedicado). Para manejar el tiempo, puedo hacer lo siguiente:

  1. configurar una interrupción en el flanco del reloj (CLK)
  2. configurar una interrupción de temporizador y verificar periódicamente la línea de datos (DATA)

La opción 1 utiliza una interrupción externa (la señal CLK viene del mundo exterior), mientras que la opción 2 no depende de señales externas (si la línea CLK se desconecta por cualquier razón, sigue funcionando, no depende de ella)

Finalmente, la pregunta: ¿ambas opciones 1 y 2 pueden considerarse "bit-banging", o solo la segunda?

(ya que el término "banging" puede interpretarse como "golpear con un ritmo constante". Espero que mi pregunta sea clara...)

13voto

afx Puntos 221

Ambos. Bit-Banging describe para mí la emulación de un protocolo utilizando solo módulos de hardware no especializados (por ejemplo, GPIOs).

8voto

Morris Maynard Puntos 49

Creo que el artículo de Wikipedia sobre bit banging responde bastante bien a tu pregunta en la primera oración:

Bit banging es una técnica para comunicaciones serie que utiliza software en lugar de hardware dedicado.

El temporizador y el hardware de interrupción no son hardware dedicado. Son hardware de uso general que se puede adaptar para muchos propósitos. Y realmente es el software que escribes en la rutina de servicio de interrupción el que está haciendo el trabajo. Por lo tanto, ambos pueden considerarse bit banging.

El artículo luego menciona problemas al usar solo una rutina de encuesta (polling) simple para bit bang. La encuesta (polling) quita tiempo de otras tareas y en un sistema integrado con recursos limitados, esto puede ser un problema. Dependiendo de la prioridad que le des a tu interrupción de encuesta, esta misma puede ser interrumpida y luego tanto perder datos entrantes como causar que la señal de salida sea de baja calidad.

1voto

Wolfgang Haak Puntos 38

Bit-banging es cuando un componente de hardware o módulo UART o USART no está disponible o no se utiliza.

Básicamente significa que el software necesita atender cada bit posiblemente a través de un bucle, comparación de contadores o interrupción.

Usar una macro-célula de registro de desplazamiento o un componente externo no es verdadero bit-banging a menos que el software esté proporcionando al menos el reloj o las condiciones de inicio/fin, si un temporizador de hardware está impulsando un registro de desplazamiento has creado una ART rudimentaria (receptor transmisor asíncrono), agrega más código VHDL y obtienes un UART (pero si consideras que el VHDL es código entonces es bit-banging).

EDITAR:
Después de reflexionar más a fondo necesito hacer una aclaración adicional. El bit-banging es diferente de lo que puede ser otro tipo debido al hecho de que se hace un bit a la vez en lugar de un byte (o palabra) a la vez. Esto significa que el software tiene que realizar múltiples operaciones de comunicación correspondientes al trabajo realizado para cada bit con posibles sobrecargas adicionales para bits de inicio y parada o cambios de estado dependiendo del formato/protocolo. Esto convierte al registro de desplazamiento en lo contrario al bit-banging porque es el componente de circuito que podrá sacar múltiples bits sin supervisión. Una situación incierta sería usar un registro de desplazamiento para mover los datos pero generando los flancos de reloj en el software. Esto probablemente seguiría siendo bit-banging debido al hecho de que el software tiene que atender el (reloj del) movimiento de datos en una base de bit a bit (incluso con el registro de desplazamiento de datos).

Si configuras un periférico ART, UART, USART, SPI, I2C, etc. y luego envías un byte (o palabra) y los datos se mueven (o entran) sin más asistencia de software eso NO sería Bit-banging.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X