Innehållsförteckning:

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

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

Video: Finite State Machine på en MSP430: 6 steg
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

Jag ska visa dig hur du programmerar en MSP430G2 Launchpad med Finite State Machines (FSM) med YAKINDU Statechart Tools direkt i Texas Instruments Code Composer Studio.

Denna handledning innehåller sex steg:

  1. Installera YAKINDU Statechart Tools som ett plugin till Code Composer Studio
  2. Komma igång med State Machines i Code Composer Studio
  3. Skapa Blinky State Machine
  4. Generera State Machine C -koden
  5. Ringer State Machine från din kod
  6. Kör projektet!

Detta projekt kan användas som en plan för alla MPS430 eller MSP432!

Tillbehör

Programvara:

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

Hårdvara:

MSP430G2 LaunchPad Development kit

Steg 1: Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio

Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio
Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio
Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio
Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio
Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio
Installera YAKINDU Statechart -verktyg som ett plugin till Code Composer Studio

Först måste du installera TI: s Code Composer Studio. Jag har framgångsrikt testat installationen med CCS version 9.2 och äldre en gång. Du hittar en nedladdningslänk här:

Ladda ner CCS

Klicka för att ladda ner och se till att du åtminstone har valt MSP430 ultra-low-power MCU: er under installationen. Samtidigt kan du hämta uppdateringssajten för YAKINDU Statechart Tools. Gå till:

Ladda ner YAKINDU Statechart Tools

Klicka på Ladda ner nu på den här webbplatsen och följ instruktionerna. Som du kan se på bilden: Det är gratis för icke-kommersiellt bruk. Efter registreringen får du en översikt över nedladdningsalternativen. Klicka på STANDARD DOWNLOAD WEBBPLATS och klicka på INSTALLERA FRÅN UPPDATERINGSPLATS. Där får du en länk under Stable Releases. Ta den här länken och spara den eller lägg den i ditt urklipp.

Att installera YAKINDU Statechart -verktyg i Code Composer Studio kan vara lite knepigt, beroende på vilken version av Code Composer Studio du använder. Kanske är dessa steg föråldrade under tiden - dock: tveka inte att fråga mig i kommentarerna om du behöver hjälp.

Detta är mina steg:

Efter att ha installerat CCS på ditt system, öppna fliken Hjälp och klicka på Installera ny programvara … I den här guiden lägger du till följande uppdateringssajt via knappen Lägg till …:

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

Lägg inte till någonting, det måste bara lösas. Du kan se det på bilden.

Upprepa sedan stegen och klicka på knappen Lägg till …. Sätt in YAKINDU Statechart Tools -uppdateringssajten, som du förhoppningsvis har sparat. Markera sedan kryssrutan YAKINDU License Management och klicka på nästa. Följ instruktionerna. Din IDE kan starta om en gång.

Slutligen kan du installera YAKINDU Statechart -verktyg. Upprepa de sista stegen, men den här gången väljer du YAKINDU Statechart Tools Standard Edition. Återigen, följ instruktionerna. Efter omstart har du installerat YAKINDU Statechart Tools.

Steg 2: Komma igång med tillståndsmaskiner i Code Composer Studio

Komma igång med tillståndsmaskiner i Code Composer Studio
Komma igång med tillståndsmaskiner i Code Composer Studio
Komma igång med tillståndsmaskiner i Code Composer Studio
Komma igång med tillståndsmaskiner i Code Composer Studio

Fortsätt som vanligt för att använda tillståndsmaskiner och skapa ett nytt CCS -projekt. Öppna fliken Arkiv, öppna Nytt och klicka på CCS Project. Definiera ett projektnamn, välj din mikrokontroller och skapa ett tomt projekt som innehåller en tom main.c -fil. Jag använde MSP430G2553.

Nu kan du börja arbeta med statsmaskiner!

Högerklicka på projektet, öppna Nytt och välj Statechart Model. En guide kommer att öppnas där du kan välja ditt projekt och ge ett namn på ditt statistabell. Kall det till exempel blinkyStateMachine.sct.

Statechart -modellen visas i projektmappen efter att du klickat på Slutför. Klicka på Ja om du blir ombedd att ändra perspektivet.

Steg 3: Skapa Blinky State Machine

Skapa Blinky State Machine
Skapa Blinky State Machine

Nu kan du börja skapa statistabellen!

På vänster sida hittar du det så kallade definitionavsnittet. Där kan du lägga till textelement i modellen, till exempel operationer, som kan anropas i tillståndsmaskinen.

Ta bort allt från det och lägg helt enkelt till dessa tre operationsdefinitioner:

inre:

operation init () operation redOn () operation redOff ()

Byt sedan till statechart -modellen och lägg till tre tillstånd:

  • Initiering
  • röd lysdiod tänd
  • röd lysdiod släckt

Anslut staterna som visas på bilden och lägg till övergångar och ingångsåtgärder. Du hittar dem på den medföljande bilden igen.

Steg 4: Generera State Machine C -koden

Generera State Machine C -koden
Generera State Machine C -koden

Nu är det dags att generera C-koden. För att göra detta måste en generatormodell läggas till. Högerklicka på projektet igen och öppna Nytt och klicka på Code Generator Model. Välj ett namn för sgen-filen. Det är en bra metod att hålla sig till det statliga maskinnamnet. Kalla det blinkyStateMachine.sgen och klicka på Nästa. Välj önskad tillståndsmaskin genom att klicka på kryssrutan. Se till att du har valt YAKINDU SCT C Code Generator (som vi vill generera C-Code) och klicka på Finish.

Vanligtvis genereras C-koden automatiskt, men om inte kan du högerklicka på sgen -filen och klicka på Generera kodartefakter för att göra det. Mapparna src och src-gen ska visas i ditt projekt. De innehåller den genererade C-koden, som uppdateras automatiskt när du redigerar och sparar statistabellen.

Eftersom denna diagram använder tidsbaserade händelser måste en timer-tjänst implementeras. För att förbereda detta behöver du dessa två filer: sc_timer_service.c och sc_timer_service.h Du kan hämta dem från GitHub eller ladda ner dem här. Du måste lägga till dem i src -mappen.

Steg 5: Ringa State Machine från din kod

Slutligen kan tillståndsmaskinen användas i din huvudfunktion!

Först måste du inkludera tillståndsmaskinen och timertjänsten. Sedan måste tillståndsmaskinen, timertjänsten och de nödvändiga funktionerna för timertjänsten deklareras och definieras. Dessutom måste de definierade operationerna som slår på och av den röda lysdioden implementeras.

#omfatta

#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 statiska sc_timer_t timers [MAX_TIMERS]; statisk sc_timer_service_t timer_service; //! callback -implementering för att ställa in tidshändelser extern void blinkyStateMachine_setTimer (BlinkyStateMachine* handtag, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) {sc_timer_start (& timer_service, handle, evid, time_ms, periodic); } //! återuppringningsimplementering för avbokning av tidshändelser. extern void blinkyStateMachine_unsetTimer (BlinkyStateMachine* handtag, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! definiera operationer extern void blinkyStateMachineInternal_init (const BlinkyStateMachine* handtag) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } extern void blinkyStateMachineInternal_redOn (const BlinkyStateMachine* handtag) {P1OUT | = BIT0; } extern void blinkyStateMachineInternal_redOff (const BlinkyStateMachine* handtag) {P1OUT & = ~ BIT0; }

Huvudfunktionen innehåller två delar:

Initialiseringen och enter -funktionen för tillståndsmaskinen och initialiseringen av timern.

Den andra delen är en ändlös loop - medan (1) loop. Inom denna slinga kallas tillståndscykelfunktionen för tillståndsmaskinen. Därefter ställs MSP430 in i Low Power Mode 0 och den allmänna avbrottsaktiveringsbiten ställs in. Nu sover mikrokontrollern och väntar på ett avbrott. Efter avbrottet av WDT fortsätter timern. Detta innebär att varje timer uppdateras och den förflutna tiden ökas med 32 - tiden i millisekunder, som fortsätter efter varje avbrott i WDT.

void main (void) {WDTCTL = WDTPW | WDTHOLD; // Stoppa vakthundstimern

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

medan (1)

{// call state machine var 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); }

Steg 6: Kör projektet

Det är det - Nu kan du bygga och ladda upp programmet till din MSP430!

Förhoppningsvis hjälpte denna handledning dig att framgångsrikt skapa ett projekt för din MSP430. Nu är det dags att implementera dina egna idéer!

För kodgenerering krävs YAKINDU Statechart Tools som ett plugin i din Code Composer Studio.

Du kan få uppdateringssajten här! <

Det börjar med 30 dagars testversion. Efteråt kan du få en gratis licens för icke-kommersiellt bruk!

Rekommenderad: