Tabla de contenido:

Máquina de estados finitos en un MSP430: 6 pasos
Máquina de estados finitos en un MSP430: 6 pasos

Video: Máquina de estados finitos en un MSP430: 6 pasos

Video: Máquina de estados finitos en un MSP430: 6 pasos
Video: Ejercicio sencillo de una secuencia usando Modelo Moore y Mealy 2024, Mes de julio
Anonim
Máquina de estado finito en un MSP430
Máquina de estado finito en un MSP430
Máquina de estado finito en un MSP430
Máquina de estado finito en un MSP430

Le mostraré cómo programar un Launchpad MSP430G2 con Finite State Machines (FSM) usando YAKINDU Statechart Tools directamente en Texas Instruments Code Composer Studio.

Este tutorial contiene seis pasos:

  1. Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio
  2. Introducción a State Machines en Code Composer Studio
  3. Crea la máquina de estado Blinky
  4. Genere el código C de la máquina de estado
  5. Llamar a la máquina de estado desde su código
  6. ¡Ejecuta el proyecto!

¡Este proyecto se puede utilizar como modelo para cualquier MPS430 o MSP432!

Suministros

Software:

  • Herramientas de gráficos de estado de YAKINDU
  • Entorno de desarrollo integrado (IDE) de Code Composer Studio (CCS)

Hardware:

Kit de desarrollo LaunchPad MSP430G2

Paso 1: Instalar las herramientas de Statechart de YAKINDU como un complemento para Code Composer Studio

Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio
Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio
Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio
Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio
Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio
Instalación de YAKINDU Statechart Tools como complemento de Code Composer Studio

Primero, debe instalar Code Composer Studio de TI. Probé con éxito la configuración con CCS versión 9.2 y anteriores una vez. Puede encontrar un enlace de descarga aquí:

Descarga CCS

Haga clic para descargar y asegúrese de haber elegido al menos las MCU de ultra baja potencia MSP430 durante la instalación. Mientras tanto, puede obtener el sitio de actualización de YAKINDU Statechart Tools. Ir a:

Descargar las herramientas de Statechart de YAKINDU

En este sitio, haga clic en Descargar ahora y siga las instrucciones. Como puedes ver en la foto: es gratis para uso no comercial. Después del registro, obtendrá una descripción general de las opciones de descarga. Haga clic en SITIO DE DESCARGA ESTÁNDAR y haga clic en INSTALAR DESDE EL SITIO DE ACTUALIZACIÓN. Allí obtendrá un enlace en Versiones estables. Coge este enlace y guárdalo o colócalo en tu portapapeles.

La instalación de YAKINDU Statechart Tools en Code Composer Studio puede ser un poco complicada, dependiendo de la versión de Code Composer Studio que esté utilizando. Quizás estos pasos estén desactualizados mientras tanto; sin embargo, no dude en preguntarme en los comentarios si necesita ayuda.

Estos son mis pasos:

Después de instalar CCS con éxito en su sistema, abra la pestaña Ayuda y haga clic en Instalar nuevo software … En este asistente, agregue el siguiente sitio de actualización a través del botón Agregar …:

download.eclipse.org/releases/2018-09/

No agregue nada, solo debe resolverse. Puedes verlo en la foto.

Después de esto, repita los pasos y haga clic en el botón Agregar…. Inserte el sitio de actualización de YAKINDU Statechart Tools, que con suerte habrá guardado. Luego, seleccione la casilla de verificación Administración de licencias de YAKINDU y haga clic en Siguiente. Sigue las instrucciones. Su IDE puede reiniciarse una vez.

Finalmente, puede instalar las herramientas de Statechart de YAKINDU. Repita los últimos pasos, pero esta vez elija YAKINDU Statechart Tools Standard Edition. Una vez más, sigue las instrucciones. Después de reiniciar, ha instalado con éxito YAKINDU Statechart Tools.

Paso 2: Introducción a State Machines en Code Composer Studio

Introducción a State Machines en Code Composer Studio
Introducción a State Machines en Code Composer Studio
Introducción a las máquinas de estado en Code Composer Studio
Introducción a las máquinas de estado en Code Composer Studio

Para utilizar las máquinas de estado, proceda de la forma habitual y cree un nuevo proyecto CCS. Abra la pestaña Archivo, abra Nuevo y haga clic en Proyecto CCS. Defina un nombre de proyecto, elija su microcontrolador y cree un proyecto vacío, que contiene un archivo main.c vacío. Usé el MSP430G2553.

¡Ahora puede empezar a trabajar con máquinas de estado!

Haga clic con el botón derecho en el proyecto, abra Nuevo y elija Modelo de diagrama de estado. Se abrirá un asistente en el que puede seleccionar su proyecto y nombrar su diagrama de estado. Por ejemplo, llámelo blinkyStateMachine.sct.

El modelo Statechart aparecerá en la carpeta del proyecto después de hacer clic en Finalizar. Haga clic en Sí si se le pide que cambie la perspectiva.

Paso 3: crear la máquina de estado Blinky

Crea la máquina de estado Blinky
Crea la máquina de estado Blinky

¡Ahora puede comenzar a crear el diagrama de estado!

En el lado izquierdo, encontrará la denominada Sección de definición. Allí puede agregar elementos textuales al modelo, por ejemplo, operaciones, que se pueden llamar en la máquina de estado.

Elimine todo de él y simplemente agregue estas tres definiciones de operación:

interno:

operación init () operación redOn () operación redOff ()

Luego, cambie al modelo de diagrama de estados y agregue tres estados:

  • Inicialización
  • LED rojo encendido
  • LED rojo apagado

Conecte los estados como se muestra en la imagen y agregue las transiciones y las acciones de entrada. Puede encontrarlos en la imagen incluida nuevamente.

Paso 4: Genere el código C de la máquina de estado

Genere el código C de la máquina de estado
Genere el código C de la máquina de estado

Ahora es el momento de generar el C-Code. Para hacer esto, se debe agregar un modelo de generador. Haga clic con el botón derecho en el proyecto una vez más, abra Nuevo y haga clic en Modelo de generador de código. Elija un nombre para el archivo sgen. Es una buena práctica quedarse con el nombre de la máquina de estado. Llámelo blinkyStateMachine.sgen y haga clic en Siguiente. Elija la máquina de estado deseada haciendo clic en la casilla de verificación. Asegúrese de haber elegido el generador de código YAKINDU SCT C (ya que queremos generar el código C) y haga clic en Finalizar.

Por lo general, el código C se generará automáticamente, pero si no es así, puede hacer clic con el botón derecho en el archivo sgen y hacer clic en Generar artefactos de código para hacerlo. Las carpetas src y src-gen deberían aparecer en su proyecto. Incluyen el código C generado, que se actualizará automáticamente cuando edite y guarde el diagrama de estado.

Debido a que este diagrama de estado utiliza eventos basados en el tiempo, es necesario implementar un servicio de temporizador. Para preparar esto, necesita estos dos archivos: sc_timer_service.cy sc_timer_service.h Puede obtenerlos de GitHub o descargarlos aquí. Debe agregarlos a la carpeta src.

Paso 5: Llamar a la máquina de estado desde su código

¡Finalmente, la máquina de estado se puede usar en su función principal!

Primero, debe incluir la máquina de estado y el servicio de temporizador. Luego, la máquina de estado, el servicio de temporizador y las funciones requeridas para el servicio de temporizador deben declararse y definirse. Adicionalmente, se deben implementar las operaciones definidas que son el encendido y apagado del led rojo.

#incluir

#include "src-gen / BlinkyStateMachine.h" #include "src / sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 temporizadores sc_timer_t estáticos [MAX_TIMERS]; static sc_timer_service_t timer_service; //! implementación de devolución de llamada para la configuración de eventos de tiempo extern void blinkyStateMachine_setTimer (BlinkyStateMachine * handle, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) {sc_timer_start (& timer_service, handle, evid, time_ms, periodic); } //! implementación de devolución de llamada para cancelar eventos de tiempo. extern void blinkyStateMachine_unsetTimer (BlinkyStateMachine * handle, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! definiendo operaciones extern void blinkyStateMachineInternal_init (const BlinkyStateMachine * handle) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } extern void blinkyStateMachineInternal_redOn (const BlinkyStateMachine * manejador) {P1OUT | = BIT0; } extern void blinkyStateMachineInternal_redOff (const BlinkyStateMachine * manejador) {P1OUT & = ~ BIT0; }

La función principal contiene dos partes:

La inicialización y la función de entrada de la máquina de estado y la inicialización del temporizador.

La segunda parte es un bucle sin fin: el bucle while (1). Dentro de este bucle, se llama a la función de ciclo de ejecución de la máquina de estado. Posteriormente, el MSP430 se establecerá en el modo de bajo consumo 0 y se establecerá el bit de habilitación de interrupción general. Ahora el microcontrolador está durmiendo y espera una interrupción. Después de la interrupción del WDT, el temporizador continuará. Esto significa que cada temporizador se actualiza y el tiempo transcurrido se incrementa en 32, el tiempo en milisegundos, que continúa después de cada interrupción del WDT.

vacío principal (vacío) {WDTCTL = WDTPW | WDTHOLD; // Detener el temporizador del perro guardián

// Iniciar temporizador y máquina de estado sc_timer_service_init (& timer_service, temporizadores, MAX_TIMERS, (sc_raise_time_event_fp) & blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init (y blinky); blinkyStateMachine_enter (& blinky);

mientras (1)

{// llamar a la máquina de estado cada 32 ms blinkyStateMachine_runCycle (& blinky); _bis_SR_register (LPM0_bits + GIE); sc_timer_service_proceed (& timer_service, 32); }}

// WDT ISR

#pragma vector = WDT_VECTOR _interrupt void watchdog_timer (void) {_bic_SR_register_on_exit (LPM0_bits + GIE); }

Paso 6: ¡Ejecute el proyecto

Eso es todo. ¡Ahora puede crear y cargar el programa en su MSP430!

Con suerte, este tutorial le ayudó a crear con éxito un proyecto para su MSP430. ¡Ahora es el momento de implementar sus propias ideas!

Para la generación de código, se requiere YAKINDU Statechart Tools como complemento en su Code Composer Studio.

¡Puede obtener el sitio de actualización aquí! <

Comienza con una versión de prueba de 30 días. ¡Después, puede obtener una licencia gratuita para uso no comercial!

Recomendado: