Mi respuesta a la WS2811 con una cosa AVR (3 / 5 paso)

Paso 3: Bit Banging y ahorrar algunos ciclos de reloj más

OK. Poco de autoagresión.

800khz en un Mhz 16 AVR es de 20 ciclos de reloj.

20 ciclos de reloj en un AVR es un montón.  No estamos hablando sobre PIC12 / 16C aquí con 4 garrapatas por instrucción y solamente un registro real.  El AVR mucho por el reloj ciclo.  Si no hubo el requisito a barajar el orden RGB el AVR podría hacer este trabajo serial sin romper un sudor.

De hecho lo único que el AVR no brilla en es cambiar las brocas en registros I/O.  Esto toma dos ciclos de reloj como se muestra en los detalles de las siguientes instrucciones de OSE.  La CPU tiene que leer el registro, modificar y escribir de nuevo.  Es una de las instrucciones de ramificación no pocos del AVR para tomar dos relojes. (Nota: el AVR XMega ha solucionado este problema y ahora está a sólo 1 reloj)

Usando esta instrucción en rutas críticas de tiempo no es divertido como alanos código demostrada.  Tuvo que saltar y saltar en el lugar para igualar las longitudes de trayectoria.

SBRC r19, 7; prueba Hola poco claro
rjmp 3f                       ; cierto, saltar pin Hola -> lo
CBI % [puerto], [pin]; falso, pin Hola -> lo
3: sbrc r19, 7; tal retraso de ambos caminos de código
rjmp 4f
4:  nop                             ; retardo de tiempo del pulso

Así que si las instrucciones reales de CBI y SBI van a tomar 2 ciclos de reloj de todos modos y luego tienes que perder 2 ciclos de reloj para igualar las longitudes de camino, por qué no sólo modificar leer escribo a ti mismo.  Esto le llevará 3 ciclos total.

EN R16, PortX; Leer el estado actual del registro
R16 ORI, PinX; Establecer el bit x alto
A PortX, R16; Escribir el nuevo valor al registro

Lo siguiente que puedes hacer para ahorrar tiempo es todo fuera del bucle que se puede mover.  Porque este código es utilizando el 100% del tiempo de CPU, hay no hay riesgo de la cosa va a cambiar PortX.  También porque ningún otro código se está ejecutando podemos utilizar tantos registros de CPU como nos gusta.

Y así IN-ción y AND/OR-ción fuera del bucle.

EN PinLo, PortX; Hacer una copia del byte en PortX
ANDI PinLo, 0xFE; Modificar para que sea el valor de escribir hacer pin lo
EN PinHi, PortX; Hacer una copia del byte en PortX
PinHi ORI, 0 x 01; Modificar para que sea el valor de escribir hacer pin Hola

Bucle:
bla
bla
a PortX, PinLo; Configurar el pin de salida baja
bla
bla
rjmp ciclo:

Esto ha hecho todo el cambio cambio, serial de bits, bit contando y bucle toma solamente 9 relojes.  Esto deja libres 11 relojes para carga de datos y arrastrando los pies.

Otra vez sería un montón de tiempo si no fuera por lo de RGB.  Debido a lo de RGB podemos no sólo tratamos a cada byte leído como el próximo a salir.  Tenemos que tomar una decisión sobre dónde guardar el byte recién leído en un búfer y donde a partir de un búfer para obtener el siguiente byte a enviar.

Aquí es donde la instrucción del IJMP viene al rescate.  Arriba se muestra la página del conjunto de instrucciones del AVR.  Nosotros estamos utilizando como una declaración de caso/interruptor en una máquina de Estados de software.  En cada estado podemos establecer lo que debería ser el estado siguiente sin tener que hacer cualquier evaluación.

Podemos hacer esto porque siempre sabemos qué color el octeto siguiente va a ser

Si actualmente estamos procesando el byte rojo el siguiente byte será verde
Si actualmente estamos procesando el byte verde el siguiente byte será azul
Si actualmente estamos procesando el byte azul el siguiente byte será rojo

por ejemplo. En el estado rojo simplemente podemos decir

ESTADO = VERDE

No tenemos que decir

Si (algo) luego estado = estado más verde = azul

Esto ahorra unos relojes al no tener que evaluar algo.

El código completo se muestra como una imagen aquí.  Otra vez mandame un PM Si quieres que por correo electrónico a usted.

Los comentarios en el código son ojala lo suficiente hasta que alguien familiarizado con el AVR-ASM entenderlo.

Artículos Relacionados

Engañar fácilmente a un coche de RC con una cosa!

Engañar fácilmente a un coche de RC con una cosa!

¡ Hola chicos! Voy a mostrarle cómo engañar a tu coche RC. La única cosa que necesitas: pintura del resplandor! El mejor tipo es una pintura de tela dimensional en Michaels u otra tienda de arte, pero realmente cualquier resplandor en las obras de la
Divertirse con una calculadora y un amigo (significado de escuela, pero funciona en todas partes)

Divertirse con una calculadora y un amigo (significado de escuela, pero funciona en todas partes)

este es mi primer instructivo, por lo que no sea demasiado indulgente, es mejor aprender de la crítica que no aprender nada.Continuando, el año pasado me encontré en un escritorio diferente de la que fue en el año antes y con un diferente deskmate. M
No te asustes: Bordar una toalla con una máquina de coser estándar, al igual que un Hoopy Frood

No te asustes: Bordar una toalla con una máquina de coser estándar, al igual que un Hoopy Frood

Bordar toalla de pánico no para celebrar el día de la toalla, un tributo anual al último autor Douglas Adams que se celebra cada 25 de mayo. Estas toallas pueden colgar tranquilamente en su cuarto de baño o ir en aventuras contigo. Incluso si usted n
Cosas que puedes hacer con una mala foto en Photoshop

Cosas que puedes hacer con una mala foto en Photoshop

cuando está editando una imagen, ya sea oscuro o demasiado claro o tomadas con una cámara cutre en general. Usted puede entrar en Photoshop o incluso un programa gratuito como Gimp y magia de milagro en la fotografía de su elección.En esta foto hoy v
Cosas que hacer con una banda elástica de la diversión

Cosas que hacer con una banda elástica de la diversión

¡Hola!Todo el mundo probablemente sabe estas cosas, pero me gusta tener varios tutoriales en una instructable (me salva de hacer todo el trabajo: P).Para las cosas en este instructable, necesitarás:Un band(duh) de gomaDos manosUn objetivo - un ser hu
5 cosas que hacer con una pelota de ping-pong

5 cosas que hacer con una pelota de ping-pong

por favor este Instructable y Sígueme para más cool guías paso a paso.Hecho por Manish KumarAsí que hoy habla 5 inusual que hacer con una pelota de ping-pong. Estas bolas de plástico muy barato y pueden ser utilizadas para los más más de usos. : P no
Decorar tus cosas con una dremel

Decorar tus cosas con una dremel

hace un tiempo hice un florero de madera contrachapada. Y ahora quería decorarla. Entré en el jardín se tomó una foto de nuestro árbol de magnolia.  Había bosquejado el cuadro (flor de magnolia). Luego dibujó la flor de magnolia en la madera con un l
Cómo hackear un Time Capsule de Apple con una frambuesa Pi

Cómo hackear un Time Capsule de Apple con una frambuesa Pi

Introducir la cápsula de"Pi". ¿Actualmente es la única cápsula del tiempo Apple puede conectar a su TV..., esto hace un Apple TV? ;-)OK, ok, digamos que usted tiene un viejo Apple Time Capsule colocación alrededor que ya no funciona... (hay un b
Twitch streaming desde OS X con una nVidia escudo tableta

Twitch streaming desde OS X con una nVidia escudo tableta

Después de descubrir el maravilloso mundo de twitch.tv, decidí que quería transmitir algunos juegos que he jugado. Sin embargo, fue difícil establecer en OS X. Necesaria que descargar Alpha release software (OBS), Yosemite (soundflower) de hackear y
Calentador de agua de campamento con una función de distribución fácil de usar

Calentador de agua de campamento con una función de distribución fácil de usar

hacen un gran volumen, propano, campamento calentador que dispensa agua caliente como un grifo de la cocina.En el camping con un grupo grande, como nuestra tropa de Boy Scout, una freidora de pavo de propano es una forma fácil para calentar rápidamen
Cómo ganar una discusión con una figura de autoridad

Cómo ganar una discusión con una figura de autoridad

puede utilizar dos estrategias para ganar el argumento básico con una persona normal. Solo toma una respuesta preestablecida o dos y un ingenio rápido.Paso 1: Tire de la manta por debajo de ellos Antes de empezar a hablar incluso de estas estrategias
Negra nube con una guarnición de plata - Dress -

Negra nube con una guarnición de plata - Dress -

Saludos y gracias por visitarnos.En este tutorial te mostraré cómo hacer este elegante, vanguardista y vestido todavía juguetón. -Al menos como lo hice-El concepto de la vestimenta era un aspecto casi monocromático, con diminutos colores apareciendo
Excitador de escritorio Slayer con una iluminación de proximidad.

Excitador de escritorio Slayer con una iluminación de proximidad.

No te asustes.Intimidante como parece para construir su propia bobina de Tesla de miniatura, Id como asegurar que realmente no es todo lo que duro. Aquí en mentiras de todos los pasos que finalmente dará su propio juguete de escritorio inalámbrico.Só
Cómo hacer una estantería con una señal de stop

Cómo hacer una estantería con una señal de stop

Hola,Hoy vamos a hacer una única estantería hecha con una señal de "stop".La señal es demasiado grande para abrir la estantería como una puerta clásica, así que vamos a diseñar un sistema fresco de arriba y abajo del sistema de apertura, todo en