Cubo LED 8 x 8 x 8 (53 / 72 paso)

Paso 53: Software: interrumpir la rutina

El corazón del código del cubo de LED es la rutina de interrupción.

Cada vez que se ejecuta esta interrupción, el cubo se borra datos de la nueva capa se cargan en la matriz de cierre y la nueva capa está encendida. Esto sigue siendo en hasta la próxima vez los funcionamientos de la interrupción, donde el cubo es despejó otra vez, datos para la siguiente capa se cargan en la matriz de cierre, y la capa siguiente está encendida.

El ATmega32 tiene 3 contadores de tiempo/contadores. Estos se pueden establecer en cuenta continuamente y desencadenar una rutina de interrupción cada vez que lleguen a un cierto número. El contador se restablece cuando se llama a la rutina de interrupción.

Utilizamos Timer2 con un prescaler de 128 y un valor de comparar la salida de 10. Esto significa que el contador se incrementa en 1 para cada ciclo de cpu 128. Cuando Timer2 llega a 10, se resetea a 0 y se llama la rutina de interrupción. Con una frecuencia de 14745600 Hz, 128 prescaler y salida compara de 10, la rutina de interrupción se llama cada ciclo 1408th de la CPU (128 * 11) o 10472,7 veces por segundo. Muestra una capa a la vez, por lo que toma 8 carreras de la interrupción para dibujar el cubo entero una vez. Esto nos da una tasa de refresco de 1309 FPS (10472.7/8). A este ritmo de actualización, el cubo del LED es parpadeo 100% gratis. Algunos podrían decir que 1300 FPS es excesiva, pero la rutina de interrupción es bastante eficiente. A este ritmo de actualización alto, sólo utiliza aproximadamente el 21% del tiempo de CPU. Podemos medir esta conectando un osciloscopio a la línea de habilitación de salida (OE). Esto se tira alto en el inicio de cada interrupción y bajo al final, así que da una indicación bastante buena de tiempo dentro de la rutina de interrupción.

Antes de cualquier interrupciones de tiempo pueden comenzar, tenemos que configurar el temporizador 2. Esto se hace en la función ioinit().

TCCR2 (temporizador contador de Control de registro 2) es un registro de 8 bits que contiene la configuración para la fuente de reloj del temporizador y el modo de operación. Seleccionamos una fuente de reloj con un prescaler de 1/128. Esto significa 2 temporizador/contador es incrementet por 1 ciclo cada 128 CPU.

Hemos creado a modo de CTC. (Claro en temporizador comparar). En este modo, el valor del contador TCNT2 es continuamente comparado con OCR2 (salida comparar registro 2). Cada vez que TCNT2 alcanza el valor almacenado en OCR2, se restablece a 0 y empieza a contar desde 0. Al mismo tiempo, se activa una interrupción y se llama la rutina de interrupción.

Para cada ejecución de la interrupción, la siguiente ocurre:

1) todos los transistores de capa se apagan.

2) habilitar salida (OE) se tira para desactivar la salida de la matriz de cierre.

3) un bucle recorre = 0-7. Para cada paso un byte es salida en el bus de datos y el i + 1 es la salida en el bus de dirección. Añadimos el + 1 porque el 74HC138 tiene salidas bajas activas y la línea de reloj 74HC574 se activa en el flanco ascendente (transición de bajo a alto).

4) habilitar salida es tirado bajo para permitir salida para la matriz de cierre otra vez.

5) se enciende el transistor para la capa actual.

6) current_layer es incrementar o restablecer a 0 si se mueve más allá de 7.

Eso es todo. La rutina de interrupción es bastante simple. Estoy seguro de que hay algunas optimizaciones que podríamos haber utilizado, pero no sin comprometer humano legibilidad del código. Con el propósito de este instructable, pensamos legibilidad es un equilibrio razonable para un ligero aumento en el rendimiento.

Artículos Relacionados

Construir un cubo LED 4 x 4 x 4 en menos de 3 horas

Construir un cubo LED 4 x 4 x 4 en menos de 3 horas

Yo siempre quería construir un cubo LED para mi esposa (tal como le prometí a). He estado viendo un montón de tutoriales/instructables sobre la construcción de un cubo de LED y francamente, todos tienen el mismo método para construir el cubo. Es deci
Cubo LED 3D

Cubo LED 3D

El cubo LED 3D es un dispositivo realmente fresco que le permite ver en tres dimensiones, haz alguna percepción de profundidad y tiene 512 LED o 512 píxeles. Está basado en un arduino uno que es un microcontrolador Atmel AVR en un tablero de desarrol
Cómo dulce dibujar gráficos 3D cubos LED

Cómo dulce dibujar gráficos 3D cubos LED

He pasado los últimos cuatro meses trabajando con cubos de LED, y este instructable es mi forma de compartir algunos de los conocimientos y técnicas que he acumulado durante este tiempo. Si tienes un cubo de los tuyos, esto podría ayudar a hacer gráf
Mi cubo Led impresionante

Mi cubo Led impresionante

esta es mi versión del cubo led impresionante, su hecho de hojas de acetato (transparente) y una Pepsi puedo, con un circuito de led multicolor de una linterna bolígrafo barato. Diseñé la parte 6 del cubo para que coincida con los 5 anteriores.
Guía definitiva para hacer un cubo LED

Guía definitiva para hacer un cubo LED

Hola gente, estaba muy fascinado con estos cubos de LED y me decidí a hacer uno... PERO pero pero hay un problema que enfrentas al crear su propio cubo LED... Que es de donde al comienzo y cómo iniciar pero para solucionar ese problema tengo una solu
3 x 3 x 3 cubo Led NO ARDUNIO

3 x 3 x 3 cubo Led NO ARDUNIO

por favor votar en el concurso de resplandor:) es un cubo de led muy sencillo que no necesita un ARDUNIO al programa. Parpadea 512 diversos patrones antes de reiniciar.PIEZAS> madera (suficiente para hacer la base)> soldadura> 27 led de> un ic
Impresionante cubo led

Impresionante cubo led

nunca se sabe cuando puede necesitar un cubo brillante al convencer a la gente que es el futuro.Paso 1: materiales y herramientas Para hacer esto usted necesitará:Un LED (preferentemente alta potencia)una batería de botón de 3 vun resistor de 100 ohm
Analizador de espectro de cubo LED

Analizador de espectro de cubo LED

en este proyecto vamos a crear un complemento pequeño PCB que contengan el un analizador de espectro MSGEQ7 circuito y mostrar cómo puede conducir el RGB LED kit de cubo de Freetronics. Esto permite que el cubo ver las siete bandas sobre cuatro plano
8 x 8 x 8 adición de cubo LED

8 x 8 x 8 adición de cubo LED

simplemente pensé que me gustaría compartir algunas fotos que ilustrativos que hago a lo largo de la manera como funcionan mi manera a través de 8 x 8 x 8 instructable por Chr.Es un trabajo en progreso y se está actualizando como terminar el trabajo
3 x 3 x 3 protector de cubo LED

3 x 3 x 3 protector de cubo LED

Lo que debe estar en su equipo:1 – PCB27-LED2 – 6 pernos para Arduino2 – 8 pernos para Arduino3-resistencias1-guía espuma1-pequeño alambre1 – media Wire1-grande alambreNecesitas: hierro, soldadura, cortadores de alambre de la soldadura, pelacables, g
Cubo LED 4 x 4 x 4 con 7219 max

Cubo LED 4 x 4 x 4 con 7219 max

Primero disculpen a mi inglés :)Hola, quería hacer un 4 x 4 x 4 cube, pero no sé nada exadécimalAsí que tomé un arduino uno y un máximo 7219Impresionante exhibición de LED de 3 dimensiones.64 LEDs hace este 4 x 4 x 4 cube, controlado por un arduino y
Cubo LED linterna casera

Cubo LED linterna casera

Este fue el primer gran proyecto que nunca hiceEl recinto del proyecto se hizo de un envase de yogurTodos los LED, los interruptores, y los cables en este proyecto fueron salvados de salvado de otros dispositivos electrónicosHabrá un video en el últi
Foto cubo LED de detección

Foto cubo LED de detección

en este instructable voy a mostrarte cómo hacer un sencillo pero muy eficaz y agradable busca decoración para su habitación y se tarda aproximadamente 5-10 minutos para hacerlo cuando tenga todos los componentes.Se puede utilizar para añadir algo de
ARDUINO UNO LED cubo baile luces

ARDUINO UNO LED cubo baile luces

vamos a ver cómo hacer baile cubo de luces LED con tu arduino uno.Para este proyecto arduino uno es imprescindible y 64 LED necesita de su elección de color.He utilizado LED azul para este proyecto.Necesita soldar todos 64 led de capa por capa pero q