Talaan ng mga Nilalaman:

Ang Finite State Machine sa isang MSP430: 6 na Hakbang
Ang Finite State Machine sa isang MSP430: 6 na Hakbang

Video: Ang Finite State Machine sa isang MSP430: 6 na Hakbang

Video: Ang Finite State Machine sa isang MSP430: 6 na Hakbang
Video: 6.2.1 Finite State Machines 2024, Nobyembre
Anonim
Ang Finite State Machine sa isang MSP430
Ang Finite State Machine sa isang MSP430
Ang Finite State Machine sa isang MSP430
Ang Finite State Machine sa isang MSP430

Ipapakita ko sa iyo kung paano magprogram ng isang MSP430G2 Launchpad na may Finite State Machines (FSM) na gumagamit ng YAKINDU Statechart Tools nang direkta sa Texas Instruments Code Composer Studio.

Naglalaman ang tutorial na ito ng anim na hakbang:

  1. Pag-install ng YAKINDU Statechart Tools bilang isang plugin sa Code Composer Studio
  2. Pagsisimula sa Mga State Machine sa Code Composer Studio
  3. Lumikha ng Blinky State Machine
  4. Bumuo ng code ng State Machine C
  5. Ang pagtawag sa State Machine mula sa iyong code
  6. Patakbuhin ang proyekto!

Ang proyektong ito ay maaaring magamit bilang isang blueprint para sa anumang MPS430 o MSP432!

Mga gamit

Software:

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

Hardware:

MSP430G2 LaunchPad Development kit

Hakbang 1: Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio

Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio
Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio
Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio
Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio
Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio
Pag-install ng YAKINDU Statechart Tools Bilang isang Plugin sa Code Composer Studio

Una, kailangan mong i-install ang Code ng Composer Studio ng TI. Matagumpay kong nasubukan ang pag-set up gamit ang CCS bersyon 9.2 at mas matanda nang isang beses. Maaari kang makahanap ng isang link sa pag-download dito:

Mag-download ng CCS

Mag-click para sa pag-download at tiyaking napili mo man lang ang mga MSP430 ultra-low-power MCU habang nag-i-install. Samantala, maaari mong kunin ang site ng pag-update para sa YAKINDU Statechart Tools. Pumunta sa:

I-download ang YAKINDU Statechart Tools

Sa site na ito, mag-click sa I-download Ngayon at sundin ang mga tagubilin. Tulad ng nakikita mo sa larawan: Ito ay libre para sa di-komersyal na paggamit. Pagkatapos ng pagpaparehistro, makakakuha ka ng isang pangkalahatang ideya ng mga pagpipilian sa pag-download. Mag-click sa STANDARD DOWNLOAD SITE at mag-click sa I-INSTALL MULA SA UPDATE SITE. Doon makakakuha ka ng isang link sa ilalim ng Stable Releases. Grab ang link na ito at i-save ito o ilagay ito sa iyong clipboard.

Ang pag-install ng YAKINDU Statechart Tools sa Code Composer Studio ay maaaring medyo mahirap, depende sa bersyon ng Code Composer Studio na iyong ginagamit. Marahil ang mga hakbang na ito ay hindi napapanahon pansamantala - gayunpaman: huwag mag-atubiling tanungin ako sa mga komento kung kailangan mo ng tulong.

Ito ang aking mga hakbang:

Matapos matagumpay na mai-install ang CCS sa iyong system, buksan ang tab na Tulong at mag-click sa Pag-install ng Bagong Software … Sa wizard na ito, idagdag ang sumusunod na site ng pag-update sa pamamagitan ng pindutang Idagdag…:

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

Huwag magdagdag ng anumang bagay, kailangan lamang itong malutas. Maaari mo itong makita sa larawan.

Pagkatapos nito, ulitin ang mga hakbang at mag-click sa pindutang Idagdag… Ipasok ang site ng pag-update ng YAKINDU Statechart Tools, na inaasahan mong nai-save. Pagkatapos, piliin ang checkbox ng Pamamahala ng Lisensya ng YAKINDU at mag-click sa susunod. Sundin ang mga panuto. Maaaring muling simulan ang iyong IDE nang isang beses.

Panghuli, maaari mong mai-install ang mga tool ng YAKINDU Statechart. Ulitin ang mga huling hakbang, ngunit sa oras na ito piliin ang YAKINDU Statechart Tools Standard Edition. Muli, sundin ang mga tagubilin. Pagkatapos ng pag-restart ay matagumpay mong na-install ang YAKINDU Statechart Tools.

Hakbang 2: Pagsisimula Sa Mga Makina ng Estado sa Code Composer Studio

Pagsisimula Sa Mga Makina ng Estado sa Code Composer Studio
Pagsisimula Sa Mga Makina ng Estado sa Code Composer Studio
Pagsisimula Sa Mga Makina ng Estado sa Code Composer Studio
Pagsisimula Sa Mga Makina ng Estado sa Code Composer Studio

Upang magamit ang mga machine ng estado magpatuloy bilang normal at lumikha ng isang bagong CCS Project. Buksan ang tab na File, buksan ang Bago at mag-click sa CCS Project. Tukuyin ang isang pangalan ng proyekto, piliin ang iyong microcontroller at lumikha ng isang walang laman na proyekto, na naglalaman ng isang walang laman na main.c file. Ginamit ko ang MSP430G2553.

Ngayon ay maaari kang magsimulang magtrabaho kasama ang mga machine ng estado!

Mag-right click sa proyekto, buksan ang Bago at piliin ang Modelong Statechart. Ang isang Wizard ay bubuksan kung saan maaari mong piliin ang iyong proyekto at pangalanan ang iyong statechart. Halimbawa, tawagan itong blinkyStateMachine.sct.

Ang modelo ng Statechart ay lilitaw sa folder ng proyekto pagkatapos mag-click sa Tapusin. Mag-click sa Oo kung hihilingin sa iyo na baguhin ang pananaw.

Hakbang 3: Lumikha ng Blinky State Machine

Lumikha ng Blinky State Machine
Lumikha ng Blinky State Machine

Ngayon ay maaari mo nang simulang lumikha ng statechart!

Sa kaliwang bahagi, mahahanap mo ang tinaguriang Seksyon ng Kahulugan. Doon maaari kang magdagdag ng mga elemento ng tekstuwal sa modelo, halimbawa, mga pagpapatakbo, na maaaring tawagan sa makina ng estado.

Tanggalin ang lahat mula rito at idagdag lamang ang tatlong mga kahulugan ng operasyon na ito:

panloob:

operasyon init () operasyon redOn () operasyon redOff ()

Pagkatapos, lumipat sa modelo ng statechart at magdagdag ng tatlong mga estado:

  • Pasimula
  • pulang LED
  • pulang LED

Ikonekta ang mga estado tulad ng ipinakita sa larawan at idagdag ang mga paglilipat at mga aksyon sa pagpasok. Mahahanap mo silang muli sa kasama na larawan.

Hakbang 4: Bumuo ng State Machine C Code

Bumuo ng State Machine C Code
Bumuo ng State Machine C Code

Ngayon ay oras na upang makabuo ng C-Code. Upang magawa ito, dapat idagdag ang isang modelo ng generator. I-right click muli ang proyekto at buksan ang Bago at mag-click sa Model ng Tagabuo ng Code. Pumili ng isang pangalan para sa sgen- file. Mahusay na kasanayan na manatili sa pangalan ng makina ng estado. Tawagin itong blinkyStateMachine.sgen at mag-click sa Susunod. Piliin ang nais na State Machine sa pamamagitan ng pag-click sa checkbox. Tiyaking napili mo ang YAKINDU SCT C Code Generator (tulad ng nais naming makabuo ng C-Code) at mag-click sa Tapusin.

Karaniwan, ang C-Code ay awtomatikong mabubuo, ngunit kung hindi, maaari kang mag-right click sa sgen -file at mag-click sa Bumuo ng Code ng Artifact upang magawa ito. Dapat lumitaw ang mga folder na src at src-gen sa iyong proyekto. Isinasama nila ang nabuong C-Code, na awtomatikong maa-update kapag na-edit at na-save mo ang statechart.

Dahil ang statechart na ito ay gumagamit ng mga kaganapan na nakabatay sa oras, kailangang ipatupad ang isang serbisyong timer. Upang maihanda ito, kailangan mo ang dalawang mga file na ito: sc_timer_service.c at sc_timer_service.h Maaari mong makuha ang mga ito mula sa GitHub o i-download ang mga ito dito. Dapat mong idagdag ang mga ito sa folder ng src.

Hakbang 5: Pagtawag sa State Machine Mula sa Iyong Code

Panghuli, ang makina ng estado ay maaaring magamit sa iyong pangunahing pag-andar!

Una, kailangan mong isama ang state machine at ang timer service. Pagkatapos ang machine ng estado, ang serbisyo ng timer at ang mga kinakailangang pag-andar para sa timer service ay dapat na ideklara at tukuyin. Bilang karagdagan, ang mga tinukoy na operasyon na kung saan ay nagiging pula at humantong muli ay dapat na ipatupad.

# isama

# isama ang "src-gen / BlinkyStateMachine.h" #include "src / sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 static sc_timer_t timer [MAX_TIMERS]; static sc_timer_service_t timer_service; //! pagpapatupad ng callback para sa pagse-set up ng mga kaganapan sa oras extern void blinkyStateMachine_setTimer (hawakan ng BlinkyStateMachine *, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) {sc_timer_start (& timer_service, hawakan, evid, time_ms, periodic); } //! pagpapatupad ng callback para sa pagkansela ng mga kaganapan sa oras. extern void blinkyStateMachine_unsetTimer (BlinkyStateMachine * hawakan, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! pagtukoy sa mga pagpapatakbo extern void blinkyStateMachineInternal_init (const BlinkyStateMachine * hawakan) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } extern void blinkyStateMachineInternal_redOn (const BlinkyStateMachine * hawakan) {P1OUT | = BIT0; } extern void blinkyStateMachineInternal_redOff (const BlinkyStateMachine * hawakan) {P1OUT & = ~ BIT0; }

Naglalaman ang pangunahing pagpapaandar ng dalawang bahagi:

Ang pagsisimula at pagpasok ng pag-andar ng makina ng estado at ang pagsisimula ng timer.

Ang pangalawang bahagi ay isang walang katapusang loop - ang habang (1) loop. Sa loob ng loop na ito, ang pagpapatakbo ng ikot ng pagpapatakbo ng makina ng estado ay tinatawag na. Pagkatapos, ang MSP430 ay maitatakda sa Mababang Power Mode 0 at ang General Interrupt Enable na bit ay naitakda. Ngayon ang microcontroller ay natutulog at naghihintay para sa isang nakakagambala. Matapos ang makagambala ng WDT, magpapatuloy ang timer. Nangangahulugan ito na ang bawat timer ay nai-update at ang lumipas na oras ay nadagdagan ng 32 - ang oras sa milliseconds, na nagpapatuloy pagkatapos ng bawat nakakagambala ng WDT.

void main (void) {WDTCTL = WDTPW | WDTHOLD; // Itigil ang timer ng watchdog

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

habang (1)

{// call state machine bawat 32 ms blinkyStateMachine_runCycle (& blinky); _bis_SR_register (LPM0_bits + GIE); sc_timer_service_process (& timer_service, 32); }}

// WDT ISR

#pragma vector = WDT_VECTOR _ makagambala sa walang bisa na watchdog_timer (walang bisa) {_bic_SR_register_on_exit (LPM0_bits + GIE); }

Hakbang 6: Patakbuhin ang Proyekto

Iyon lang - Ngayon ay maaari kang bumuo at mag-upload ng programa sa iyong MSP430!

Sana, ang tutorial na ito ay nakatulong sa iyo upang matagumpay na lumikha ng isang proyekto para sa iyong MSP430. Ngayon ay oras na upang magpatupad ng iyong sariling mga ideya!

Para sa pagbuo ng code, kinakailangan ang YAKINDU Statechart Tools bilang isang Plugin sa iyong Code Composer Studio.

Maaari mong makuha ang site ng pag-update dito! <

Nagsisimula ito sa 30 araw na bersyon ng pagsubok. Pagkatapos, maaari kang makakuha ng isang libreng lisensya para sa paggamit na hindi pang-komersyo!

Inirerekumendang: