Pregunta de terminología: ¿el término "bit banging" implica no usar interrupciones de borde de señal externa para la temporización?

4

Suponiendo que realizo algún protocolo de comunicación (por ejemplo, SPI o I2C) solo con GPIO (sin HW dedicado). Para manejar el tiempo, puedo:

  1. establecer la interrupción en el borde CLK
  2. establezca la interrupción del temporizador y pruebe la línea de DATOS periódicamente

La opción 1 usa una interrupción externa (la señal CLK proviene del mundo exterior), mientras que la opción 2 no se basa en señales externas (si la línea CLK se desconecta de cualquier motivo, aún funciona, no depende de ella)

Finalmente, la pregunta : ¿se puede hacer referencia a las opciones 1 y 2 como "bit banging", o simplemente la segunda?

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

    
pregunta Tar

3 respuestas

13

Ambos. Bit-Banging me describe emulando un protocolo simplemente utilizando módulos de hardware no especializados (por ejemplo, GPIOs).

    
respondido por el Tom L.
8

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

  

El bit banging es una técnica para comunicaciones en serie utilizando software   en lugar de hardware dedicado.

El hardware del temporizador y la interrupción no son hardware dedicado. Se trata de un hardware de uso general que puede adaptarse para muchos propósitos. Y es realmente el software que escribes en la rutina de servicio de interrupción que está haciendo el trabajo. Por lo tanto, ambos pueden ser considerados como bit banging.

El artículo continúa mencionando problemas con el uso de una simple rutina de sondeo para hacer bit bang. El sondeo le quita tiempo a otras tareas y, en un sistema integrado con recursos limitados, esto puede ser un problema. Dependiendo de cuán alta sea la prioridad de su interrupción de sondeo, se puede interrumpir y luego perder los datos entrantes o hacer que la señal de salida sea de baja calidad.

    
respondido por el embedded.kyle
1

El bloqueo de bits se produce cuando un componente o módulo de hardware UART o USART no está disponible o no se utiliza.

Básicamente significa que software necesita dar servicio a cada bit posiblemente a través de bucle, comparación de contador o interrupción.

El uso de una macro-celda de registro de desplazamiento o un componente externo no es verdadero. A menos que el software proporcione al menos el reloj o las condiciones de inicio / finalización, si un temporizador de hardware está activando un registro de desplazamiento, ha creado un ART bruto receptor, transmisor) agrega un poco más de código VHDL y es un UART (pero si consideras que el VHDL es un código, entonces es un bit banging).

EDITAR:
Sobre una reflexión más profunda, necesito hacer más aclaraciones. Los golpes de bits son diferentes de lo que puede ser el otro tipo en virtud del hecho de que se realiza 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 los bits de inicio y parada o cambios de estado según el formato / protocolo. Hace que el cambio registre la antítesis de los bits bang porque es el componente del circuito el que podrá cronometrar múltiples bits sin supervisión. Una situación incierta sería usar un registro de desplazamiento para mover los datos pero generar los bordes del reloj en el software. Esto probablemente caería en Bit-banging aún debido al hecho de que el software tiene que atender el movimiento de datos (reloj del) en una base de bit a bit (incluso con el registro de desplazamiento de datos).

Si configura un periférico ART, UART, USART, SPI, I2C, etc. y luego envía un byte (o palabra) y los datos se mueven (o ingresan) sin más asistencia de software que NO sea un bit banging.

    
respondido por el KalleMP

Lea otras preguntas en las etiquetas