█████╗ ██╗ ███████╗ ██████╗ ██████╗ ██╗
██╔══██╗██║ ██╔════╝██╔═══██╗██╔══██╗██║
███████║██║ █████╗ ██║ ██║██████╔╝██║
██╔══██║██║ ██╔══╝ ██║ ██║██╔══██╗██║
██║ ██║███████╗██║ ╚██████╔╝██████╔╝██║
╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ ╚═════╝ ╚═╝
Alfombra Teclado de baile interactivo.
Proyecto de fin de curso de Sistemas Embebidos para Tiempo Real.
Autores (2025):
- Fabricio Correa.
- Ricardo Llorente.
- Gennaro Monetti.
Tutor (2025): Josefina Lema.
Autores (2026):
- Fabricio Correa.
- Gennaro Monetti.
Tutor (2026): Julián Oreggioni.
La siguiente configuración fue testeada en Code Composer Studio v20.1.
Se debe configurar el dialecto de C99:
- Ir a propiedades del proyecto.
- En la ventana de propiedades ir a: Build > Tools > MSP430 Compiler > Advanced Options > Language Options.
- Cambiar la opción
C DialectaCompile program in C99 mode.
Se recomienda activar las optimizaciones del compilador:
- Ir a propiedades del proyecto.
- En la ventana de propiedades ir a: Build > Tools > MSP430 Compiler > Optimization.
- Cambiar
Optimization levela4 - Whole Program Optimizations. - Cambiar
Speed vs. size trade-offsa5 (speed).
Los cables van de izquierda a derecha, en los siguientes puertos: P2.0, P2.1, P2.3, P2.4, P2.5.
Conectar P1.6 a DCL y P1.7 a SDA.
Sacar los jumpers de P2.1, P2.3, P2.5 y P1.6. El jumper de P1.0 debe quedar puesto.
El juego permite guardar la tabla de resultados en memoria FLASH a demanda (presionando la tecla 1 mientras no se está en la pantalla de juego). Para esto, es necesario modificar el archivo lnk_msp430g2553.cmd como se explica más abajo. Notar que se puede omitir este paso para ejecutar el juego, pero en caso de no hacerlo, presionar la tecla 1 generará comportamientos indefinidos, potencialmente borrando parte de la sección de código en la memoria FLASH.
- En la sección donde se define el mapeo de la memoria, comentar o borrar la entrada (mapeo) FLASH.
- Agregar una nueva entrada donde estaba FLASH, de nombre
ALFOBI_SCORES, que empiece en la misma dirección y tenga largo de 512 bytes (0x0200, equivalente a un segmento). Además, debe rellenarse con fill = 0xFFFF. - Agregar otra entrada FLASH abajo de
ALFOBI_SCORES, que empiece en el origen deALFOBI_SCORESmás 0x0200, de largo igual al que había en FLASH menos 0x0200.
Por ejemplo, si en el archivo .cmd tenía:
MEMORY
{
// ...
FLASH : origin = 0xC000, length = 0x3FDE
// ...
}Debería quedar de la siguiente forma:
MEMORY
{
// ...
// FLASH : origin = 0xC000, length = 0x3FDE
ALFOBI_SCORES : origin = 0xC000, length = 0x0200, fill = 0xFFFF
FLASH : origin = 0xC200, length = 0x3DDE
// ...
}Importante: Si luego de completar los pasos anteriores, el segmento ALFOBI_SCORES no tiene origen en 0xC000, se debe cambiar la dirección de flash_score en el archivo flash.c para que coincida con dicha dirección de origen.
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
Posible solución: desconectar el display de la fuente y volver a conectar. Luego presionar el botón de reset de la placa.
Explicación: cuando la ejecución se corta durante una transmisión I2C, queda la flag UCBBUSY encendida y el display queda en un estado inválido.
Esto se debe a que no se configuró el archivo .cmd como se explica en la sección Flash.