Subrutina Division 24 bits VS 16 bits, AVR ensamblador

Subrutina División 24 bits VS 16 bits, AVR ensamblador


SUB-RUTINA DE DIVISIÓN DE UN NUMERO DE 24 BITS(ALOJADO EN 3 REGISTROS DE 8 BITS C/U) ENTRE UN NUMERO DE 16 BITS (ALOJADO EN 2 REGISTROS DE 8 BITS C/U), EN LENGUAJE ENSAMBLADOR, COMPATIBLE PARA DIFERENTES FAMILIAS DE MICOCONTROLADORES AVR DE 8 BITS (ATTINY, ATMEGA, ENTRE OTRAS).

REALIZADA POR ING. C.N. JOSUE NORBERTO MARTINEZ F. (DICIEMBRE 2018)

TAMAÑO DEL CÓDIGO 218 BYTES

EL CÓDIGO DE ESTA SUBRUTINA PUEDE SER AGREGADO AL CODIGO DEL PROGRAMA PRINCIPAL O PUEDE SER INCLUIDO UTILIZANDO EL COMANDO ".INCLUDE".

EJEMPLO:
.INCLUDE "SUBRUTINA_DIVISION_24_VS_16_BITS_V2.INC"

ESTA SUB-RUTINA PUEDE SER LLAMADA EN EL MOMENTO QUE SE DESEE UTILIZANDO EN COMANDO "RCALL"

EJEMPLO:
RCALL SUBRUTINA_DIVISION_24_VS_16_BITS_V2

DURANTE LAS OPERACIONES QUE REALIZA, ESTA SUBRUTINA SOBREESCRIBE LOS REGISTROS R12, R13, R14 Y R15


PARA EJECUTAR ESTA SUBRUTINA SE DEBEN SEGUIR LOS SIGUIENTES PASOS:


1.- DEBE DEFINIR LOS REGISTROS QUE DESEA UTILIZAR COMO A CONTINUACIÓN SE DESCRIBE (NO UTILIZAR R12, R13, R14 Y R15):

DIVIDENDO_BYTE1 .- BYTE MENOS SIGNIFICATIVO DEL DIVIDENDO
DIVIDENDO_BYTE2 .- BYTE INTERMEDIO DEL DIVIDENDO
DIVIDENDO_BYTE3 .- BYTE MÁS SIGNIFICATIVO DEL DIVIDENDO

DIVISOR_BYTE1 .- BYTE MENOS SIGNIFICATIVO DEL DIVISOR
DIVISOR_BYTE2 .- BYTE MÁS SIGNIFICATIVO DEL DIVISOR

RESULTADO_BYTE1 .- BYTE MENOS SIGNIFICATIVO DEL RESULTADO
RESULTADO_BYTE2 .- BYTE INTERMEDIO DEL RESULTADO
RESULTADO_BYTE3 .- BYTE MÁS SIGNIFICATIVO DEL RESULTADO

RESIDUO_BYTE1 .- BYTE MENOS SIGNIFICATIVO DEL RESIDUO
RESIDUO_BYTE2 .- BYTE MÁS DEL RESIDUO

2.- ASIGNAR VALORES AL DIVIDENDO Y AL DIVISOR

3.- EJECUTAR LA SUBRUTINA UTILIZANDO EN COMANDO "RCALL"

4.- EL RESULTADO DE LA DIVISIÓN Y EL RESIDUO SE ENCONTRARÁN EN LOS REGISTROS CORRESPONDIENTES


EJEMPLO DE IMPLEMENTACIÓN:


.DEF DIVIDENDO_BYTE1 = R21
.DEF DIVIDENDO_BYTE2 = R22
.DEF DIVIDENDO_BYTE3 = R23

.DEF DIVISOR_BYTE1 = R24
.DEF DIVISOR_BYTE2 = R25

.DEF RESULTADO_BYTE1 = R26
.DEF RESULTADO_BYTE2 = R27
.DEF RESULTADO_BYTE3 = R28

.DEF RESIDUO_BYTE1 = R29
.DEF RESIDUO_BYTE2 = R30

LDI DIVIDENDO_BYTE1, $A6
LDI DIVIDENDO_BYTE2, $01
LDI DIVIDENDO_BYTE3, $0F

LDI DIVISOR_BYTE1, $B2
LDI DIVISOR_BYTE2, $F1

RCALL SUBRUTINA_DIVISION_24_VS_16_BITS_V2

FIN:
RJMP FIN


DESCRIPCIÓN DEL ALGORITMO DE LA SUB-RUTINA


El principio es así: Supongamos que queremos dividir A / B. Si duplicamos el valor de B y el resultado cabe en A, entonces sabemos que B puede estar contenido en A al menos dos veces. Si volvemos a duplicar B y aún puede estar contenido en A, sabemos que B puede cabe cuatro veces en A... y así sucesivamente. En un cierto punto, ya no podemos seguir duplicando B, ya que no cabrá en A. Por lo tanto, restamos el múltiplo más grande de B que cupo en A, y repetimos el proceso con este nuevo valor, que ahora es el Nuevo dividendo. Este enfoque reduce dramáticamente las restas necesarias.

EJEMPLO DE APLICACIÓN DEL ALGORITMO:

We must perform: 10 / 2
Set a counter (CT) to 0: CT = 0
Set partial dividend to 0: K = 0
Double the divisor: 4, set K = 4
4 can be contained in 10? yes. So, increment CT by 1 (CT = 1)
Double again: 4 * 2 = 8, K = 8
8  can be contained in 10? yes. So, increment CT by 1 (CT = 2)
Double again: 8 * 2 = 16, K = 16
16 can be contained in 10? no. K = K / 2 
(we discard 16 and go back to 8)
So we have: 
K = 8 (partial dividend), CT = 2
The quotient between K and divisor (2) is: Q1 = 2^CT = 2 ^ 2 = 4
Now, we have divided by two a part of the original dividend. 
The part left to divide is:
10 - 8 = 2. And we set K = 2
Double the divisor: 2 * 2 = 4, K = 4
4 can be contained in 2? No, so we have K = K / 2 = 2, CT = 0
K = 2 (partial dividend), CT = 0
The quotient between K and divisor 2 is Q2 = 2 ^ CT = 1
Now we add the two quotients together to obtain:
Total quotient = Q1 + Q2 = 4 + 1 = 5
That's the final result, as 10 / 2 = 5.

DIAGRAMA DE FLUJO DE LA SUBRUTINA DE DIVISION


VIDEO TUTORIAL QUE EXPLICA COMO REALIZAR LA DIVISIÓN DE UN NUMERO DE 24 BITS ENTRE OTRO DE 16 BITS UTILIZANDO LA SUB-RUTINA DE DIVISIÓN PRESENTADA EN ESTE POST.





LINK DE DESCARGA DEL CÓDIGO DE LA SUBRUTINA EN LENGUAJE ENSAMBLADOR


SUBRUTINA DE DIVISION 24 BITS VS 16 BITS VERSION 2.
Tamaño: 3KB
Tipo: Archivo comprimido en WinRar








.

PR-0318 Tarjeta de programación de AVR, para múltiples modelos

PR-0318 Tarjeta de programación de AVR, para múltiples modelos.

EL DISEÑO ORIGINAL DEL CIRCUITO QUE SE MUESTRA EN ESTE POST, FUE OBTENIDO DE LA SIGUIENTE REFERENCIA:

Paredes Martínez, Ernesto. (2018). Curso práctico para programación de AVR - Proyectos completos, código y explicación. México: Alfaomega. 


https://www.alfaomega.com.mx/default/catalogo/profesional/ciencia-y-tecnologia/curso-practico-para-programacion-de-avr.html




En este post les comparto el PCB de la tarjeta de programación para microcontroladores AVR, para múltiples modelos, dentro de los que se encuentran los siguientes:

ATTiny12
ATTiny13
ATTiny15
ATTiny25
ATTiny45
ATTiny85
ATTiny2313
ATTiny4313
ATMega8
ATMega48
ATMega88
ATMega328
ATMega16
ATMega32
ATMega8535
ATMega8515
ATMega162

¿Porqué utilizar este circuito en vez de programar directamente los microcontroladores en un protoboard?
Respuesta: la tarjeta cuenta con resistencias limitadoras de corriente que evitan un corto circuito (en caso de que un pin se programe como salida y se encuentre conectado a tierra ó que un pin se programe en estado bajo y reciba una señal de voltaje que provoca un cortocircuito y que queme nuestro microcontrolador), así mismo evita que arruinemos nuestros micro-controladores debido a un error en la conexión y facilita el montaje y desmontaje al momento de programar gracias a su zócalo tipo ZIF.

**Esta tarjeta cuenta con un conector de 6 pines compatible con el conector del programador AVR-ISP MK-I  y MK-II.
**Esta tarjeta puede utilizarse con cualquier programador serial como los diferentes modelos de AVR-ISP ó USBASP.
**Esta tarjeta se debe alimentar con 5V regulados.
**En la parte izquierda de la tarjeta se encuentra una columna de pines en grupos de 3. Utilizando "jumpers" o puentes se selecciona la configuración adecuada de acuerdo al modelo de microcontrolador que se desea utilizar.
**El grosor de las pistas es adecuado para utilizar CNC, película fotosensible ó el método de planchado

El siguiente video muestra como utilizar esta tarjeta de programación:



A continuación el link de descarga del PCB en formato Circuit Wizard.
Link de descarga del Circuito Impreso:

PCB Tarjeta programadora AVR.
Tamaño: 28KB
Tipo: Archivo de CircuitWizard.


Si no cuentas con el programa Circuit Wizard, descargalo dando click aqui:








____________________________________________________
Palabras clave: programador, programmer, base de programación, zócalo de programación, DIY, Circuito impreso, plantilla, PCB, microcontrolador, MCU, AVR, atmel, ZIF, completo, universal, gratis, descargar, aprender.

Download pdf, teach yourself C in 21 days full

Descarga gratis el libro "Teach Yourself C in 21 days".


Teach Yourself C in 21 days, SAMS, Bradley L. Jones and Peter Aitken, Sixth Edition


A continuacion el links de  descarga del libro completo en formato PDF:

Tamaño:  3,031 KB
Tipo: Rar




----------------------------------------------------------------------------------------------------------
Palabras Clave: download full, book, free, whitout spam, link, direct download, pdf, descargar, descarga, gratis, descargar libro completo, sin spam, descarga directa, Teach Yourself C in 21 days, SAMS, Bradley L. Jones and Peter Aitken, Sixth Edition, download full, book, free, whitout spam, link, direct download, pdf, descargar, descarga, gratis, descargar libro completo, sin spam, descarga directa, Teach Yourself C in 21 days, SAMS, Bradley L. Jones and Peter Aitken, Sixth Edition, download full, book, free, whitout spam, link, direct download, pdf, descargar, descarga, gratis, descargar libro completo, sin spam, descarga directa, Teach Yourself C in 21 days, SAMS, Bradley L. Jones and Peter Aitken, Sixth Edition.


Notas musicales MIDI, AVR Assembler

Notas Musicales tipo “MIDI” con Microncontrolador AVR de ATMEL     (Lenguaje ensamblador, “Assembler”).



NOTA: Para poder utilizar la información que se proporciona en este Post, se requieren conocimientos básicos de programación de Microcontroladores AVR en lenguaje ensamblador (Assembler).

En este post les comparto el código para poder reproducir notas musicales tipo “MIDI”, de manera fácil y rápida, utilizando cualquier microcontrolador AVR de Atmel (ATMega8, ATMega328, ATMega8515, ATTiny2313, ATTiny85, ATTiny45, ATTiny12, ATTiny13, etc....), a través de alguna de sus salidas digitales (link de descarga al final de este post).

El principio de funcionamiento es la utilización de retardos para generar una señal cuadrada de la frecuencia correspondiente a cada nota musical.


Este tipo de tonos se utilizan comúnmente con pequeños altavoces piezoeléctricos (como los que tienen las tarjetas musicales navideñas), y pueden ser útiles para agregar tonos que indiquen el estado de algún proceso, en cualquier proyecto que utilice Microcontroladores AVR programados en lenguaje ensamblador. La siguiente imagen muestra dos tipos de altavoz piezoeléctrico:


Las Notas disponibles en el código que se proporciona en este Post son las siguientes:

DO_3           = 261,626 Hz
RE_3            = 293,665 Hz
MI_3            = 329,628 Hz
FA_3            = 349,228 Hz
SOL_3            = 391,995 Hz
LA_3            = 440,000 Hz
SI_3            = 493,883 Hz
DO_4            = 523,251 Hz
RE_4            = 587,330 Hz
MI_4            = 659,255 Hz
FA_4            = 698,456 Hz
SOL_4            = 783,991 Hz
LA_4            = 880,000 Hz
SI_4            = 987,767 Hz
DO_5            = 1046,50 Hz

Los retardos para cada una de las notas anteriores ya se encuentran ajustados, y solo basta con utilizar el comando “RCALL” para reproducir la Nota que se desee.

Las frecuencias están calculadas para funcionar con una velocidad de operación de 4MHz del microcontrolador.

El tiempo de reproducción de todas las notas, es de 1/3 segundos (una tercera parte de un segundo). Por lo que si se desea reproducir un mismo tono, por ejemplo, por un lapso de un segundo, se debe ejecutar la misma nota 3 veces seguidas.
Ejemplo:

RCALL SOL_3
RCALL DO_3
RCALL FA_3      ; Nota FA x 3 = un segundo
RCALL FA_3
RCALL FA_3
RCALL SILENCIO_1    ;SILENCIO x 3 = un segundo
RCALL SILENCIO_1
RCALL SILENCIO_1
RCALL SOL_3
RCALL DO_3

El diagrama de conexión del circuito para reproducir las notas musicales, puede ser utilizando un simple altavoz piezoelectrico. La conexión debe ser como se muestra en la siguiente imagen: 


También pueden ser utilizadas unas bocinas de PC, para lo cual se debe agregar un capacitor en serie para evitar que pase el voltaje directo DC. A continuación se muestra el diagrama de conexión para utilizarse con bocinas de PC:



A continuación se muestra un video del circuito armado y funcionando, con el programa que se proporciona en este post, utilizando unas bocinas de PC:


Finalmente se muestra una imagen con el circuito utilizando un altavoz piezoeléctrico.


Espero esta información les sea de utilidad. A continuación encontrarás el link de descarga con el código de las Notas Musicales y el código del "programa ejemplo" que aparece en el video, ambos en lenguaje ensamblador (assembler):


Descargar código Notas MIDI.
Tamaño:  3KB
Tipo:  Rar







 ---------------------------------------------------------------------------------------------------------------
Palabras clave: Assembler code, código ensamblador, lenguaje ensamblador, subrutina, librería, avr lib, atmel, microcontrolador AVR, MCU,  ATMega 8, ATMega 328, ATMega 8515,  ATTiny 2313,  ATTiny 85, ATTiny 45, ATTiny 25, ATTiny 15, ATTiny 12, ATTiny 13, como reproducir MIDI, play MIDI, sounds, audio, notas musicales, música, music, melodías, songs, programar, how to?, programing, rcall, code source, código fuente, reproducir sonidos MIDI.

Filtros Activos Pasa-Bajos para Subwoofer

Filtros Activos Pasa-Bajos para Subwoofer.


Un filtro paso bajo corresponde a un filtro electrónico caracterizado por permitir el paso de las frecuencias más bajas y atenuar las frecuencias más altas; así todas las frecuencias se pueden presentar a la entrada, pero a la salida solo estarán presentes las que permita pasar el filtro.

Existen 2 tipos de filtros, Filtros Activos (Utilizan amplificadores operacionales y necesitan de una fuente de alimentación, un ejemplo son la mayoría de las consolas de ecualización de audio) y Filtros Pasivos (Utilizan solamente resistencias, capacitores y bobinas, un ejemplo son los crossover para bocinas).

En este post nos enfocaremos en los filtros Activos del tipo “Pasa-Bajos” también llamados “Pasa-Bajas”, para ser utilizados en amplificadores de audio destinados a alimentar Subwoofers.

Lo primero que hay que saber es que las diferentes configuraciones que existen para todos los tipos de filtros activos, ya se encuentran establecidas y comprobadas, por lo cual no se necesita inventar nada nuevo.

Cada configuración (circuito) que veremos en este post, se encuentra fundamentada en los “Filtros de Sallen Key” también llamados “Células de Sallen Key”, las cuales son configuraciones (circuitos) ya definidos y que pueden ser ajustados mediante la aplicación de una formula especifica. (Si deseas leer más sobre los filtros de Sallen-Key da un click aquí)

También hay que saber que para cada tipo de filtro (pasa-bajas, pasa-medios, pasa-altas) existen algunas variantes que se denominan “orden”.  De esta forma para los filtros pasa-bajas tenemos filtros de Primero, Segundo y Tercer Orden.

La diferencia entre los distintos “ordenes” de los filtros, es la eficiencia con que realizan la discriminación de frecuencias. Observe la siguiente gráfica, en ella se nota claramente el corte de frecuencias para cada orden del filtro.


Como puede observarse  en la gráfica anterior, entre mayor sea el orden del filtro, mas definido es el corte de frecuencias. Usted puede elegir el orden del filtro que mejor se ajuste a sus requerimientos de respuesta en frecuencia, tamaño del circuito y presupuesto disponible.

A continuación se mostrarán los diagramas de los distintos filtros pasa-bajos, también se mostrará la formula aplicable a cada circuito para que usted pueda calcular su propio filtro. Y si lo desea también se incluye una tabla con los valores ya calculados para cada frecuencia desde 80Hz hasta 200Hz.

NOTA 1: Se recomienda utilizar el Amplificador Operacional KIA4558 ya que este es un amplificador de bajo ruido (LNA) ampliamente utilizado en equipos de audio comerciales de buena calidad, sin embargo puede utilizar algún otro como el LM741 ó el TL082, etc…

NOTA 2: Todos los circuitos que se muestran en este post utilizan voltaje simétrico (+/-V). Se recomienda utilizar  +/-9VCD ó   +/-12VCD,  aunque también pueden utilizarse otros voltajes dependiendo de las especificación del Amplificador operacional que desee utilizar.

**** FILTRO PASA-BAJAS DE “PRIMER ORDEN”. ****


El circuito de la imagen anterior corresponde a un filtro activo pasa-bajos de “primer orden”, su fórmula también se observa en la misma imagen. Los términos de la formula son los siguientes:

fc = Frecuencia de corte (Todas las frecuencias debajo de la Frecuencia de corte podrán pasar. Las frecuencias mayores no pasarán)
R = Valor de las resistencias R1 y R2
C = Valor del capacitor C1

Para aplicar la fórmula:

1.- Primero debe establecer un valor de frecuencia de corte.
2.- Posteriormente despeje “R”
3.- A continuación defina un valor comercial para “C” (por ejemplo 100nF), se recomienda utilizar valores menores a 470uF.
4.- Después sustituya los valores anteriores.
5.- Finalmente se resuelve la ecuación para encontrar el valor de “R”.
6.- Comúnmente se obtiene un valor NO COMERCIAL de “R”, por lo que se debe redondear al valor comercial más próximo. Tome en cuenta que en ocasiones es necesario colocar 2 resistencias en serie para obtener un valor más cercano al valor calculado de “R”. Consulte la tabla que se encuentra al final de este post, para seleccionar el valor comercial de resistencias más cercano al valor obtenido en la formula.

A continuación se muestra un ejemplo de las operaciones matemáticas que se describieron en los puntos anteriores:


Listo, ahora ya tiene los valores necesarios (“R” y “C”) para armar su circuito.

Si quiere evitar la resolución de la formula antes mencionada, a continuación se muestra una tabla con valores ya calculados para diferentes frecuencias de corte (para mayor precisión, en algunos casos se requiere colocar en serie dos resistencias como se muestra en la siguiente tabla):


**** FILTRO PASA-BAJAS DE “SEGUNDO ORDEN”. ****

En construcción...

**** FILTRO PASA-BAJAS DE “TERCER ORDEN”. ****

En construcción...











-------------------------------------------------------------------------------------------------------------
Palabras clave: opam, op-am, opamp, op-amp, 4558, LM741, 741, TL081, TL082, amplificador operacional, preamplificador, pre-amplificador, pre-amplifier, filter, filtro, subwoofer, woofer, bufer, 12 pulgadas, 12", bajos, graves, audio, car audio, diseño de audio, diagrama, como hacer?, como calcular?, formular, paso a paso, para dummies, audio design, how to?, DIY, casero, probado, ecuations, step by step, homemade.

PR-0418 Cubo Led 4X4X4 con ATMega8

PR-0418 Cubo LED 4x4x4 con el Microcontrolador ATMega8 (Sin Arduino, Sin multiplexor, Sin convertidor serial).



En este post armaremos un cubo led 4x4x4 sin utilizar Arduino ni multiplexores, ni convertidores seriales, solo utilizaremos el microcontrolador (AVR) ATMega8 como el que se muestra en la siguiente imagen:
NOTA1: Para la elaboración de este cubo LED, se requieren conocimientos básicos de programación de microcontroladores para poder cargar (grabar) el archivo hexadecimal en la memoria interna (flash) del ATMega8.

NOTA2: Por si lo desea, en este post se proporciona un archivo hexadecimal (.hex) con un programa que incluye 7 secuencias distintas, el cual se encuentra listo para ser grabado en un ATMega8. Este archivo se puede descargar al final de este post.

A continuación se muestra el diagrama de conexión de nuestro cubo Led 4x4x4, utilizando un microcontrolador ATMega8:
**El botón reset, indicado como “RS” en el diagrama, es con el cual se cambia de una secuencia a otra.
**Los dos capacitores que se observan en el diagrama (1000µF y 100nF) son para evitar ruidos provenientes de la fuente de alimentación de 5V.
**Los conectores numerados con D0…D7, B0…B7 y C0…C3, corresponden a los puertos de salidas digitales del microcontrolador (PortB, PortD y PortC) en el orden correspondiente.

La siguiente imagen muestra la conexión del nivel (capa) superior del Cubo, se debe considerar que los otros 3 niveles son idénticos (el cubo consta de 4 niveles en total):

**Tome en cuenta que el diagrama anterior representa 16 LED, los cuales conforman tan solo un nivel (el nivel superior) de los cuatro que tiene el Cubo, se debe considerar que los otros 3 niveles son idénticos.
**Todos los LED pertenecientes a un mismo nivel, tienen sus cátodos conectados entre si.
**Todos los LED pertenecientes a una misma columna (vertical), tienen sus ánodos conectados entre si.
**Los conectores numerados con D0…D7, B0…B7 y C0…C3, corresponden a los puertos de salidas digitales del microcontrolador (PortB, PortD y PortC) en el orden correspondiente.

Para armar el cubo de Leds, tome en cuenta los puntos mencionados anteriormente. Si es el primer cubo que va a realizar, le recomendamos guiarse en el siguiente video:


A continuación se muestran imágenes del proceso de armado de nuestro cubo led 4x4:

Se puede utilizar un trozo de papel cascaron como base para ensamblar los LED:
Un Nivel terminado:
Dos Niveles terminados:
Cubo terminado:

Una vez que se ha ensamblado el cubo, se procede a la realización de la tablilla de circuito impreso (PCB). La siguiente imagen muestra el PCB propuesto para este cubo LED:
**El archivo del Circuito Impreso (PCB) puede descargarse en formato Circuit Wizard al final de este post.
**Si no cuenta con el programa Circuit Wizard, también encontrará el link de descarga al final de este post.
**Verifique las medidas de su cubo Led terminado, con las medidas del Circuito Impreso y modifíquelo este último caso de ser necesario.
**Los conectores numerados con D0…D7, B0…B7 y C0…C3, corresponden a los puertos de salidas digitales del microcontrolador (PortB, PortD y PortC) en el orden correspondiente.
**La letra “G” que aparece en la numeración de los conectores corresponde a tierra.
**Verifique varias veces las conexiones entre el PCB del cubo y el PCB del ATMega8, para evitar dañar el Microcontrolador.



A continuación se muestra en una tablilla aparte, el circuito impreso (PCB) en el que será alojado el Microcontrolador ATMega8:
**El archivo del Circuito Impreso (PCB) puede descargarse en formato Circuit Wizard al final de este post.
**Si no cuenta con el programa Circuit Wizard, también encontrará el link de descarga al final de este post.
**Los conectores numerados con D0…D7, B0…B7 y C0…C3, corresponden a los puertos de salidas digitales del microcontrolador (PortB, PortD y PortC) en el orden correspondiente.
**La letra “G” que aparece en la numeración de los conectores corresponde a tierra.
**Verifique varias veces las conexiones entre el PCB del cubo y el PCB del ATMega8, para evitar dañar el Microcontrolador.

A continuación se muestran imágenes del PCB del cubo Led, realizado con el método de planchado:
Verifique que el tamaño de su Cubo LED coincida con el PCB.
Se soldan las resistencias, transistores y cableado.
Cubo montado en el PCB.
PCB del ATMega8
Se inicia con la parte de pruebas y programación.
Una vez comprobando que todo funciona a la perfección, se procede a montar el microcontrolador en su base.
Finalmente, para darle un acabado mas estético, se puede armar la caja del circuito utilizando cartón corrugado, papel cascaron o acetato, dependiendo del gusto de cada quien.


Una vez teniendo listo el cubo montado en su PCB y con sus cables soldados, se procede a la programación de las secuencias que se deseen.

Este cubo fue programado en lenguaje ensamblador (assembler) utilizando el software Atmel Studio 7 (Click aquí para descargar Atmel Studio 7).


En este post no se explicará el proceso de programación, ya que es un tema bastante extenso y de cierta complejidad, sin embargo si usted desea incursionar en el mundo de la programación de Microcontroladores AVR, le recomendamos adquirir algún libro como el siguiente: CURSO PRÁCTICO PARA PROGRAMACIÓN DE AVR ( Click aqui para ir al Libro.)
Si usted posee conocimientos de programación AVR en lenguaje ensamblador (assembler), el código completo puede ser descargado al final de este post.

Al final de este post usted encontrará también el archivo Hexadecimal (*.hex) del programa propuesto para este cubo LED listo para ser quemado (grabado) en un ATMega8.

Si usted utiliza el “Hex” que se proporciona en este post, tome en cuenta grabarlo en la memoria flash y utilizar una frecuencia de 4Mhz del oscilador interno del ATMega8, para obtener mejores resultados de visualización.

A continuación se muestra un video de nuestro cubo Led 4x4x4, con todas las secuencias (8 Secuencias distintas) incluidas en el programa que se proporciona en este post.



Aprendizaje obtenido durante la realización de este cubo LED.- En este cubo se utilizaron LED color amarillo difuso por ser los más económicos en la tienda de electrónica local, sin embargo estos LED no tienen suficiente brillo comparados con otros LED como los de color azul. Por lo tanto nuestro cubo Led necesita estar en un cuarto con poca iluminación para poder apreciar correctamente las secuencias. Dependiendo de sus requerimientos, tome en cuenta esta experiencia al momento de comprar sus LED.

A continuación se encuentra el link de descarga en el cual usted puede descargar un archivo comprimido que incluye lo siguiente:
*Diagrama del circuito en formato Cicuit Wizard.
*PCB´s del circuito en formato Cicuit Wizard.
*Código del programa en lenguaje ensamblador (assembler).
*Archivo Hexadecimal (*.hex) para ATMega8 (considere oscilador interno 4Mhz).
*Disposición de entradas y salidas del ATMega8 (pinout).

Tamaño: 565KB
Tipo:  Rar

Si usted no cuenta con el software Circuit Wizard, también puede descargarlo en el siguiente Link.

Tamaño: 89.1MB
Tipo: Rar














---------------------------------------------------------------------------------------------------------------------------
Palabras clave: Cubo Led, cubo con leds, matriz de led, Led Cube, DIY, Casero, Facil, Programar AVR, ATmega8, AT-mega8, M8, lenguaje ensamblador, assembler language, how to?, como hacer un cubo LED, codigo de un cubo led, programa de un cubo led, como hacer las secuencias de un cubo led, electronica, electronics, PCB, descargar, full code, full circuit, step by step.