Innholdsfortegnelse:

Finite State Machine på en MSP430: 6 trinn
Finite State Machine på en MSP430: 6 trinn

Video: Finite State Machine på en MSP430: 6 trinn

Video: Finite State Machine på en MSP430: 6 trinn
Video: FSM Finite State Machine | Embedded Software | Embedded System and RTOS 2024, Juli
Anonim
Finite State Machine på en MSP430
Finite State Machine på en MSP430
Finite State Machine på en MSP430
Finite State Machine på en MSP430

Jeg skal vise deg hvordan du programmerer en MSP430G2 Launchpad med Finite State Machines (FSM) ved hjelp av YAKINDU Statechart Tools direkte i Texas Instruments Code Composer Studio.

Denne opplæringen inneholder seks trinn:

  1. Installere YAKINDU Statechart Tools som et plugin til Code Composer Studio
  2. Komme i gang med State Machines i Code Composer Studio
  3. Lag Blinky State Machine
  4. Generer State Machine C -koden
  5. Ringer State Machine fra koden din
  6. Kjør prosjektet!

Dette prosjektet kan brukes som en blåkopi for alle MPS430 eller MSP432!

Rekvisita

Programvare:

  • YAKINDU Statechart Tools
  • Code Composer Studio (CCS) Integrated Development Environment (IDE)

Maskinvare:

MSP430G2 LaunchPad Development Kit

Trinn 1: Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio

Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio
Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio
Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio
Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio
Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio
Installere YAKINDU Statechart Tools som en plugin til Code Composer Studio

Først må du installere TI's Code Composer Studio. Jeg har testet oppsettet med CCS versjon 9.2 og eldre en gang. Du finner en nedlastingskobling her:

Last ned CCS

Klikk for å laste ned og sørg for at du i det minste har valgt MSP430 ultra-low-power MCUer mens du installerer. I mellomtiden kan du ta tak i oppdateringsstedet for YAKINDU Statechart Tools. Gå til:

Last ned YAKINDU Statechart Tools

Klikk på Last ned nå på dette nettstedet og følg instruksjonene. Som du kan se på bildet: Det er gratis for ikke-kommersiell bruk. Etter registreringen får du en oversikt over nedlastingsalternativene. Klikk på STANDARD DOWNLOAD SITE og klikk på INSTALL FRA UPDATE SITE. Der får du en lenke under stabile utgivelser. Ta tak i denne lenken og lagre den eller legg den i utklippstavlen.

Det kan være litt vanskelig å installere YAKINDU Statechart Tools i Code Composer Studio, avhengig av hvilken versjon av Code Composer Studio du bruker. Kanskje disse trinnene er utdaterte i mellomtiden - men ikke nøl med å spørre meg i kommentarene hvis du trenger hjelp.

Dette er trinnene mine:

Etter å ha installert CCS på systemet, åpner du kategorien Hjelp og klikker på Installer ny programvare … I denne veiviseren kan du legge til følgende oppdateringssted via knappen Legg til …:

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

Ikke legg til noe, det må bare løses. Du kan se det på bildet.

Etter dette, gjenta trinnene og klikk på Legg til … -knappen. Sett inn YAKINDU Statechart Tools -oppdateringsnettstedet, som du forhåpentligvis har lagret. Merk deretter av for YAKINDU License Management og klikk på neste. Følg instruksjonene. IDE -en din kan starte på nytt en gang.

Til slutt kan du installere YAKINDU Statechart -verktøy. Gjenta de siste trinnene, men denne gangen velger du YAKINDU Statechart Tools Standard Edition. Nok en gang, følg instruksjonene. Etter omstart har du installert YAKINDU Statechart Tools.

Trinn 2: Komme i gang med statlige maskiner i Code Composer Studio

Komme i gang med statlige maskiner i Code Composer Studio
Komme i gang med statlige maskiner i Code Composer Studio
Komme i gang med statlige maskiner i Code Composer Studio
Komme i gang med statlige maskiner i Code Composer Studio

Fortsett som normalt for å bruke statlige maskiner og opprett et nytt CCS -prosjekt. Åpne Fil -fanen, åpne Ny og klikk på CCS Project. Definer et prosjektnavn, velg mikrokontrolleren og opprett et tomt prosjekt, som inneholder en tom main.c -fil. Jeg brukte MSP430G2553.

Nå kan du begynne å jobbe med statlige maskiner!

Høyreklikk på prosjektet, åpne Ny og velg Statechart Model. En veiviser vil bli åpnet der du kan velge prosjektet ditt og gi statstabellen din et navn. Kall det for eksempel blinkyStateMachine.sct.

Statechart -modellen vil vises i prosjektmappen etter å ha klikket på Fullfør. Klikk på Ja hvis du blir bedt om å endre perspektivet.

Trinn 3: Lag Blinky State Machine

Lag Blinky State Machine
Lag Blinky State Machine

Nå kan du begynne å lage statistabellen!

På venstre side finner du den såkalte definisjonsdelen. Der kan du legge til tekstelementer i modellen, for eksempel operasjoner, som kan kalles i tilstandsmaskinen.

Slett alt fra den og legg til disse tre operasjonsdefinisjonene:

innvendig:

operasjon init () operasjon redOn () operasjon redOff ()

Deretter bytter du til statens diagrammodell og legger til tre tilstander:

  • Initialisering
  • rød LED på
  • rød LED slukket

Koble statene som vist på bildet, og legg til overganger og inngangshandlinger. Du finner dem på det medfølgende bildet igjen.

Trinn 4: Generer State Machine C -koden

Generer State Machine C -koden
Generer State Machine C -koden

Nå er det på tide å generere C-koden. For å gjøre dette må en generatormodell legges til. Høyreklikk på prosjektet igjen og åpne New og klikk på Code Generator Model. Velg et navn for sgen-filen. Det er en god praksis å holde seg til det statlige maskinnavnet. Kall det blinkyStateMachine.sgen og klikk på Neste. Velg ønsket State Machine ved å klikke i avmerkingsboksen. Sørg for at du har valgt YAKINDU SCT C Code Generator (som vi ønsker å generere C-Code) og klikk på Fullfør.

Vanligvis vil C-koden genereres automatisk, men hvis ikke, kan du høyreklikke på sgen -filen og klikke på Generer kodeartefakter for å gjøre det. Mappene src og src-gen skal vises i prosjektet. De inkluderer den genererte C-koden, som automatisk oppdateres når du redigerer og lagrer statediagrammet.

Fordi denne stateldiagrammet bruker tidsbaserte hendelser, må en timer-tjeneste implementeres. For å forberede dette trenger du disse to filene: sc_timer_service.c og sc_timer_service.h Du kan få dem fra GitHub eller laste dem ned her. Du må legge dem til i src -mappen.

Trinn 5: Kalle statsmaskinen fra koden din

Til slutt kan statsmaskinen brukes i hovedfunksjonen din!

Først må du inkludere statsmaskinen og timeren. Deretter må statsmaskinen, tidtaker -tjenesten og de nødvendige funksjonene for tidtaker -tjenesten deklareres og defineres. I tillegg må de definerte operasjonene som slår den røde lysdioden på og av igjen implementeres.

#inkludere

#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 statiske sc_timer_t timere [MAX_TIMERS]; statisk sc_timer_service_t timer_service; //! tilbakeringing av tilbakeringing for oppsett av tidshendelser extern void blinkyStateMachine_setTimer (BlinkyStateMachine* håndtak, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) {sc_timer_start (& timer_service, handle, evid, time_ms, periodisk); } //! tilbakeringing av tilbakeringing for å avbryte hendelser. eksternt tomrom blinkyStateMachine_unsetTimer (BlinkyStateMachine* håndtak, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! definere operasjoner extern void blinkyStateMachineInternal_init (const BlinkyStateMachine* håndtak) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } eksternt tomrom blinkyStateMachineInternal_redOn (const BlinkyStateMachine* håndtak) {P1OUT | = BIT0; } eksternt tomrom blinkyStateMachineInternal_redOff (const BlinkyStateMachine* håndtak) {P1OUT & = ~ BIT0; }

Hovedfunksjonen inneholder to deler:

Initialiseringen og enter -funksjonen til tilstandsmaskinen og initialiseringen av timeren.

Den andre delen er en endeløs sløyfe - while (1) loop. Innenfor denne sløyfen kalles kjøresyklusfunksjonen til tilstandsmaskinen. Etterpå settes MSP430 inn i Low Power Mode 0 og den generelle avbrytingsaktiveringen blir satt. Nå sover mikrokontrolleren og venter på et avbrudd. Etter avbrudd av WDT vil timeren fortsette. Dette betyr at hver timer blir oppdatert og den forløpne tiden økes med 32 - tiden i millisekunder, som fortsetter etter hvert avbrudd i WDT.

void main (void) {WDTCTL = WDTPW | WDTHOLD; // Stopp vaktbikkertimeren

// Init timer og state machine sc_timer_service_init (& timer_service, timers, MAX_TIMERS, (sc_raise_time_event_fp) & blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init (& blinky); blinkyStateMachine_enter (& blinky);

mens (1)

{// ring tilstandsmaskin hver 32 ms blinkyStateMachine_runCycle (& blinky); _bis_SR_register (LPM0_bits + GIE); sc_timer_service_proceed (& timer_service, 32); }}

// WDT ISR

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

Trinn 6: Kjør prosjektet

Det er det - Nå kan du bygge og laste opp programmet til MSP430!

Forhåpentligvis hjalp denne opplæringen deg med å opprette et prosjekt for MSP430. Nå er det på tide å implementere dine egne ideer!

For kodegenerering kreves YAKINDU Statechart Tools som en plugin i Code Composer Studio.

Du kan få oppdateringsstedet her! <

Den starter med 30 dagers prøveversjon. Etterpå kan du få en gratis lisens for ikke-kommersiell bruk!

Anbefalt: