विषयसूची:

एमएसपी४३० पर परिमित राज्य मशीन: ६ कदम
एमएसपी४३० पर परिमित राज्य मशीन: ६ कदम

वीडियो: एमएसपी४३० पर परिमित राज्य मशीन: ६ कदम

वीडियो: एमएसपी४३० पर परिमित राज्य मशीन: ६ कदम
वीडियो: Угрюм-река (1969) (1 серия) фильм 2024, नवंबर
Anonim
MSP430. पर परिमित राज्य मशीन
MSP430. पर परिमित राज्य मशीन
MSP430. पर परिमित राज्य मशीन
MSP430. पर परिमित राज्य मशीन

मैं आपको दिखाने जा रहा हूं कि कैसे सीधे टेक्सास इंस्ट्रूमेंट्स कोड कम्पोज़र स्टूडियो में YAKINDU स्टेटचार्ट टूल्स का उपयोग करके परिमित राज्य मशीनों (FSM) के साथ MSP430G2 लॉन्चपैड प्रोग्राम करना है।

इस ट्यूटोरियल में छह चरण हैं:

  1. कोड कम्पोज़र स्टूडियो में प्लगइन के रूप में YAKINDU Statechart टूल्स इंस्टॉल करना
  2. कोड कम्पोज़र स्टूडियो में स्टेट मशीन के साथ शुरुआत करना
  3. ब्लिंकी स्टेट मशीन बनाएं
  4. स्टेट मशीन सी कोड जनरेट करें
  5. अपने कोड से स्टेट मशीन को कॉल करना
  6. परियोजना चलाओ!

इस परियोजना को किसी भी MPS430 या MSP432 के ब्लूप्रिंट के रूप में इस्तेमाल किया जा सकता है!

आपूर्ति

सॉफ्टवेयर:

  • YAKINDU स्टेटचार्ट टूल्स
  • कोड संगीतकार स्टूडियो (सीसीएस) एकीकृत विकास पर्यावरण (आईडीई)

हार्डवेयर:

MSP430G2 लॉन्चपैड डेवलपमेंट किट

चरण 1: कोड कम्पोज़र स्टूडियो में प्लगइन के रूप में YAKINDU Statechart उपकरण स्थापित करना

कोड कम्पोज़र स्टूडियो में एक प्लगइन के रूप में YAKINDU Statechart उपकरण स्थापित करना
कोड कम्पोज़र स्टूडियो में एक प्लगइन के रूप में YAKINDU Statechart उपकरण स्थापित करना
कोड कम्पोज़र स्टूडियो में प्लगइन के रूप में YAKINDU Statechart टूल्स इंस्टॉल करना
कोड कम्पोज़र स्टूडियो में प्लगइन के रूप में YAKINDU Statechart टूल्स इंस्टॉल करना
कोड कम्पोज़र स्टूडियो में एक प्लगइन के रूप में YAKINDU Statechart उपकरण स्थापित करना
कोड कम्पोज़र स्टूडियो में एक प्लगइन के रूप में YAKINDU Statechart उपकरण स्थापित करना

सबसे पहले, आपको TI का कोड कम्पोज़र स्टूडियो स्थापित करना होगा। मैंने एक बार सीसीएस संस्करण 9.2 और पुराने के साथ सेटअप का सफलतापूर्वक परीक्षण किया है। आप यहां एक डाउनलोड लिंक पा सकते हैं:

सीसीएस डाउनलोड करें

डाउनलोड करने के लिए क्लिक करें और सुनिश्चित करें कि आपने इंस्टॉल करते समय कम से कम एमएसपी 430 अल्ट्रा-लो-पावर एमसीयू चुना है। इस बीच, आप YAKINDU Statechart Tools के लिए अपडेट साइट को पकड़ सकते हैं। के लिए जाओ:

YAKINDU स्टेटचार्ट टूल्स डाउनलोड करें

