สารบัญ:

Finite State Machine บน MSP430: 6 ขั้นตอน
Finite State Machine บน MSP430: 6 ขั้นตอน

วีดีโอ: Finite State Machine บน MSP430: 6 ขั้นตอน

วีดีโอ: Finite State Machine บน MSP430: 6 ขั้นตอน
วีดีโอ: ตัวอย่างการเขียน Code (Arduino) จาก Finite state machine 2024, กรกฎาคม
Anonim
เครื่องสถานะไฟไนต์บน MSP430
เครื่องสถานะไฟไนต์บน MSP430
เครื่องสถานะไฟไนต์บน MSP430
เครื่องสถานะไฟไนต์บน MSP430

ฉันจะแสดงวิธีตั้งโปรแกรม MSP430G2 Launchpad ด้วย Finite State Machines (FSM) โดยใช้ YAKINDU Statechart Tools โดยตรงใน Texas Instruments Code Composer Studio

บทช่วยสอนนี้มีหกขั้นตอน:

  1. การติดตั้ง YAKINDU Statechart Tools เป็นปลั๊กอินสำหรับ Code Composer Studio
  2. เริ่มต้นใช้งาน State Machines ใน Code Composer Studio
  3. สร้าง Blinky State Machine
  4. สร้างรหัส State Machine C
  5. โทรหา State Machine จากรหัสของคุณ
  6. ดำเนินโครงการ!

โปรเจ็กต์นี้สามารถใช้เป็นพิมพ์เขียวสำหรับ MPS430 หรือ MSP432 ใดๆ ก็ได้!

เสบียง

ซอฟต์แวร์:

  • YAKINDU Statechart Tools
  • Code Composer Studio (CCS) สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE)

ฮาร์ดแวร์:

MSP430G2 LaunchPad ชุดพัฒนา

ขั้นตอนที่ 1: การติดตั้ง YAKINDU Statechart Tools เป็นปลั๊กอินสำหรับ Code Composer Studio

การติดตั้ง YAKINDU Statechart Tools เป็น Plugin to Code Composer Studio
การติดตั้ง YAKINDU Statechart Tools เป็น Plugin to Code Composer Studio
การติดตั้ง YAKINDU Statechart Tools เป็น Plugin to Code Composer Studio
การติดตั้ง YAKINDU Statechart Tools เป็น Plugin to Code Composer Studio
การติดตั้ง YAKINDU Statechart Tools เป็น Plugin to Code Composer Studio
การติดตั้ง YAKINDU Statechart Tools เป็น Plugin to Code Composer Studio

ก่อนอื่น คุณต้องติดตั้ง Code Composer Studio ของ TI ฉันทดสอบการตั้งค่าด้วย CCS เวอร์ชัน 9.2 และเก่ากว่าสำเร็จแล้วหนึ่งครั้ง คุณสามารถหาลิงค์ดาวน์โหลดได้ที่นี่:

ดาวน์โหลด CCS

คลิกเพื่อดาวน์โหลดและตรวจสอบให้แน่ใจว่าคุณได้เลือก MCU พลังงานต่ำพิเศษของ MSP430 อย่างน้อยขณะติดตั้ง ในขณะเดียวกัน คุณสามารถคว้าไซต์อัปเดตสำหรับ YAKINDU Statechart Tools ไปที่:

ดาวน์โหลด YAKINDU Statechart Tools

บนไซต์นี้ ให้คลิกที่ Download Now และปฏิบัติตามคำแนะนำ ดังที่คุณเห็นในภาพ: ฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์ หลังจากการลงทะเบียน คุณจะเห็นภาพรวมของตัวเลือกการดาวน์โหลด คลิกที่ STANDARD DOWNLOAD SITE และคลิกที่ INSTALL FROM UPDATE SITE คุณจะได้รับลิงก์ภายใต้ Stable Releases หยิบลิงค์นี้และบันทึกหรือใส่ไว้ในคลิปบอร์ดของคุณ

การติดตั้ง YAKINDU Statechart Tools ลงใน Code Composer Studio อาจเป็นเรื่องยุ่งยากเล็กน้อย ขึ้นอยู่กับเวอร์ชันของ Code Composer Studio ที่คุณใช้อยู่ บางทีขั้นตอนเหล่านี้อาจล้าสมัยในขณะเดียวกัน อย่างไรก็ตาม โปรดอย่าลังเลที่จะถามฉันในความคิดเห็นหากคุณต้องการความช่วยเหลือใดๆ

นี่คือขั้นตอนของฉัน:

หลังจากติดตั้ง CCS ลงในระบบของคุณเรียบร้อยแล้ว ให้เปิดแท็บ Help แล้วคลิก Install New Software… ในวิซาร์ดนี้ เพิ่มไซต์อัพเดตต่อไปนี้โดยใช้ปุ่ม Add…

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

ไม่ต้องเพิ่มอะไร แค่ต้องแก้ไข คุณสามารถเห็นมันในภาพ

หลังจากนี้ ทำซ้ำขั้นตอนและคลิกที่ปุ่มเพิ่ม… แทรกไซต์อัปเดต YAKINDU Statechart Tools ซึ่งคุณหวังว่าจะบันทึกไว้ จากนั้นเลือกช่องทำเครื่องหมาย YAKINDU License Management และคลิกถัดไป ทำตามคำสั่ง. IDE ของคุณอาจรีสตาร์ทหนึ่งครั้ง

สุดท้าย คุณสามารถติดตั้งเครื่องมือ YAKINDU Statechart ได้ ทำซ้ำขั้นตอนสุดท้าย แต่คราวนี้เลือก YAKINDU Statechart Tools Standard Edition ทำตามคำแนะนำอีกครั้ง หลังจากรีสตาร์ท คุณติดตั้ง YAKINDU Statechart Tools สำเร็จแล้ว

ขั้นตอนที่ 2: เริ่มต้นใช้งาน State Machines ใน Code Composer Studio

เริ่มต้นใช้งาน State Machines ใน Code Composer Studio
เริ่มต้นใช้งาน State Machines ใน Code Composer Studio
เริ่มต้นใช้งาน State Machines ใน Code Composer Studio
เริ่มต้นใช้งาน State Machines ใน Code Composer Studio

ในการใช้เครื่องของรัฐดำเนินการตามปกติและสร้างโครงการ CCS ใหม่ เปิดแท็บ ไฟล์ เปิด ใหม่ แล้วคลิก โครงการ CCS กำหนดชื่อโปรเจ็กต์ เลือกไมโครคอนโทรลเลอร์ของคุณ และสร้างโปรเจ็กต์ว่างซึ่งมีไฟล์ main.c ว่างเปล่า ฉันใช้ MSP430G2553

ตอนนี้คุณสามารถเริ่มทำงานกับเครื่องของรัฐได้แล้ว!

คลิกขวาที่โปรเจ็กต์ เปิด New แล้วเลือก Statechart Model ตัวช่วยสร้างจะเปิดขึ้นซึ่งคุณสามารถเลือกโครงการและตั้งชื่อแผนภูมิของคุณได้ ตัวอย่างเช่น เรียกมันว่า blinkyStateMachine.sct

โมเดล Statechart จะปรากฏในโฟลเดอร์โครงการหลังจากคลิกที่ Finish คลิกที่ ใช่ หากคุณถูกขอให้เปลี่ยนมุมมอง

ขั้นตอนที่ 3: สร้าง Blinky State Machine

สร้าง Blinky State Machine
สร้าง Blinky State Machine

ตอนนี้คุณสามารถเริ่มสร้าง statechart!

ทางด้านซ้าย คุณจะพบส่วนคำจำกัดความที่เรียกว่า คุณสามารถเพิ่มองค์ประกอบที่เป็นข้อความลงในโมเดลได้ เช่น การดำเนินการ ซึ่งสามารถเรียกได้ในเครื่องสถานะ

ลบทุกอย่างจากนั้นเพิ่มคำจำกัดความการดำเนินการทั้งสามนี้:

ภายใน:

การดำเนินการ init() การดำเนินการ redOn() การดำเนินการ redOff()

หลังจากนั้น ให้เปลี่ยนไปใช้โมเดล statechart และเพิ่มสถานะสามสถานะ:

  • การเริ่มต้น
  • ไฟ LED สีแดงติด
  • ไฟ LED สีแดงดับ

เชื่อมต่อสถานะตามที่แสดงในรูปภาพและเพิ่มการเปลี่ยนและการกระทำรายการ คุณสามารถค้นหาได้จากภาพที่รวมไว้อีกครั้ง

ขั้นตอนที่ 4: สร้าง State Machine C Code

สร้าง State Machine C Code
สร้าง State Machine C Code

ถึงเวลาสร้าง C-Code แล้ว ในการทำเช่นนี้ ต้องเพิ่มโมเดลเครื่องกำเนิดไฟฟ้า คลิกขวาที่โปรเจ็กต์อีกครั้งแล้วเปิด New แล้วคลิก Code Generator Model เลือกชื่อสำหรับไฟล์ sgen- เป็นการดีที่จะอยู่กับชื่อเครื่องของรัฐ เรียกมันว่า blinkyStateMachine.sgen แล้วคลิก Next เลือก State Machine ที่ต้องการโดยคลิกที่ช่องทำเครื่องหมาย ตรวจสอบให้แน่ใจว่าคุณได้เลือก YAKINDU SCT C Code Generator (ตามที่เราต้องการสร้าง C-Code) และคลิกที่ Finish

โดยปกติ C-Code จะถูกสร้างขึ้นโดยอัตโนมัติ แต่ถ้าไม่ คุณสามารถคลิกขวาที่ sgen -file และคลิกที่ Generate Code Artifacts เพื่อดำเนินการดังกล่าว โฟลเดอร์ src และ src-gen ควรปรากฏในโครงการของคุณ ซึ่งรวมถึง C-Code ที่สร้างขึ้น ซึ่งจะได้รับการอัปเดตโดยอัตโนมัติเมื่อคุณแก้ไขและบันทึก statechart

เนื่องจาก statechart นี้ใช้เหตุการณ์ตามเวลา จึงต้องมีการใช้บริการตัวจับเวลา ในการเตรียมสิ่งนี้ คุณต้องใช้สองไฟล์เหล่านี้: sc_timer_service.c และ sc_timer_service.h คุณสามารถรับได้จาก GitHub หรือดาวน์โหลดได้ที่นี่ คุณต้องเพิ่มลงในโฟลเดอร์ src

ขั้นตอนที่ 5: เรียกเครื่องสถานะจากรหัสของคุณ

ในที่สุด สเตทแมชชีนก็สามารถนำมาใช้ในหน้าที่หลักของคุณได้!

ขั้นแรก คุณต้องรวมเครื่องสถานะและบริการตัวจับเวลา จากนั้นจะต้องประกาศและกำหนดเครื่องสถานะ บริการตัวจับเวลา และฟังก์ชันที่จำเป็นสำหรับบริการตัวจับเวลา นอกจากนี้ การดำเนินการที่กำหนดไว้ซึ่งจะเปิดและปิดไฟ LED สีแดงอีกครั้งจะต้องดำเนินการ

#รวม

#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine กะพริบ; #define MAX_TIMERS 4 ตัวจับเวลา sc_timer_t แบบคงที่[MAX_TIMERS]; คงที่ sc_timer_service_t timer_service; //! การใช้งานการโทรกลับสำหรับการตั้งค่าเหตุการณ์เวลา extern void blinkyStateMachine_setTimer (ตัวจัดการ BlinkyStateMachine*, const sc_eventid evid, const sc_integer time_ms, const sc_boolean periodic) { sc_timer_start (&timer_service, handle, เป็นระยะ ๆ, time_ms, time_ms); } //! การใช้งานการโทรกลับเพื่อยกเลิกเหตุการณ์เวลา โมฆะภายนอก blinkyStateMachine_unsetTimer (จัดการ BlinkyStateMachine*, const sc_eventid evid) { sc_timer_cancel (&timer_service, evid); } //! กำหนดการดำเนินการภายนอกเป็นโมฆะ blinkyStateMachineInternal_init (หมายเลขอ้างอิง const BlinkyStateMachine*) { WDTCTL = WDT_MDLY_32; IE1 |= WDTIE; P1DIR |= BIT0; } โมฆะภายนอก blinkyStateMachineInternal_redOn (จัดการ BlinkyStateMachine* ที่เป็น const) { P1OUT |= BIT0; } โมฆะภายนอก blinkyStateMachineInternal_redOff (จัดการ BlinkyStateMachine*) { P1OUT &= ~ BIT0; }

หน้าที่หลักประกอบด้วยสองส่วน:

การเริ่มต้นและฟังก์ชั่นป้อนของเครื่องสถานะและการเริ่มต้นของตัวจับเวลา

ส่วนที่สองเป็นการวนซ้ำไม่รู้จบ - วง while(1) ภายในลูปนี้ ฟังก์ชันรอบการทำงานของเครื่องสถานะถูกเรียก หลังจากนั้น MSP430 จะถูกตั้งค่าเป็น Low Power Mode 0 และได้รับการตั้งค่าบิต General Interrupt Enable ตอนนี้ไมโครคอนโทรลเลอร์กำลังหลับและรอการขัดจังหวะ หลังจากการขัดจังหวะของ WDT ตัวจับเวลาจะดำเนินต่อไป ซึ่งหมายความว่าทุก ๆ ตัวจับเวลาจะได้รับการอัปเดตและเวลาที่ผ่านไปจะเพิ่มขึ้น 32 - เวลาในหน่วยมิลลิวินาที ซึ่งจะดำเนินการหลังจากการขัดจังหวะของ WDT ทุกครั้ง

โมฆะหลัก (เป็นโมฆะ) { WDTCTL = WDTPW | WDTHOLD; // หยุดตัวจับเวลาสุนัขเฝ้าบ้าน

// ตัวจับเวลาเริ่มต้นและสถานะเครื่อง sc_timer_service_init(&timer_service, ตัวจับเวลา, MAX_TIMERS, (sc_raise_time_event_fp) &blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init(&กะพริบตา); blinkyStateMachine_enter(&blinky);

ในขณะที่ (1)

{ // เรียกเครื่องสถานะทุก ๆ 32 มิลลิวินาที 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 (เป็นโมฆะ) { _bic_SR_register_on_exit (LPM0_bits + GIE); }

ขั้นตอนที่ 6: เรียกใช้โครงการ

แค่นั้นแหละ - ตอนนี้คุณสามารถสร้างและอัปโหลดโปรแกรมไปยัง MSP430 ของคุณได้!

หวังว่าบทช่วยสอนนี้จะช่วยให้คุณสร้างโครงการสำหรับ MSP430 ได้สำเร็จ ตอนนี้ได้เวลานำความคิดของคุณเองไปใช้แล้ว!

สำหรับการสร้างโค้ด จำเป็นต้องใช้ YAKINDU Statechart Tools เป็นปลั๊กอินใน Code Composer Studio ของคุณ

คุณสามารถรับเว็บไซต์อัปเดตได้ที่นี่! <

เริ่มต้นด้วยเวอร์ชันทดลองใช้งาน 30 วัน หลังจากนั้น คุณจะได้รับใบอนุญาตฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์!

แนะนำ: