Ir al contenido principal

Entradas

Mostrando entradas de 2017

Juegos con matrices de LEDs y Arduino

En una entrada anterior ya utilizamos una matriz de LEDs junto con el integrado max7219. Una de las virtudes de este integrado es que facilita la conexión de varias matrices usando un bus serie SPI , así como otros tipos de displays, como los de siete segmentos. En este artículo vamos a utilizar dos matrices para construir un pequeño juego tipo Pong, Arkanoid o, en fin, ya sabes a lo que me refiero, una raqueta que controla el jugador y una pelotita que hay que evitar que se salga por la parte inferior. He montado el circuito sobre una protoboard usando un Arduino Nano, dos matrices de LEDs y un potenciómetro conectado a una entrada analógica del Arduino para controlar la raqueta. El esquema del circuito es el siguiente. Como ves, el circuito no tiene nada de particular. Los pines D8, D9 y D10 de Arduino se conectan a los pines CS, CLK y DIN del bus SPI de la matriz de LEDs. Además, obviamente, de conectar VCC y GND. El integrado max7219 nos provee, en la parte superior de la...

Máquinas de estado finito en VHDL

Las máquinas de estado finito, más conocidas por su acrónimo en inglés FSM (Finite State Machine), se utilizan ampliamente en el diseño de circuitos digitales (además de en otros ámbitos de la ingeniería, como la programación), para describir el comportamiento de un sistema según el valor de sus entradas y de cómo van cambiando en el tiempo. Ésta es una definición parcial pero que nos permite hacernos una primera idea intuitiva. Desde el punto de vista de las FSM, un sistema está compuesto de estados por los que va pasando el sistema, de señales de entrada que modifican esos estados y de señales de salida que pueden utilizarse para conocer el estado del sistema y actuar en consecuencia. Un ejemplo muy visual podría ser un semáforo, el cuál dispone de tres estados diferentes, uno para cada color. Las entradas del sistema las podría generar un temporizador que activa una señal cada cierto tiempo, indicando que hay que pasar al siguiente estado. Por último, las salidas del sist...

Relojes MMCM en FPGAs

Cuando se diseñan sistemas digitales síncronos, una de las reglas de oro es usar un sólo dominio de reloj para todo el circuito. Esto quiere decir que sólo usaremos una única señal de reloj conectada a todos los elementos síncronos del circuito. Por lo tanto debemos evitar una práctica bastante habitual que es usar la salida de un elemento del sistema, como por ejemplo un contador, para obtener la señal de reloj de otro elemento cualquiera. De hecho, aquí lo hicimos (mal) cuando diseñamos nuestro reloj digital (y usamos la salida del contador de 1Hz como señal de reloj para el contador de segundos). Aunque siempre en aras de la simplicidad y la pedagogía :-) Así que si queremos que nuestro diseño no tenga problemas de sincronización, el mismo reloj debe ser usado por todos y cada uno de los elementos síncronos. Sin embargo, si nuestro circuito es complejo y sobre todo, si ocupa una gran superficie de la FPGA, la señal de reloj puede sufrir pequeños retardos al distribuirse en...

Timers en MSP430

El MSP430 está provisto de temporizadores (el número de ellos depende de la versión del microcontrolador) que permiten medir intervalos de tiempo y generar eventos basados en tiempo. No hay que confundir los timers con los relojes de tiempo real que también equipa el MSP430. Hay dos tipos de timers, Los Timers_A y los Timers_B. Ambos son muy similares, y aunque los de tipo B poseen alguna característica más que los A, aquí no vamos a profundizar en ello. Alguna de las características de los timers son: Utilizan un contador de 16 bits con cuatro modos de operación. Pueden seleccionar y usar diferentes fuentes de reloj. Utilizan registros de captura/comparación para su configuración. Permiten salidas PWM (Power Width Modulation). Pueden usar interrupciones. Nos apoyaremos en el siguiente esquema de un Timer_A para ver cómo se utiliza. Hay dos tipos de bloques bien diferenciados. Rodeado de verde está el bloque contador, y de azul el bloque de cap...

Modos de bajo consumo en MSP430

En el artículo hicimos un repaso al módulo de reloj , que está íntimamente ligado a los modos de bajo consumo del microcontrolador MSP430. Una de las ventajas de éste sobre otros microcontroladores es la gran flexibilidad que ofrece a la hora de configurar los relojes y, por ende, el modo de bajo consumo. El MSP430 permite la desactivación de las fuentes de reloj y de los propios relojes, lo que permite desactivar la CPU y los periféricos mientras no sean necesarios. Además, el módulo de gestión de energía (PMM o Power Management Module) hace posible incluso apagar el core (CPU) del microcontrolador. En la práctica, la mayoría de las aplicaciones no requieren que la CPU o los periféricos estén siempre funcionando. Imaginemos un dispositivo IoT que envía información sobre contaminación atmosférica a un servidor remoto. En este caso, no es necesario estar constantemente consultando el estado de los sensores y enviando información, sino que puede hacerse cada pocos segundos o inclu...

Módulo de reloj en MSP430 (Unified Clock System)

El módulo de reloj del MSP430 (o como lo llama TI, Unified Clock System) es muy versátil, y es el responsable de la gran capacidad de este microcontrolador para ser uno de los mejores en lo que a bajo consumo se refiere. Vamos a hacer un repaso general de este módulo centrándonos en las partes más relevantes ya que, por sí sólo, este módulo daría para escribir un libro en exclusiva. A vista de pájaro, tal y como observamos en el esquema anterior, podemos distinguir las siguientes señales: Dos entradas (XIN y XT2IN) y dos salidas (XOUT y XT2OUT) que permiten conectar dos osciladores externos. Podríamos conectar tanto un cristal de cuarzo (con sus correspondientes condensadores) o una fuente de reloj externa. Una señal de reloj llamada MCLK, que es la señal de reloj que utiliza  la CPU. Otras dos señales de reloj ACLK y SMCLK, que utilizan los periféricos y la memoria flash. En el siguiente esquema vemos el esquemático del módulo de reloj en más detalle. Hay t...