इस साइट पर, अभी डाउनलोड करें पर क्लिक करें और निर्देशों का पालन करें। जैसा कि आप फोटो में देख सकते हैं: यह गैर-व्यावसायिक उपयोग के लिए निःशुल्क है। पंजीकरण के बाद, आपको डाउनलोड विकल्पों का अवलोकन मिलेगा। STANDARD DOWNLOAD SITE पर क्लिक करें और INSTALL FROM UPDATE SITE पर क्लिक करें। वहां आपको स्टेबल रिलीज़ के तहत एक लिंक मिलेगा। इस लिंक को पकड़ें और इसे सेव करें या अपने क्लिपबोर्ड में लगाएं।

आपके द्वारा उपयोग किए जा रहे कोड कम्पोज़र स्टूडियो के संस्करण के आधार पर कोड कम्पोज़र स्टूडियो में YAKINDU Statechart टूल्स को स्थापित करना थोड़ा मुश्किल हो सकता है। हो सकता है कि ये कदम इस बीच पुराने हों - हालाँकि: अगर आपको किसी मदद की ज़रूरत है तो मुझसे टिप्पणियों में पूछने में संकोच न करें।

ये मेरे कदम हैं:

अपने सिस्टम में सफलतापूर्वक सीसीएस स्थापित करने के बाद, सहायता टैब खोलें और नया सॉफ़्टवेयर स्थापित करें पर क्लिक करें … इस विज़ार्ड में, जोड़ें … बटन के माध्यम से निम्न अद्यतन साइट जोड़ें:

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

कुछ भी न जोड़ें, इसे बस हल करने की जरूरत है। आप इसे तस्वीर में देख सकते हैं।

इसके बाद स्टेप्स को दोहराएं और Add… बटन पर क्लिक करें। YAKINDU Statechart Tools अपडेट साइट डालें, जिसे आपने उम्मीद से सहेजा है। फिर, YAKINDU लाइसेंस प्रबंधन चेकबॉक्स चुनें और अगले पर क्लिक करें। निर्देशों का पालन करें। आपका आईडीई एक बार पुनः आरंभ हो सकता है।

अंत में, आप YAKINDU Statechart टूल इंस्टॉल कर सकते हैं। अंतिम चरण दोहराएं, लेकिन इस बार YAKINDU Statechart Tools Standard Edition चुनें। एक बार फिर, निर्देशों का पालन करें। पुनरारंभ करने के बाद आपने सफलतापूर्वक YAKINDU Statechart Tools स्थापित कर लिया है।

चरण 2: कोड कम्पोज़र स्टूडियो में स्टेट मशीन के साथ शुरुआत करना

कोड कम्पोज़र स्टूडियो में स्टेट मशीन के साथ शुरुआत करना
कोड कम्पोज़र स्टूडियो में स्टेट मशीन के साथ शुरुआत करना
कोड कम्पोज़र स्टूडियो में स्टेट मशीन के साथ शुरुआत करना
कोड कम्पोज़र स्टूडियो में स्टेट मशीन के साथ शुरुआत करना

राज्य मशीनों का उपयोग करने के लिए सामान्य रूप से आगे बढ़ें और एक नया सीसीएस प्रोजेक्ट बनाएं। फ़ाइल टैब खोलें, नया खोलें और सीसीएस प्रोजेक्ट पर क्लिक करें। प्रोजेक्ट का नाम परिभाषित करें, अपना माइक्रोकंट्रोलर चुनें और एक खाली प्रोजेक्ट बनाएं, जिसमें एक खाली main.c फ़ाइल हो। मैंने MSP430G2553 का उपयोग किया।

अब आप राज्य मशीनों के साथ काम करना शुरू कर सकते हैं!

प्रोजेक्ट पर राइट-क्लिक करें, नया खोलें और Statechart Model चुनें। एक विज़ार्ड खोला जाएगा जिसमें आप अपनी परियोजना का चयन कर सकते हैं और अपने राज्य चार्ट को नाम दे सकते हैं। उदाहरण के लिए, इसे blinkyStateMachine.sct कहें।

फिनिश पर क्लिक करने के बाद स्टेटचार्ट मॉडल प्रोजेक्ट फोल्डर में दिखाई देगा। यदि आपसे दृष्टिकोण बदलने के लिए कहा जाए तो हाँ पर क्लिक करें।

चरण 3: ब्लिंकी स्टेट मशीन बनाएं

ब्लिंकी स्टेट मशीन बनाएं
ब्लिंकी स्टेट मशीन बनाएं

अब आप स्टेटचार्ट बनाना शुरू कर सकते हैं!

बाईं ओर, आपको तथाकथित परिभाषा अनुभाग मिलेगा। वहां आप मॉडल में पाठ्य तत्व जोड़ सकते हैं, उदाहरण के लिए, संचालन, जिसे राज्य मशीन में कहा जा सकता है।

इसमें से सब कुछ हटा दें और बस इन तीन ऑपरेशन परिभाषाओं को जोड़ें:

अंदर का:

ऑपरेशन इनिट () ऑपरेशन रेडऑन () ऑपरेशन रेडऑफ ()

बाद में, स्टेटचार्ट मॉडल पर स्विच करें और तीन राज्य जोड़ें:

  • प्रारंभ
  • लाल एलईडी चालू
  • लाल एलईडी बंद

राज्यों को चित्र में दिखाए अनुसार कनेक्ट करें और संक्रमण और प्रवेश क्रियाएं जोड़ें। आप उन्हें शामिल तस्वीर पर फिर से पा सकते हैं।

चरण 4: स्टेट मशीन सी कोड जेनरेट करें

राज्य मशीन सी कोड उत्पन्न करें
राज्य मशीन सी कोड उत्पन्न करें

अब सी-कोड जनरेट करने का समय आ गया है। ऐसा करने के लिए, एक जनरेटर मॉडल जोड़ा जाना चाहिए। प्रोजेक्ट पर एक बार फिर राइट-क्लिक करें और नया खोलें और कोड जेनरेटर मॉडल पर क्लिक करें। sgen- फ़ाइल के लिए एक नाम चुनें। राज्य मशीन के नाम के साथ रहना एक अच्छा अभ्यास है। इसे blinkyStateMachine.sgen पर कॉल करें और Next पर क्लिक करें। चेकबॉक्स पर क्लिक करके वांछित राज्य मशीन चुनें। सुनिश्चित करें कि आपने YAKINDU SCT C कोड जेनरेटर चुना है (जैसा कि हम C-Code जेनरेट करना चाहते हैं) और फिनिश पर क्लिक करें।

आमतौर पर, सी-कोड स्वचालित रूप से उत्पन्न होगा, लेकिन यदि नहीं, तो आप sgen -file पर राइट-क्लिक कर सकते हैं और ऐसा करने के लिए Generate Code Artifacts पर क्लिक कर सकते हैं। आपके प्रोजेक्ट में फोल्डर src और src-gen दिखाई देने चाहिए। उनमें उत्पन्न सी-कोड शामिल है, जो आपके द्वारा स्टेटचार्ट को संपादित करने और सहेजने पर स्वचालित रूप से अपडेट हो जाएगा।

चूंकि यह स्टेटचार्ट समय-आधारित घटनाओं का उपयोग करता है, इसलिए टाइमर सेवा को लागू करने की आवश्यकता है। इसे तैयार करने के लिए, आपको इन दो फाइलों की आवश्यकता होगी: sc_timer_service.c और sc_timer_service.h आप उन्हें GitHub से प्राप्त कर सकते हैं या उन्हें यहां डाउनलोड कर सकते हैं। आपको उन्हें src फ़ोल्डर में जोड़ना होगा।

चरण 5: अपने कोड से स्टेट मशीन को कॉल करना

अंत में, राज्य मशीन का उपयोग आपके मुख्य कार्य में किया जा सकता है!

सबसे पहले, आपको राज्य मशीन और टाइमर सेवा को शामिल करना होगा। फिर राज्य मशीन, टाइमर सेवा और टाइमर सेवा के लिए आवश्यक कार्यों को घोषित और परिभाषित किया जाना चाहिए। इसके अतिरिक्त, परिभाषित संचालन जो लाल को चालू और बंद कर रहे हैं उन्हें फिर से लागू किया जाना चाहिए।

#शामिल

#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 स्थिर sc_timer_t टाइमर[MAX_TIMERS]; स्थिर sc_timer_service_t टाइमर_सेवा; //! समय की घटनाओं की स्थापना के लिए कॉलबैक कार्यान्वयन बाहरी शून्य blinkyStateMachine_setTimer(BlinkyStateMachine* हैंडल, const sc_eventid evid, const sc_integer time_ms, const sc_boolean आवधिक) { sc_timer_start(&timer_service, हैंडल, एविड, टाइम_एमएस, आवधिक); } //! समय की घटनाओं को रद्द करने के लिए कॉलबैक कार्यान्वयन। बाहरी शून्य blinkyStateMachine_unsetTimer (BlinkyStateMachine* हैंडल, const sc_eventid evid) { sc_timer_cancel(&timer_service, evid); } //! परिभाषित संचालन बाहरी शून्य blinkyStateMachineInternal_init(const BlinkyStateMachine* हैंडल) {WDTCTL = WDT_MDLY_32; आईई1 |= डब्ल्यूडीटीआईई; P1DIR |= BIT0; } बाहरी शून्य blinkyStateMachineInternal_redOn(const BlinkyStateMachine* हैंडल) { P1OUT |= BIT0; } बाहरी शून्य blinkyStateMachineInternal_redOff(const BlinkyStateMachine* हैंडल) { P1OUT &= ~BIT0; }

मुख्य कार्य में दो भाग होते हैं:

स्टेट मशीन का इनिशियलाइज़ेशन और एंटर फंक्शन और टाइमर का इनिशियलाइज़ेशन।

दूसरा भाग एक अंतहीन लूप है - जबकि (1) लूप। इस लूप के अंदर स्टेट मशीन के रन साइकिल फंक्शन को कहा जाता है। बाद में, MSP430 को लो पावर मोड 0 में सेट किया जाएगा और जनरल इंटरप्ट इनेबल बिट सेट हो जाएगा। अब माइक्रोकंट्रोलर सो रहा है और एक रुकावट की प्रतीक्षा कर रहा है। WDT के बाधित होने के बाद, टाइमर आगे बढ़ेगा। इसका मतलब है कि हर टाइमर अपडेट हो जाता है और बीता हुआ समय 32 से बढ़ जाता है - मिलीसेकंड में समय, जो डब्लूडीटी के हर रुकावट के बाद आगे बढ़ता है।

शून्य मुख्य (शून्य) { WDTCTL = WDTPW | डब्ल्यूडीथोल्ड; // वॉचडॉग टाइमर बंद करो

// इनिट टाइमर और स्टेट मशीन sc_timer_service_init (& timer_service, टाइमर, MAX_TIMERS, (sc_raise_time_event_fp) और blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init(&blinky); blinkyStateMachine_enter(&blinky);

जबकि (1)

{// कॉल स्टेट मशीन हर 32 एमएस blinkyStateMachine_runCycle(&blinky); _bis_SR_register(LPM0_bits + GIE); sc_timer_service_proceed(&timer_service, 32); } }

// डब्ल्यूडीटी आईएसआर

#pragma वेक्टर=WDT_VECTOR _इंटरप्ट शून्य watchdog_timer(void) { _bic_SR_register_on_exit(LPM0_bits + GIE); }

चरण 6: प्रोजेक्ट चलाएँ

बस इतना ही - अब आप प्रोग्राम बना सकते हैं और अपने MSP430 पर अपलोड कर सकते हैं!

उम्मीद है, इस ट्यूटोरियल ने आपको अपने MSP430 के लिए सफलतापूर्वक एक प्रोजेक्ट बनाने में मदद की है। अब अपने विचारों को लागू करने का समय आ गया है!

कोड निर्माण के लिए, YAKINDU Statechart Tools आपके कोड कम्पोज़र स्टूडियो में एक प्लगइन के रूप में आवश्यक है।

आप यहां अपडेट साइट प्राप्त कर सकते हैं! <

यह 30 दिनों के परीक्षण संस्करण के साथ शुरू होता है। बाद में, आप गैर-व्यावसायिक उपयोग के लिए एक निःशुल्क लाइसेंस प्राप्त कर सकते हैं!

सिफारिश की: