Controlador de DJ USB DIY (8 / 16 paso)

Paso 8: Firmware - microcontrolador secundario

Coloque uno de los MSP430G2553 en el Launchpad y conéctelo a su computadora. Descargar el código proporcionado y abrirlo en Energia. A continuación proporcionamos un esbozo general de cómo las funciones de código. No se cubre la operación de la biblioteca de teclado ya está bastante bien documentado aquí

El microcontrolador secundario es responsable de comunicarse con el MCP3008 sobre SPI e interpretación entrada del telclado numérico. He incluido el código del microcontrolador secundario para este proyecto y un demo que hice para comunicarse con el MCP3008 en general (solo tutorial que encontré fue para Raspberry Pi). Esto debería funcionar en Launchpad y Arduino creo.

Entender el código

Cuando una clave es presionada, liberada o sostenida, se llama a la función llamada keypadEvent. Esta función es responsable de enviar mensajes al microcontrolador principal cuando cambia el estado del teclado.

De todos modos, cuando se presiona una tecla por ejemplo, SendKeypadEvent se llama con los argumentos de clave (tecla presionada), una verdadera (1, lo que significa que la tecla fue presionada), digitalRead P1.7 (que es el interruptor de 2 vías que identifica la plataforma que se ve afectada por la pulsación de la tecla), y el modo actual (que se determina en el bucle principal del programa).

SendKeypadEvent formatos de mensaje que puede ser entendido más adelante abajo de la línea. Consulte el paso anterior para obtener más información acerca de cómo está formateado el protocolo para cada control. Envía dos bytes que indica al programa Qué tecla fue presionada (o si fue liberado), la cubierta actual y el modo actual.

Ahora si nos fijamos en el bucle principal del programa vemos algunos trozos de código. El primer bit del código Lee que cualquier nueva pulsación de las teclas y el teclado se envía desde allí. La segunda sección Lee todos los controles analógicos. La tercera sección, envía un mensaje de cambio de cubierta. Esto se hace en el bucle principal mediante un indicador establecido por la rutina de servicio de interrupción porque enviar datos en serie en de ISR están ineficientes.

Las perillas son todas las clases de SPI_Control. Esto localiza todas las variables y métodos y permite registrar cualquier número de mandos que necesita. El bucle principal sólo comprueba si la clase ha determinado un valor nuevo (bastante), y si hay, envía un mensaje detallando lo que mando y es lo que el nuevo valor. Mi comentario en el código resume la comunicación con el MCP3008 sobre SPI bastante bien:

En lectura de datos de la MCP3008 ADC IC:

Tenga en cuenta que el SPI está en modo 0,0, que significa SCLK huelga en estado 'bajo'

Pasos

  1. Perno de tirón CS/SS (selección de Chip select/esclavo) baja (0)
  2. Enviar datos de bit de start, 00000001 o 0 x 01 (Lea la hoja de datos)
  3. Enviar los datos de selección de canal de configuración de entrada
    1. Nota: Formato de datos de configuración de entrada: SGL/DIFF, D2, D1, D0, X, X, X, selecciona X. SGL/DIFF no importa qué modo, D2, D1 y D0 (3 bits) Seleccione el canal a leer (0-7) y XXXX. 1 = balanceado, 0 = diferencial
  4. ¿El primer byte recibido será el siguiente:? /? /? /? /? / 0/B9/B8, donde? es desconocido, 0 es un null, y B9 y B8 son los primeros bits de la muestra de 10 bits. El siguiente byte recibido será el resto de la muestra de 10 bits
  5. Para obtener una lectura significativa, tenemos que combinar los bits 2 desde el primer mensaje con el segundo mensaje. Podemos lograr esto por recortar los 6 primeros bits del primer byte (usando bitwise & con la máscara 0b00000011) cambiando los bits 8 a la izquierda y el ing de OR bit a bit del primer byte con el segundo byte
  6. Comunicación final estableciendo CS/SS alto

Eso es un poco confuso, pero todo lo que necesitas saber es que la función readADC sólo obtiene un valor de 10 bits de la MCP3008 para cualquier canal.

Si nos fijamos en la función SendDeckChange, notará que se envía como una pulsación de teclado. Puesto que sólo tenemos 12 teclas, pero representa la tecla que se presionó con 4 bits, podemos usar 12-15 para lo que sea porque nunca será ser recibidos como entrada del hardware. Así que utilizamos la tecla ID 15 para representar cambios de baraja.

Eso es bastante. Cada ciclo de reloj del microcontrolador analiza para ver si un botón del teclado ha sido presionado, consultas al MCP3008 para todos los valores de la perilla y comprueba si han cambiado dentro de una cierta sensibilidad y también comprueba si el interruptor de la cubierta ha sido movido de un tirón. Ver el código para una explicación más detallada, está bastante bien comentado.

Cargar el código

Ahora debe tener una comprensión de cómo funciona el firmware del microcontrolador secundario, así que vamos adelante y subirlo! Obtener el código que postee en su ventana de código de Energia y haga clic en la marca de verificación en la esquina para verificar/compilación. Debe comprobar todos fuera. Cuando eso se hace, cargar el código en el microcontrolador haciendo clic en la flecha situada junto a la marca de verificación. Cuando es completa, desconecte el Launchpad, retirar el microcontrolador y ponerlo a un lado por ahora.

Artículos Relacionados

Hacer que un controlador de NES USB

Hacer que un controlador de NES USB

este tutorial combina un controlador original de NES, USB teclado, alambre y tacto pasa a un controlador de NES USB adecuado para uso con NES y arcade emuladores. La idea básica es que la unidad de controlador de teclado está instalada en el controla
Cómo configurar un controlador de NES USB con NESTOPIA en el PC

Cómo configurar un controlador de NES USB con NESTOPIA en el PC

NESTOPIA jugar no es lo mismo sin un controlador de NES USB. En este tutorial usted aprenderá cómo mapear botones y configurar el controlador de NES USB.
Puntero de láser USB DIY

Puntero de láser USB DIY

Hola y Bienvenidos a mi primera vez Instructable. Este va a ser un proyecto pequeño, así que no esperes demasiado de él. Básicamente va a ser lo que dice el título: un puntero láser pequeño.(Pequeño descargo de responsabilidad: no puedo soldar o util
Receptor IR USB DIY

Receptor IR USB DIY

En este tutorial voy a mostrarte cómo hacer un pequeño, barato (menos de $5) receptor IR USB.El microcontrolador utilizado actúa como un teclado estándar, por lo que debe trabajar en cada equipo.Con este receptor puede usar un mando a distancia para
Controlador de NES USB Flash Drive

Controlador de NES USB Flash Drive

esta es la forma más sencilla para convertir un controlador NES vintage en un simple pendrive en un presupuesto y puede guardar las piezas originales, si alguna vez desea volver a su estado original de trabajo.Paso 1: Reunir las piezas el primer paso
Controlador de SNES USB

Controlador de SNES USB

primer instructable. Me dejan saber lo que necesita y fija.No hago el circuito o programa. Justo estoy haciendo una guía que muestra el montaje paso a paso de cómo hacer el controlador SNES USB. La página original está aquí:www.raphnet.net/Electroniq
Controlador de altavoz rodea DIY

Controlador de altavoz rodea DIY

de un recurso: notas de curso de diseño de altavoz + materiales de vídeoEn el pasado, servicios de reparación de altavoces eran escasos, a menudo costosa y recambio rodea para DIY casi imposible a la fuente. La web ha mejorado esto, rodea está amplia
Controlador de NES USB unidad Flash

Controlador de NES USB unidad Flash

esto es una manera fácil de transformar un controlador de Nes en un práctico pendrive. SIN SOLDADURA INVOLUCRADO!(Este es nuestro primer Instructable así imágenes e instrucciones de aficionado tal vez!)Nuevamente hemos hecho este instructable con mej
Crear un controlador de servos USB 6

Crear un controlador de servos USB 6

Hola, estaba buscando un controlador servo y encontre esto. Pensé que otros como me resultaría interesante para construir. Sin embargo, aún no trate de hacer esto si no tienes conocimiento en circuitboards del edificio. Bassicly es un modelo casero d
Construcción de una controlador de Midi básico parte 1 - 3 fácil olla (potenciómetro) Arduino Uno efectos controlador Midi (serie-USB)... Rápido, fácil y barato!

Construcción de una controlador de Midi básico parte 1 - 3 fácil olla (potenciómetro) Arduino Uno efectos controlador Midi (serie-USB)... Rápido, fácil y barato!

Hola a todos,Soy relativamente nuevo en Arduino y así han estado luchando contra mi manera de hacer mis propios controladores midi. Hay una gran cantidad de información alrededor pero no pude encontrar un tutorial simple para un dispositivo tan simpl
Cómo hacer un ventilador USB | DIY

Cómo hacer un ventilador USB | DIY

Hola, ahí, mis queridos amigos, en este video les mostraré una idea increíble cómo hacer un ventilador usb con sus propias manos, que puede operar desde su ordenador portátil o teléfono.
Cargador del teléfono USB DIY Solar panel

Cargador del teléfono USB DIY Solar panel

Necesita un mosfet KA7805Panel solarrack USBpegamento calientey este mi video (actualización)
Ventilador móvil USB DIY

Ventilador móvil USB DIY

En este tutorial, aprenderás cómo hacer un ventilador USB, que puede ser utilizado con cualquier dispositivo con un puerto USB, incluso con un teléfono móvil.Paso 1: Cosas tendrás necesidad de-1. un cable USB2. un motor de la c.c. (yo tengo la mía de
Cargador de batería de Cámara Digital USB DIY

Cargador de batería de Cámara Digital USB DIY

Hola a todosEste proyecto comenzado como compré pre propiedad de cámara digital de SAMSUNG. que vino con la nothinging pero la tarjeta de memoria de 4GB. Aunque estaba tratando de aferrarse para el cargador o sus datos y carga cable pero se supone qu