Paso 9: Firmware - microcontrolador principal
Ahora podemos programar el microcontrolador principal. Colocar el otro MSP430G2553 en el Launchpad y conectarlo a su ordenador. Energia debe todo listo ya.
El microcontrolador principal es responsable de leer varios botones, el resto de los controles analógicos (6 en total), interpretando los entrada de codificador rotatorio y pasar datos seriales de microcontrolador secundario a través de a la computadora conectada.
Entender el código
Primero voy a comentar lo que hace el microcontrolador principal con mensajes del microcontrolador secundario porque es el más simple. Mensajes del microcontrolador secundario ya vamos el pin RXD preformateado, por lo que el microcontrolador principal simplemente vuelve a enviar el mensaje recibido en su propio pin TXD a la computadora. El código para esto se encuentra en el bucle principal en la parte inferior. Es todos los mensajes de teclado por ahora.
Ahora si nos fijamos en la parte superior de la programa, notará que definir una clase llamada AnalogControl. Esta clase es casi idéntica a la SPI_Control en el firmware del microcontrolador secundario, pero Lee al ADC a bordo en lugar de pedir la MCP3008 un valor. Tiene incorporado un promedio y alisar código. Lo que lo convierte en una clase le permite configurar fácilmente cualquier número de controles analógicos. Puede establecer el control qué es el pin que se muestrea el valor ADC de y la sensibilidad del control.
El siguiente es la clase de codificador rotatorio. Esto le permite configurar fácilmente cualquier número de codificadores rotatorios también, pero para mí uno es bastante en este proyecto. La clase de codificador rotatorio simplemente necesita saber lo que los pernos a utilizar. Las dos primeras son el control real y la tercera es la entrada de pulsador integrado.
En el lazo, llamada isNew para cada control y utilizar su valor devuelto para determinar si debemos enviar un cambio de control o no. La función isNew contiene incorporado suavizado para analógico controla de modo que un nuevo valor no es enviado cada bucle (medido las resistencias pueden ser un poco inestables por varias razones como la temperatura y las vibraciones), esto evita control de jitter.
También comprobamos una matriz de valores booleanos que indican si un control digital ha cambiado de estado. Esta bandera se encuentra en las rutinas de servicio de interrupción para un cierto botón. Una vez más, esto se hace porque enviar datos en serie en un ISR es ineficiente.
Para una explicación de cómo funciona el código de codificador rotatorio, revisa este tutorial.
Gracias al tutorial de bildr anterior, que es lo mi código de codificador rotatorio de!
Cargar el código
Ahora que usted comprende el código del microcontrolador principal, podemos subir al microcontrolador. Copie mi código en la ventana de tu Energia y pulsa el botón verificar. Cuando el proceso de compilación es completado y sin errores, puede subir el código al microcontrolador.
Este microcontrolador se queda en el Launchpad en el proyecto terminado así que usted puede dejarlo donde está una vez que haya terminado de programar.