Mostrando entradas con la etiqueta Proyectos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Proyectos. Mostrar todas las entradas

jueves, 2 de junio de 2022

Real-time operating systems (RTOS)

Real -Time  Operating Systems(RTOS) se utilizan en entornos donde una cantidad de eventos se requieres procesar en poco tiempo o dentro de ciertos plazos, como por ejemplos: Control industrial, equipos de conmutación telefónica, control de vuelo, simulaciones de tiempo real entro otras.
Este sistema está limitado en el tiempo y tiene un plazo fijo. El procesamiento en este tipo de sistema debe ocurrir dentro de las restricciones específicas. De lo contrario, esto conducirá a una falla del sistema.
Esquema RTOS
Como sabemos los microcontroladores ejecutan tareas previamente programadas y son ejecutadas de manera secuencial, con la implementación de RTOS estás secuencia será más rápida, previene situaciones de errores,  optimiza los tiempos de ejecución, de manera que, se puede gestionar y priorizar  los tiempos de cada evento.
Finalmente explicaré las subrutinas necesarias para implementar un RTOS dentro del microcontrolador:
A manera de ejemplo vamos a ver las señales del parpadeo de 3 leds con los mismos tiempos(1Seg): 
Del video se puede apreciar que las señales se producen de manera secuencial, estas mismas tareas se pueden implementar sin hacer uso de RTOS pero cuando las tareas van creciendo  las líneas de código va creciendo también, a la vez que el código se va haciendo menos legible y ordenado, propenso a errores, es allí donde es preferible construir un RTOS. 

Ya que este código está implementado en ASM la implementación del RTOS ocupa poca memoria, este es el resumen:

Tienes alguna duda de este tema?, o ¿De qué otros temas quieres que hablemos?, puedes escribirnos directamente a nuestro grupo de  Telegram

domingo, 27 de marzo de 2022

Módulo MAX6675-Termocupla tipo K- Interrupciones SPI


Tienes alguna duda de este tema?, o ¿De qué otros temas quieres que hablemos?, puedes escribirnos directamente a nuestro grupo de  Telegram

viernes, 16 de octubre de 2020

EJERCICIO- SRAM-MAQUINA DE ESTADOS-MEALY

 Se requiere realizar una rutina de configuración de direcciones SRAM, de forma que podamos manipular las primeras cuatro direcciones de la memoria SRAM(por ejemplo 0x060, 0x061, 0x062, 0x063), se entiende por manipular a la acción de incrementar y decrementar cada valor de dirección a través de pulsadores además de elegir que dirección manipulo y finalmente guardar el valor de las cuatro direcciones al salir de la configuración.

Diagrama de estados-MEALY.

El circuito de control de valores de las direcciones SRAM es la siguiente:

Circuito estados y transiciones.
Tomar en cuenta la siguiente:
  • Si se presiona el pulsador A incrementaré el valor de dato.
  • Si se presiona el pulsador B decrecerá el valor de dato.
  • Si se presiona el pulsador C avanzaré de estado.
  • Si se presiona el pulsador D regresaré al estado anterior.
  • Si se presiona el pulsador E ingresaré al modo configuración.
  • Si se presiona el pulsador F saldré del modo de configuración.
  • Los estados son representados por leds.
  • Las transiciones son representados por pulsadores.
  • Los estados representan cada dirección de memoria SRAM.
Código se encuentra en el siguiente enlace.

domingo, 30 de agosto de 2020

ATMEL ICE-Placa de interfaz

Esta placa se debe usar siempre y cuando tengamos el grabador ATMEL ICE.
Este es el kit completo de la tarjeta ATMEL ICE, el costo es de 120 dolares aproximadamente , les recomiendo "MOUSER electronic".

Esta placa de interfaz nace de la necesidad de poder tener mayor facilidad a la hora de programar/ depurar chips AVR de cualquier gama. Y cuando menciono "mayor facilidad" me refiero a las siguientes ventajas:
  • Es portable para cualquier familia del microcontrolador AVR.
  • Es más práctico y seguro usar cable de pines de distancia de 2.54mm que de 1.27mm.
  • Facilidad de uso. 
Es bueno mencionar que cuento con el kit completo del ATMEL ICE, sin embargo la tarjeta con que viene no convence y no me parece muy práctico.
Tarjeta que vine con el ATMEL ICE
Realice una placa que es a mi parecer más práctico, les envio unas fotos:
                                                                                               Tarjeta realizada en KICAD V5.20-parte delantera.

                                                                                                   Tarjeta realizada en KICAD V5.20-parte trasera.
les dejo el siguiente link de donde nació la idea de este diseño, donde encontrarán el link de descarga del esquemático  y board de la tarjeta en Eagle. Ahora si desean este diseño(el de la imagen) en KICAD también les dejo en link

Conexión ATMEL ICE-ATMEGA32-JTAG

El Atmega32 se puede conectar tanto por SPI-ISP O JTAG, La diferencia de uno y otro son las opciones que te permite grabar y/o depurar. Por ejemplo mientras JTAG te permite grabar y depurar, ISP solo te permite grabar, es por ello que elegimos usar JTAG. Las conexiones del Atmel Ice es como cualquier programador/depurador, solo conectar los pines correspondientes, en la imagen siguiente por ejemplo se aprecia la conexión con el Atmega32.
                                                                                          Tarjeta realizada en KICAD V5.20-parte trasera.

Posibles conexiones usando el cable de 10 pines 

Conexión ATMEL ICE-ATMEGA32-ICSP

Como se ha visto, con el cable de 10 pines se puede hacer  varias conexiones, y si hablamos de ICSP también lo podemos realizar con el cable de 6 pines. En la imagen siguiente se muestra el orden.
Orden de los pines de la conexión ATMEL ICE-ICSP 
Estaré utilizando este programador-ATMEL ICE, sea con el conector JTAG o como del ICSP.

Conexión ICSP, conector de 10 pines

martes, 18 de agosto de 2020

Proyecto 5-Hola mundo en ASM

 Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar el típico parpadeo de un led, el llamado "Hola mundo", es este ejemplo el led estará conectado al pin B.0.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Lenguaje de Programación: Asembler.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa en Visio Profesional del diagrama de flujo del proyecto. 
  • -----------------------------------------------------------------------------------------------------------

    Suscríbete a mi lista de correos para recibir más material próximamente.

 
-----------------------------------------------------------------------------------------------------------

martes, 27 de agosto de 2019

Proyecto4-Operaciones Lógicas-AND-OR-XOR-NAND-NOR

Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar 5 operaciones posibles entre las cuales están AND,OR,XOR,NAND,NOR Las entradas de la operación serán los puertos A y B , para seleccionar la operación que se va a realizar se usa 5 pines del puerto C, finalmente el resultado estará en el puerto D.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Lenguaje de Programación: Asembler.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa en Visio Profesional del diagrama de flujo del proyecto.
-----------------------------------------------------------------------------------------------------------

Suscríbete a mi lista de correos para recibir más material próximamente.





Si no recibe el producto escríbame a edward.udep@gmail.com
-----------------------------------------------------------------------------------------------------------

lunes, 26 de agosto de 2019

Proyecto3-Leer puerto C y mandar el dato leído al puerto D

Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar fácilmente como leer el puerto C y mandar el dato al puerto D.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Lenguaje de Programación: Asembler.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa en Visio Profesional del diagrama de flujo del proyecto.
-----------------------------------------------------------------------------------------------------------

Suscríbete a mi lista de correos para recibir más material próximamente.





----------------------------------------------------------------------------------------------------------

Proyecto2-Colocar en alto el bit LSB del puerto C

Descripción General.

El proyecto consiste en utilizar un Atmega32 para realizar facilemnte como colocar en alto el bit menos significativo del puerto C.
Circuito
Características Técnicas.

  • Microcontrolador: Atmega 32.

  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.

  • 1 Archivo del programa en bloc de notas. 
  • 1 Archivo del Programa en Visio Profesional del diagrama de flujo del proyecto.
-----------------------------------------------------------------------------------------------------------

Suscríbete a mi lista de correos para recibir más material próximamente.




-----------------------------------------------------------------------------------------------------------

viernes, 23 de agosto de 2019

Proyecto1-Escribir el valor 55 hex en el puerto C

Descripción general.
El proyecto consiste en utilizar un Atmega 32 para realizar la operación más básica como escribir un valor en un puerto, en este caso usaremos el puerto C para escribir el valor 55Hex.
Circuito

Características Técnicas.

  • Microcontrolador: Atmega 32.
  • Oscilador: 1Mhz.
  • Simulador: Desarrollado en Proteus Design Suite V8.0 SPO.
  • Compilador: Desarrollado en Atmel Studio 7 pero portable para MPLAB-ASM.
  • Autor: Electrónica y Control-EYC.

Contenido de la descarga.

  • 1 Archivo del programa en Proteus Design Suite V8.0 SPO.
  • 1 Archivo del programa en bloc de notas.
  • 1 Archivo del programa  visio Profsional del diagrama de fujo del proyecto.
--------------------------------------------------------------------------------------------------------------------------

Suscribete a mi lista de correos para recibir más material próximamente.





--------------------------------------------------------------------------------------------------------------------------

miércoles, 2 de enero de 2019

Comunicación SPI-MAX 7219-7221- BCD a 7 segmentos.

SPI-MAX7221-DISPLAY

                                                          Aplicación SPI-MAX 7221-Displays BCD 7Segmentos.
Aplicación SPI-MAX 7221-matriz de leds.

¿Qué es el MAX7221?
  • El Max7221 es un driver de displays de 7 segmentos de cátodo común. 
  • Se comunica con microcontroladores mediante SPI. 
  • Puede controlar hasta 64 leds. 
  • Tiene un chip decoder BCD(CODE B). 
Caracteristicas 
  • Salida y entrada serial hasta 10 Mhz. 
  • Control de leds individual. 
  • Selección de decode/no decode. 
  • Apagado programable almacenando el valor previo en memoria. 
  • Control de iluminación. 
  • Display en blanco al encender. 
  • Driver de displays de led (cátodo común). 
  • 24 pines.
Diagrama Funcional MAX7221.
Se puede ver en el diagrama funcional del MAX 7221 las siguientes caracteristicas:
  • Los bits que llegan son 16, los bits mas significativos ingresan primero al MAX7221 y los primero en salir por DOUT.
  • D15 al D12 no se usan.
  • D11-D8 son bits de configuración(comandos).
  • D7-D0 son los bits de datos.
  • Tiene un bloque "CODE B" que si se desea se puede usar o no. Si se desea usar el Code B se debe de tener la "Tabla 5 .Code B Font".
  • El MAX 7221 tiene 5 registros de configuración:  Shutdown register(0xXC), Mode Register(0xX9),Intensity Register(0xXA), Scan-Limite Register(0xXB),Display-test Register(0xXF).
Registros de direcciones.
Mapa de registros de direcciones(comandos).
Se va a detallar la funcionalidad de cada comando(registros de direcciones ó registro de configuraciones).
Intensity Register(0xXA)

                                                      Registro de intensidad de luz de los leds.

El Code Hex=0xXF configura al registro "Intensity Register" como máxima intensidad.(X quiere decir que puede ser 0 ó 1).

Scan-Limit Register Format(0xXB)
Scan-Limit Register Format
Este registro se puede elegir la cantidad de display que puedes controlar. Por ejemplo si escribo en el registro de dirección (0xXB) el dato de dato 0x05 podre configurar 6 displays.
  • Code Hex=0x00--> Controlo sólo 1 display.
  • Code Hex=0x01--> Controlo 2 displays(digists 0 y digits 1).
  • Code Hex=0x02--> Controlo 3 displays(digists 0, digits 1,digits 2).
  • Code Hex=0x03--> Controlo 4 displays(digists 0, digits 1,digits 2,digits 3).
  • Code Hex=0x04--> Controlo 5 displays(digists 0, digits 1,digits 2,digits 3,digits4).
  • Code Hex=0x05--> Controlo 6 displays(digists 0, digits 1,digits 2,digits 3,digits4,digits5).
  • Code Hex=0x06--> Controlo 7 display(digists 0, digits 1,digits 2,digits 3,digits4,digits5,digits6).
  • Code Hex=0x07--> Controlo 8 display(digists 0, digits 1,digits 2,digits 3,digits4,digits5,digits6,digits 7).
si en vez de usar displays se usa una matriz de leds, este registro permitirá elegir la cantidad de columnas que se quiere controlar en la matriz.

Shutdown Register(0xXC)
                                                               Shutdown(apagado) Register

Cuando el MAX7221 está en modo de apagado, el oscilador de exploración se detiene, todas las fuentes de corriente del segmento se ponen a tierra, y todos los controladores de dígitos se colocan en V +, lo que deja la pantalla en blanco. Los datos en el dígito y en los registros de control permanecen inalterados. El apagado se puede usar para ahorrar energía o como una alarma para encender la pantalla ingresando y saliendo sucesivamente del modo de apagado. Por La corriente de suministro mínima en el modo de apagado, las entradas lógicas deben estar a tierra o V + (niveles de lógica CMOS).
Por lo general, se necesitan menos de 250 μs para que el MAX7219 / MAX7221 deje el modo de apagado.

Display-Test Register Format(0xXF)
Display-Test Register Format
Este registro de dirección permitirá realizar un test de los leds de los displays. En modo test todos los leds debería prender.
Decode Mode(0xX9)
Mode Decode
En este registro se configura el MODO DECODE ó NO DECODE.
  • Si el dato de este registro(0xX9) es 0x00 se configura el modo NO DECODE(En este modo se usa la tabla 6).

    (Modo no decode)
  • Si el dato de este registro (0xX9) es 0x01 se HABILITA el MODO DECODE-Code B decode for digits 0.
  • Si el dato de este registro (0xX9) es 0x02(0b00000010) se HABILITA el MODO DECODE-Code B decode for digits 1.
  • Si el dato de este registro (0xX9) es 0x03(0b00000011) se HABILITA el MODO DECODE-Code B decode for digits 0 y digits 1.
  • Si el dato de este registro (0xX9) es 0x04(0b00000100) se HABILITA el MODO DECODE-Code B decode for digits 2.
  • Si el dato de este registro (0xX9) es 0xA(0b00001010) se HABILITA el MODO DECODE-Code B decode for digits 1 y digit 3.
  • Si el dato de este registro (0xX9) es 0xFF(0b11111111) se HABILITA el MODO DECODE-Code B decode for digit0,digit1,digit2,digit 3,digit4,digit5,digit6,digit7.
CODE B Font
Code B Font
Como se puede ver tiene un reducido número de caracteres que se pueden plasmar en el display, por ejemplo no puedo visualizar la letra "r".

No op(0xX0)
Registro que configura si se habilita el modo cascada(para conectar a otro MAX7221 por  Dout.
Digit0(0xX1)
Este registro de dirección se usa para  elegir el display 1(Digit0) la cual se va ha configurar.
Digit1(0xX2)
Este registro de dirección se usa para  elegir el display 2(Digit1) la cual se va ha configurar.
Digit2(0xX3)
Este registro de dirección se usa para  elegir el display 3(Digit2) la cual se va ha configurar.
Digit3(0xX4)
Este registro de dirección se usa para  elegir el display 4(Digit3) la cual se va ha configurar.
Digit4(0xX5)
Este registro de dirección se usa para  elegir el display 5(Digit4) la cual se va ha configurar.
Digit5(0xX6)
Este registro de dirección se usa para  elegir el display 6(Digit5) la cual se va ha configurar.
Digit6(0xX7)
Este registro de dirección se usa para  elegir el display 7(Digit6) la cual se va ha configurar.
Digit7(0xX8)
Este registro de dirección se usa para  elegir el display 8(Digit7) la cual se va ha configurar.

SI fueran matrices de leds en vez de elegir el display se eleigen las columnas de las matrices.

Proceso de envio de datos del micro al max7221 por SPI:
Otra manera de envio[MULTIBYTE]: