Cómo calcular el tiempo de encendido / apagado de los LED en cuatro registros de desplazamiento de 8 bits con ATtiny2313-20U

2

Estoy planeando construir un proyecto con 4 registros de desplazamiento de 8 bits (74HC595) conectados en serie (en cadena) y la MCU es ATtiny2313-20U.

Sé que la frecuencia máxima para la MCU es 20MHz. En base a eso, ¿cómo puedo averiguar qué tan rápido puedo hacer parpadear los LED, dado que tengo que ingresar 32 (4x8) bits de datos a los registros de desplazamiento?

    
pregunta user29542

2 respuestas

1

Para una transferencia completa a través de bit-bang:

SBI en el 2313 toma 2 ciclos por operación. En dos operaciones por bit más otra para enganchar, eso es 130 ciclos.

Para un parpadeo adyacente mediante bit-bang (por ejemplo, 010101 < = > 101010):

Una operación para el conjunto, una para el cambio, una para el pestillo. 6 ciclos.

Para una transferencia completa a través de USI:

7 ciclos para obtener el byte en el USI a través del ejemplo maestro SPI simplificado en la hoja de datos más el tiempo requerido para enviar los bits, todos los tiempos 4, más el pestillo.

38 ciclos por byte usando el ejemplo maestro de SPI de alta velocidad, 4 veces, más el pestillo.

Conclusion:

A 1 / 20MHz = 50 ns por ciclo, mucho más rápido de lo que su ojo puede ver. Considere usar uno de los temporizadores con una interrupción en lugar de bloquearlo manualmente.

    
respondido por el Ignacio Vazquez-Abrams
1

Las pantallas de "Persistencia de la visión", mientras que alguien similar a PWM, no son lo mismo. Su resolución depende del tamaño de la rueda, y de la velocidad máxima o promedio / rpm, la velocidad de sus registros de turnos.

((1 / (rpm / 60)) / x) * 1000 = tiempo activado por píxel por rotación en milisegundos

(rpm / 60) * x = número de veces que necesita actualizar la pantalla en hercios.

donde x es el número de píxeles que desea en una sola rotación.

Como ha demostrado Ignacio, simplemente 32 bits de datos a través de bitbang son 130 ciclos. Tiempos ns por ciclo, eso es 130 * 50ns = 6.5 µs (microsegundos) por 32 bits de datos en su forma más rápida con el mejor código que puede escribir.

Basado en esta tabla una rueda de 20 pulgadas a 15 mph es 252 rpm. Supongamos que desea 720 píxeles (2 por grado), eso significa que es de 0.331 ms o 331 µs por píxel y 3.024 kHz.

Compare eso con el tiempo de bus i2c de baja velocidad estándar de solo 100 kHz, que es de 10 µs por bit. Los buses de alta velocidad pueden figurar en mHz (como la velocidad máxima de usb 2.0 es de 480 mhz).

Tenga en cuenta que esto no tiene en cuenta cómo el padre que va desde el centro de la rueda, cuanto más rápido se mueve, a las mismas RPM. Velocidad angular vs lineal. Esto significa que los leds internos deberán actualizarse más rápido que los leds externos, ya que la distancia que recorren es menor. El diámetro del led 1 en el interior es de 10 ", pero el led 28 es de 19".

    
respondido por el Passerby

Lea otras preguntas en las etiquetas