Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Installation af YAKINDU Statechart -værktøjer som et plugin til Code Composer Studio
- Trin 2: Kom godt i gang med statsmaskiner i Code Composer Studio
- Trin 3: Opret Blinky State Machine
- Trin 4: Generer State Machine C -koden
- Trin 5: Opkald til statsmaskinen fra din kode
- Trin 6: Kør projektet
Video: Finite State Machine på en MSP430: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Jeg vil vise dig, hvordan du programmerer en MSP430G2 Launchpad med Finite State Machines (FSM) ved hjælp af YAKINDU Statechart Tools direkte i Texas Instruments Code Composer Studio.
Denne vejledning indeholder seks trin:
- Installation af YAKINDU Statechart Tools som et plugin til Code Composer Studio
- Kom godt i gang med State Machines i Code Composer Studio
- Opret Blinky State Machine
- Generer State Machine C -koden
- Ringer til State Machine fra din kode
- Kør projektet!
Dette projekt kan bruges som en blueprint til enhver MPS430 eller MSP432!
Forbrugsvarer
Software:
- YAKINDU Statechart -værktøjer
- Code Composer Studio (CCS) Integrated Development Environment (IDE)
Hardware:
MSP430G2 LaunchPad Development kit
Trin 1: Installation af YAKINDU Statechart -værktøjer som et plugin til Code Composer Studio
Først skal du installere TI's Code Composer Studio. Jeg har med succes testet opsætningen med CCS version 9.2 og ældre en gang. Du kan finde et downloadlink her:
Download CCS
Klik for at downloade, og sørg for, at du i det mindste har valgt MSP430 ultra-low-power MCU'er under installationen. I mellemtiden kan du få fat i opdateringsstedet til YAKINDU Statechart Tools. Gå til:
Download YAKINDU Statechart -værktøjer
På dette websted skal du klikke på Download nu og følge instruktionerne. Som du kan se på billedet: Det er gratis til ikke-kommerciel brug. Efter registreringen får du et overblik over downloadmulighederne. Klik på STANDARD DOWNLOAD SITE og klik på INSTALL FRA UPDATE SITE. Der får du et link under stabile udgivelser. Tag dette link, og gem det eller læg det i dit udklipsholder.
Installation af YAKINDU Statechart Tools i Code Composer Studio kan være lidt vanskelig, afhængigt af hvilken version af Code Composer Studio du bruger. Måske er disse trin forældede i mellemtiden - dog: tøv ikke med at spørge mig i kommentarerne, hvis du har brug for hjælp.
Dette er mine trin:
Efter at have installeret CCS på dit system, skal du åbne fanen Hjælp og klikke på Installer ny software … I denne guide tilføjes følgende opdateringswebsted via knappen Tilføj …:
download.eclipse.org/releases/2018-09/
Tilføj ikke noget, det skal bare løses. Du kan se det på billedet.
Efter dette skal du gentage trinene og klikke på knappen Tilføj …. Indsæt opdateringswebstedet YAKINDU Statechart Tools, som du forhåbentlig har gemt. Marker derefter afkrydsningsfeltet YAKINDU License Management og klik på næste. Følg instrukserne. Din IDE genstarter muligvis én gang.
Endelig kan du installere YAKINDU Statechart -værktøjer. Gentag de sidste trin, men denne gang skal du vælge YAKINDU Statechart Tools Standard Edition. Følg igen instruktionerne. Efter genstart har du installeret YAKINDU Statechart Tools.
Trin 2: Kom godt i gang med statsmaskiner i Code Composer Studio
For at bruge statsmaskiner skal du fortsætte som normalt og oprette et nyt CCS -projekt. Åbn fanen Filer, åbn Ny, og klik på CCS Project. Definer et projektnavn, vælg din mikrokontroller og opret et tomt projekt, som indeholder en tom main.c -fil. Jeg brugte MSP430G2553.
Nu kan du begynde at arbejde med statsmaskiner!
Højreklik på projektet, åbn Ny og vælg Statechart Model. Der åbnes en Wizard, hvor du kan vælge dit projekt og navngive din statartabel. For eksempel kalder det blinkyStateMachine.sct.
Statechart -modellen vises i projektmappen efter at have klikket på Afslut. Klik på Ja, hvis du bliver bedt om at ændre perspektivet.
Trin 3: Opret Blinky State Machine
Nu kan du begynde at oprette statistabellen!
I venstre side finder du det såkaldte definitionafsnit. Der kan du tilføje tekstelementer til modellen, for eksempel operationer, som kan kaldes i statsmaskinen.
Slet alt fra det, og tilføj blot disse tre operationsdefinitioner:
indre:
operation init () operation redOn () operation redOff ()
Skift derefter til statechart -modellen, og tilføj tre tilstande:
- Initialisering
- rød LED tændt
- rød LED slukket
Forbind staterne som vist på billedet, og tilføj overgange og indtastningshandlinger. Du kan finde dem på det medfølgende billede igen.
Trin 4: Generer State Machine C -koden
Nu er det tid til at generere C-koden. For at gøre dette skal der tilføjes en generatormodel. Højreklik på projektet endnu en gang, og åbn Ny, og klik på Code Generator Model. Vælg et navn til sgen-filen. Det er en god praksis at blive ved med navnet på statsmaskinen. Kald det blinkyStateMachine.sgen og klik på Næste. Vælg den ønskede statsmaskine ved at klikke på afkrydsningsfeltet. Sørg for, at du har valgt YAKINDU SCT C-kodegeneratoren (som vi ønsker at generere C-kode), og klik på Afslut.
Normalt genereres C-koden automatisk, men hvis ikke, kan du højreklikke på sgen -filen og klikke på Generer kodegenstande for at gøre det. Mapperne src og src-gen skal vises i dit projekt. De indeholder den genererede C-kode, som automatisk opdateres, når du redigerer og gemmer statediagrammet.
Fordi denne statistik bruger tidsbaserede hændelser, skal en timer-service implementeres. For at forberede dette skal du bruge disse to filer: sc_timer_service.c og sc_timer_service.h Du kan få dem fra GitHub eller downloade dem her. Du skal tilføje dem til src -mappen.
Trin 5: Opkald til statsmaskinen fra din kode
Endelig kan statsmaskinen bruges i din hovedfunktion!
Først skal du inkludere statsmaskinen og timertjenesten. Derefter skal statsmaskinen, timertjenesten og de nødvendige funktioner til timertjenesten deklareres og defineres. Derudover skal de definerede operationer, der tænder og slukker den røde lysdiode igen, implementeres.
#omfatte
#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine blinkende; #define MAX_TIMERS 4 statiske sc_timer_t timere [MAX_TIMERS]; statisk sc_timer_service_t timer_service; //! tilbagekaldsimplementering til opsætning af tidsbegivenheder extern void blinkyStateMachine_setTimer (BlinkyStateMachine* håndtag, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) {sc_timer_start (& timer_service, handle, evid, time_ms, periodisk); } //! tilbagekaldsimplementering til aflysning af tidsbegivenheder. eksternt tomrum blinkyStateMachine_unsetTimer (BlinkyStateMachine* håndtag, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! definere operationer extern void blinkyStateMachineInternal_init (const BlinkyStateMachine* håndtag) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } eksternt tomrum blinkyStateMachineInternal_redOn (const BlinkyStateMachine* håndtag) {P1OUT | = BIT0; } eksternt tomrum blinkyStateMachineInternal_redOff (const BlinkyStateMachine* håndtag) {P1OUT & = ~ BIT0; }
Hovedfunktionen indeholder to dele:
Tilstandsmaskinens initialisering og enter -funktion og initialiseringen af timeren.
Den anden del er en endeløs sløjfe - mens (1) loop. Inden for denne loop kaldes tilstandsmaskinens kørecyklusfunktion. Bagefter vil MSP430 blive sat til Low Power Mode 0, og den generelle bit kan aktiveres. Nu sover mikrokontrolleren og venter på en afbrydelse. Efter afbrydelse af WDT fortsætter timeren. Det betyder, at hver timer opdateres, og den forløbne tid øges med 32 - tiden i millisekunder, der fortsætter efter hver afbrydelse af WDT.
void main (void) {WDTCTL = WDTPW | WDTHOLD; // Stop vagthundstimeren
// Init timer og tilstandsmaskine sc_timer_service_init (& timer_service, timere, MAX_TIMERS, (sc_raise_time_event_fp) & blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init (& blinky); blinkyStateMachine_enter (& blinky);
mens (1)
{// call state machine 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); }
Trin 6: Kør projektet
Det er det - Nu kan du bygge og uploade programmet til din MSP430!
Forhåbentlig har denne vejledning hjulpet dig med at oprette et projekt til din MSP430. Nu er det tid til at implementere dine egne ideer!
For kodegenerering kræves YAKINDU Statechart Tools som et plugin i dit Code Composer Studio.
Du kan få opdateringsstedet her! <
Det starter med 30 dages prøveversion. Bagefter kan du få en gratis licens til ikke-kommerciel brug!
Anbefalede:
LLDPi - Raspberry Pi Network Tool (Colorado State University): 7 trin
LLDPi - Raspberry Pi Network Tool (Colorado State University): LLDPi -projektet er et integreret system fremstillet af en Raspberry Pi og LCD, der kan hente LLDP (Link Layer Discovery Protocol) oplysninger fra tilstødende enheder på et netværk, f.eks. Systemnavn og beskrivelse , portnavn og beskrivelse, VLA
Lav dit eget Solid State -relæ: 4 trin (med billeder)
Lav dit eget solid state -relæ: I dette projekt vil vi se på solid state -relæer, finde ud af, hvordan de fungerer, og hvornår de skal bruges, og i sidste ende oprette vores eget DIY Solid State -relæ. Lad os komme igang
Solid State Tesla -spoler og hvordan de fungerer: 9 trin
Solid State Tesla -spoler og hvordan de fungerer: Højspændingselektricitet kan være FARLIG, brug passende sikkerhedsforanstaltninger til enhver tid, når du arbejder med Tesla -spoler eller andre højspændingsenheder, så spil sikkert eller lad være med at spille.Tesla -spoler er en transformer, der fungerer på selvresonerende oscillato
State Machine on Arduino - et fodgænger -trafiklys: 6 trin (med billeder)
State Machine på Arduino - et trafiklys for fodgængere: Hej! Jeg vil vise dig, hvordan du programmerer et fodgængerlys til Arduino i C ++ med en endelig maskine ved hjælp af YAKINDU Statechart Tools. Dette vil demonstrere kraften i statsmaskiner og kan bruges som en plan for yderligere
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: 8 trin
Arduino PLC 32 I/O+State Machine+SCADA eller HMI: Mange måder at programmere, styre og overvåge et industrisystem med arduino