Cuprins:

Mașină de stare finită pe un MSP430: 6 pași
Mașină de stare finită pe un MSP430: 6 pași

Video: Mașină de stare finită pe un MSP430: 6 pași

Video: Mașină de stare finită pe un MSP430: 6 pași
Video: Sisu Tudor - Partea Insorita A Strazii (feat. Super ED) 2024, Iulie
Anonim
Mașină de stat finit pe un MSP430
Mașină de stat finit pe un MSP430
Mașină de stat finit pe un MSP430
Mașină de stat finit pe un MSP430

Vă voi arăta cum să programați un Launchpad MSP430G2 cu mașini de stat finite (FSM) folosind YAKINDU Statechart Tools direct în Texas Instruments Code Composer Studio.

Acest tutorial conține șase pași:

  1. Instalarea YAKINDU Statechart Tools ca un plugin pentru Code Composer Studio
  2. Noțiuni introductive despre mașinile de stat în Code Composer Studio
  3. Creați Blinky State Machine
  4. Generați codul Machine Machine State
  5. Apelarea mașinii de stat din codul dvs.
  6. Rulați proiectul!

Acest proiect poate fi folosit ca plan pentru orice MPS430 sau MSP432!

Provizii

Software:

  • Instrumente YAKINDU Statechart
  • Code Composer Studio (CCS) mediu de dezvoltare integrat (IDE)

Hardware:

Kitul de dezvoltare MSP430G2 LaunchPad

Pasul 1: Instalarea instrumentelor YAKINDU Statechart ca plugin pentru Code Composer Studio

Instalarea instrumentelor YAKINDU Statechart ca un plugin la Code Composer Studio
Instalarea instrumentelor YAKINDU Statechart ca un plugin la Code Composer Studio
Instalarea instrumentelor YAKINDU Statechart ca un plugin la Code Composer Studio
Instalarea instrumentelor YAKINDU Statechart ca un plugin la Code Composer Studio
Instalarea instrumentelor YAKINDU Statechart ca un plugin la Code Composer Studio
Instalarea instrumentelor YAKINDU Statechart ca un plugin la Code Composer Studio

Mai întâi, trebuie să instalați Code Composer Studio de la TI. Am testat cu succes setarea cu CCS versiunea 9.2 și mai vechi o dată. Puteți găsi un link de descărcare aici:

Descărcați CCS

Faceți clic pentru descărcare și asigurați-vă că ați ales cel puțin MCU-urile cu putere redusă MSP430 în timpul instalării. Între timp, puteți obține site-ul de actualizare pentru YAKINDU Statechart Tools. Mergi la:

Descărcați YAKINDU Statechart Tools

Pe acest site, faceți clic pe Descărcați acum și urmați instrucțiunile. După cum puteți vedea în fotografie: este gratuit pentru uz necomercial. După înregistrare, veți obține o prezentare generală a opțiunilor de descărcare. Faceți clic pe SITE DESCĂRCARE STANDARD și faceți clic pe INSTALARE DIN SITE-UL DE ACTUALIZARE. Acolo veți obține un link sub lansări stabile. Apucați acest link și salvați-l sau puneți-l în clipboard.

Instalarea instrumentelor YAKINDU Statechart în Code Composer Studio poate fi puțin dificilă, în funcție de versiunea de Code Composer Studio pe care o utilizați. Poate că acești pași sunt învechiți între timp - totuși: nu ezitați să mă întrebați în comentarii dacă aveți nevoie de ajutor.

Iată pașii mei:

După ce ați instalat cu succes CCS în sistemul dvs., deschideți fila Ajutor și faceți clic pe Instalare software nou … În acest expert, adăugați următorul site de actualizare prin butonul Adăugați …

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

Nu adăugați nimic, trebuie doar rezolvat. O puteți vedea în imagine.

După aceasta, repetați pașii și faceți clic pe butonul Adăugare … Introduceți site-ul de actualizare YAKINDU Statechart Tools, pe care, sperăm, l-ați salvat. Apoi, bifați caseta de selectare YAKINDU License Management și faceți clic pe următorul. Urmează instrucțiunile. IDE-ul dvs. poate reporni o singură dată.

În cele din urmă, puteți instala instrumentele YAKINDU Statechart. Repetați ultimii pași, dar de data aceasta alegeți YAKINDU Statechart Tools Standard Edition. Încă o dată, urmați instrucțiunile. După repornire, ați instalat cu succes YAKINDU Statechart Tools.

Pasul 2: Noțiuni introductive despre mașinile de stat în Code Composer Studio

Noțiuni introductive despre mașinile de stat în Code Composer Studio
Noțiuni introductive despre mașinile de stat în Code Composer Studio
Noțiuni introductive despre mașinile de stat în Code Composer Studio
Noțiuni introductive despre mașinile de stat în Code Composer Studio

Pentru a utiliza mașini de stat, procedați normal și creați un nou proiect CCS. Deschideți fila Fișier, deschideți Nou și faceți clic pe CCS Project. Definiți un nume de proiect, alegeți microcontrolerul și creați un proiect gol, care conține un fișier main.c gol. Am folosit MSP430G2553.

Acum puteți începe să lucrați cu mașini de stat!

Faceți clic dreapta pe proiect, deschideți Nou și alegeți Statechart Model. Se va deschide un vrăjitor în care vă puteți selecta proiectul și vă puteți denumi statechart-ul. De exemplu, numiți-l blinkyStateMachine.sct.

Modelul Statechart va apărea în folderul proiectului după ce faceți clic pe Finalizare. Faceți clic pe Da dacă vi se cere să schimbați perspectiva.

Pasul 3: Creați Blinky State Machine

Creați Blinky State Machine
Creați Blinky State Machine

Acum puteți începe să creați statechart-ul!

În partea stângă, veți găsi așa-numita secțiune de definiție. Acolo puteți adăuga elemente textuale la model, de exemplu, operații, care pot fi apelate în mașina de stare.

Ștergeți totul din acesta și pur și simplu adăugați aceste trei definiții ale operației:

intern:

operație init () operație redOn () operație redOff ()

Apoi, comutați la modelul statechart și adăugați trei stări:

  • Inițializare
  • LED roșu aprins
  • LED roșu stins

Conectați stările așa cum se arată în imagine și adăugați tranzițiile și acțiunile de intrare. Le puteți găsi din nou în imaginea inclusă.

Pasul 4: Generați codul mașinii de stat C

Generați codul mașinii de stat C
Generați codul mașinii de stat C

Acum este timpul să generați codul C. Pentru a face acest lucru, trebuie adăugat un model generator. Faceți clic dreapta din nou pe proiect și deschideți Nou și faceți clic pe Cod Generator Model. Alegeți un nume pentru fișierul sgen. Este o practică bună să rămâneți cu numele mașinii de stat. Apelați-l blinkyStateMachine.sgen și faceți clic pe Următorul. Alegeți mașina de stat dorită făcând clic pe caseta de selectare. Asigurați-vă că ați ales generatorul de cod YAKINDU SCT C (așa cum dorim să generăm codul C) și faceți clic pe Finalizare.

De obicei, codul C va fi generat automat, dar dacă nu, puteți face clic dreapta pe fișierul sgen și faceți clic pe Generare artefacte de cod pentru a face acest lucru. Dosarele src și src-gen ar trebui să apară în proiectul dvs. Acestea includ codul C generat, care va fi actualizat automat când editați și salvați statechart-ul.

Deoarece această diagramă statistică utilizează evenimente bazate pe timp, trebuie să fie implementat un serviciu de temporizare. Pentru a pregăti acest lucru, aveți nevoie de aceste două fișiere: sc_timer_service.c și sc_timer_service.h Le puteți obține de la GitHub sau le puteți descărca de aici. Trebuie să le adăugați în folderul src.

Pasul 5: Apelarea aparatului de stat din codul dvs

În cele din urmă, mașina de stat poate fi utilizată în funcția dvs. principală!

În primul rând, trebuie să includeți mașina de stat și serviciul de temporizare. Apoi aparatul de stat, serviciul de temporizare și funcțiile necesare pentru serviciul de temporizare trebuie declarate și definite. În plus, operațiunile definite care activează și dezactivează din nou ledul roșu trebuie implementate.

#include

#include "src-gen / BlinkyStateMachine.h" #include "src / sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 temporizatoare statice sc_timer_t [MAX_TIMERS]; static sc_timer_service_t timer_service; //! implementare callback pentru setarea evenimentelor de timp 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); } //! implementare callback pentru anularea evenimentelor de timp. extern void blinkyStateMachine_unsetTimer (BlinkyStateMachine * handle, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! definirea operațiilor extern void blinkyStateMachineInternal_init (const BlinkyStateMachine * handle) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } extern void blinkyStateMachineInternal_redOn (const BlinkyStateMachine * handle) {P1OUT | = BIT0; } extern void blinkyStateMachineInternal_redOff (const BlinkyStateMachine * handle) {P1OUT & = ~ BIT0; }

Funcția principală conține două părți:

Funcția de inițializare și introducere a mașinii de stare și inițializarea temporizatorului.

A doua parte este o buclă fără sfârșit - bucla while (1). În cadrul acestei bucle, funcția ciclului de rulare a mașinii de stat este numită. Ulterior, MSP430 va fi setat în modul Low Power 0 și se va seta bitul de activare a întreruperii generale. Acum microcontrolerul doarme și așteaptă o întrerupere. După întreruperea WDT, cronometrul va continua. Aceasta înseamnă că fiecare temporizator este actualizat și timpul scurs crește cu 32 - timpul în milisecunde, care se desfășoară după fiecare întrerupere a WDT.

void main (void) {WDTCTL = WDTPW | WDTHOLD; // Opriți cronometrul câinelui de pază

// Temporizator inițial și mașină de stare sc_timer_service_init (& timer_service, timers, MAX_TIMERS, (sc_raise_time_event_fp) & blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init (& blinky); blinkyStateMachine_enter (& blinky);

în timp ce (1)

{// apelați mașina de stare la fiecare 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); }

Pasul 6: Rulați proiectul

Gata - Acum puteți construi și încărca programul pe MSP430!

Sperăm că acest tutorial v-a ajutat să creați cu succes un proiect pentru MSP430. Acum este timpul să vă implementați propriile idei!

Pentru generarea de cod, YAKINDU Statechart Tools este necesar ca plugin în Code Composer Studio.

Puteți obține site-ul de actualizare aici! <

Începe cu versiunea de încercare de 30 de zile. Ulterior, puteți obține o licență gratuită pentru utilizare necomercială!

Recomandat: