Πίνακας περιεχομένων:

Πεπερασμένη κατάσταση μηχανή σε MSP430: 6 βήματα
Πεπερασμένη κατάσταση μηχανή σε MSP430: 6 βήματα

Βίντεο: Πεπερασμένη κατάσταση μηχανή σε MSP430: 6 βήματα

Βίντεο: Πεπερασμένη κατάσταση μηχανή σε MSP430: 6 βήματα
Βίντεο: Μηχανές πεπερασμένων καταστάσεων 2024, Νοέμβριος
Anonim
Πεπερασμένη κατάσταση μηχανή σε MSP430
Πεπερασμένη κατάσταση μηχανή σε MSP430
Πεπερασμένη κατάσταση μηχανή σε MSP430
Πεπερασμένη κατάσταση μηχανή σε MSP430

Θα σας δείξω πώς να προγραμματίσετε ένα MSP430G2 Launchpad με μηχανές πεπερασμένης κατάστασης (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. Κλήση της κρατικής μηχανής από τον κωδικό σας
  6. Εκτελέστε το έργο!

Αυτό το έργο μπορεί να χρησιμοποιηθεί ως σχέδιο για οποιοδήποτε MPS430 ή MSP432!

Προμήθειες

Λογισμικό:

  • Εργαλεία YAKINDU Statechart
  • Code Composer Studio (CCS) Integrated Development Environment (IDE)

Σκεύη, εξαρτήματα:

Κιτ ανάπτυξης MSP430G2 LaunchPad

Βήμα 1: Εγκατάσταση των YAKINDU Statechart Tools ως Plugin to Code Composer Studio

Εγκατάσταση των Εργαλείων YAKINDU Statechart ως Plugin to Code Composer Studio
Εγκατάσταση των Εργαλείων YAKINDU Statechart ως Plugin to Code Composer Studio
Εγκατάσταση των Εργαλείων YAKINDU Statechart ως Plugin to Code Composer Studio
Εγκατάσταση των Εργαλείων YAKINDU Statechart ως Plugin to Code Composer Studio
Εγκατάσταση των Εργαλείων YAKINDU Statechart ως Plugin to Code Composer Studio
Εγκατάσταση των Εργαλείων YAKINDU Statechart ως Plugin to Code Composer Studio

Πρώτον, πρέπει να εγκαταστήσετε το Code Composer Studio της TI. Έχω δοκιμάσει επιτυχώς τη ρύθμιση με την έκδοση CCS 9.2 και παλαιότερη μία φορά. Μπορείτε να βρείτε έναν σύνδεσμο λήψης εδώ:

Λήψη CCS

Κάντε κλικ για λήψη και βεβαιωθείτε ότι έχετε επιλέξει τουλάχιστον τα MSP430 εξαιρετικά χαμηλής ισχύος MCU κατά την εγκατάσταση. Εν τω μεταξύ, μπορείτε να αποκτήσετε τον ιστότοπο ενημέρωσης για τα Εργαλεία κρατικών χαρτών YAKINDU. Παω σε:

Κατεβάστε το YAKINDU Statechart Tools

Σε αυτόν τον ιστότοπο, κάντε κλικ στο Λήψη τώρα και ακολουθήστε τις οδηγίες. Όπως μπορείτε να δείτε στη φωτογραφία: Είναι δωρεάν για μη εμπορική χρήση. Μετά την εγγραφή, θα λάβετε μια επισκόπηση των επιλογών λήψης. Κάντε κλικ στο STANDARD DOWNLOAD SITE και κάντε κλικ στο INSTALL FROM UPDATE SITE. Εκεί θα λάβετε έναν σύνδεσμο στην περιοχή Σταθερές εκδόσεις. Πιάστε αυτόν τον σύνδεσμο και αποθηκεύστε τον ή τοποθετήστε τον στο πρόχειρό σας.

Η εγκατάσταση των YAKINDU Statechart Tools στο Code Composer Studio μπορεί να είναι λίγο δύσκολη, ανάλογα με την έκδοση του Code Composer Studio που χρησιμοποιείτε. Maybeσως αυτά τα βήματα να είναι παλιά εν τω μεταξύ - ωστόσο: μη διστάσετε να με ρωτήσετε στα σχόλια εάν χρειάζεστε βοήθεια.

Αυτά είναι τα βήματά μου:

Αφού εγκαταστήσετε επιτυχώς το CCS στο σύστημά σας, ανοίξτε την καρτέλα Βοήθεια και κάντε κλικ στο Εγκατάσταση νέου λογισμικού … Σε αυτόν τον οδηγό, προσθέστε τον ακόλουθο ιστότοπο ενημέρωσης μέσω του κουμπιού Προσθήκη …:

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

Μην προσθέσετε τίποτα, απλά πρέπει να λυθεί. Μπορείτε να το δείτε στην εικόνα.

Μετά από αυτό, επαναλάβετε τα βήματα και κάντε κλικ στο κουμπί Προσθήκη…. Εισαγάγετε τον ιστότοπο ενημέρωσης YAKINDU Statechart Tools, τον οποίο ελπίζετε ότι έχετε αποθηκεύσει. Στη συνέχεια, επιλέξτε το πλαίσιο ελέγχου YAKINDU License License και κάντε κλικ στο επόμενο. Ακολουθήστε τις οδηγίες. Το IDE σας μπορεί να κάνει επανεκκίνηση μία φορά.

Τέλος, μπορείτε να εγκαταστήσετε τα εργαλεία YAKINDU Statechart. Επαναλάβετε τα τελευταία βήματα, αλλά αυτή τη φορά επιλέξτε YAKINDU Statechart Tools Standard Edition. Για άλλη μια φορά, ακολουθήστε τις οδηγίες. Μετά την επανεκκίνηση, εγκαταστήσατε επιτυχώς τα Εργαλεία YAKINDU Statechart.

Βήμα 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 Project. Ορίστε ένα όνομα έργου, επιλέξτε τον μικροελεγκτή σας και δημιουργήστε ένα κενό έργο, το οποίο περιέχει ένα κενό αρχείο main.c. Χρησιμοποίησα το MSP430G2553.

Τώρα μπορείτε να ξεκινήσετε να εργάζεστε με κρατικές μηχανές!

Κάντε δεξί κλικ στο έργο, ανοίξτε Νέο και επιλέξτε Statechart Model. Θα ανοίξει ένας Οδηγός στον οποίο μπορείτε να επιλέξετε το έργο σας και να ονομάσετε το κρατικό σας γράφημα. Για παράδειγμα, ονομάστε το blinkyStateMachine.sct.

Το μοντέλο Statechart θα εμφανιστεί στο φάκελο του έργου αφού κάνετε κλικ στο Τέλος. Κάντε κλικ στο Ναι εάν σας ζητηθεί να αλλάξετε την προοπτική.

Βήμα 3: Δημιουργήστε το Blinky State Machine

Δημιουργήστε τη μηχανή Blinky State
Δημιουργήστε τη μηχανή Blinky State

Τώρα μπορείτε να ξεκινήσετε τη δημιουργία του κρατικού χάρτη!

Στην αριστερή πλευρά, θα βρείτε το λεγόμενο τμήμα ορισμού. Εκεί μπορείτε να προσθέσετε στοιχεία κειμένου στο μοντέλο, για παράδειγμα, λειτουργίες, οι οποίες μπορούν να κληθούν στο μηχάνημα κατάστασης.

Διαγράψτε τα πάντα από αυτό και προσθέστε απλώς αυτούς τους τρεις ορισμούς λειτουργίας:

εσωτερικός:

λειτουργία init () λειτουργία redOn () λειτουργία redOff ()

Στη συνέχεια, μεταβείτε στο μοντέλο statechart και προσθέστε τρεις καταστάσεις:

  • Αρχικοποίηση
  • κόκκινο LED αναμμένο
  • κόκκινο LED απενεργοποιημένο

Συνδέστε τις καταστάσεις όπως φαίνεται στην εικόνα και προσθέστε τις μεταβάσεις και τις ενέργειες εισαγωγής. Μπορείτε να τα βρείτε ξανά στην εικόνα που περιλαμβάνεται.

Βήμα 4: Δημιουργήστε τον Κώδικα State Machine C

Δημιουργήστε τον Κώδικα κρατικής μηχανής Γ
Δημιουργήστε τον Κώδικα κρατικής μηχανής Γ

Τώρα ήρθε η ώρα να δημιουργήσουμε τον Κώδικα C. Για να γίνει αυτό, πρέπει να προστεθεί ένα μοντέλο γεννήτριας. Κάντε δεξί κλικ για άλλη μια φορά στο έργο και ανοίξτε Νέο και κάντε κλικ στο Μοντέλο γεννήτρια κώδικα. Επιλέξτε ένα όνομα για το αρχείο sgen. Είναι καλή πρακτική να παραμένετε με το όνομα της κρατικής μηχανής. Καλέστε το blinkyStateMachine.sgen και κάντε κλικ στο Επόμενο. Επιλέξτε το επιθυμητό μηχάνημα κατάστασης κάνοντας κλικ στο πλαίσιο ελέγχου. Βεβαιωθείτε ότι έχετε επιλέξει τη γεννήτρια κώδικα YAKINDU SCT C (όπως θέλουμε να δημιουργήσουμε κωδικό C) και κάντε κλικ στο Τέλος.

Συνήθως, ο Κώδικας C θα δημιουργηθεί αυτόματα, αλλά αν όχι, μπορείτε να κάνετε δεξί κλικ στο αρχείο sgen -file και να κάνετε κλικ στο Generate Code Artifacts για να το κάνετε αυτό. Οι φάκελοι src και src-gen θα πρέπει να εμφανίζονται στο έργο σας. Περιλαμβάνουν τον δημιουργούμενο κωδικό C, ο οποίος θα ενημερώνεται αυτόματα όταν επεξεργαστείτε και αποθηκεύσετε τον πίνακα κατάστασης.

Επειδή αυτός ο χάρτης καταστάσεων χρησιμοποιεί γεγονότα που βασίζονται στο χρόνο, πρέπει να εφαρμοστεί μια υπηρεσία χρονοδιακόπτη. Για να το προετοιμάσετε, χρειάζεστε αυτά τα δύο αρχεία: sc_timer_service.c και sc_timer_service.h Μπορείτε να τα προμηθευτείτε από το GitHub ή να τα κατεβάσετε εδώ. Πρέπει να τα προσθέσετε στο φάκελο src.

Βήμα 5: Κλήση της κρατικής μηχανής από τον κωδικό σας

Τέλος, το μηχάνημα κατάστασης μπορεί να χρησιμοποιηθεί στην κύρια λειτουργία σας!

Πρώτον, πρέπει να συμπεριλάβετε το μηχάνημα κατάστασης και την υπηρεσία χρονοδιακόπτη. Στη συνέχεια, πρέπει να δηλωθούν και να οριστούν το μηχάνημα κατάστασης, η υπηρεσία χρονοδιακόπτη και οι απαιτούμενες λειτουργίες για την υπηρεσία χρονοδιακόπτη. Επιπλέον, πρέπει να εφαρμοστούν οι καθορισμένες λειτουργίες που ενεργοποιούν και απενεργοποιούν ξανά το κόκκινο led.

#περιλαμβάνω

#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 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, evid, time_ms, periodic); } //! υλοποίηση επανάκλησης για ακύρωση χρονικών συμβάντων. extern void blinkyStateMachine_unsetTimer (λαβή BlinkyStateMachine*, const sc_eventid evid) {sc_timer_cancel (& timer_service, evid); } //! καθορισμός λειτουργιών extern void blinkyStateMachineInternal_init (const BlinkyStateMachine* handle) {WDTCTL = WDT_MDLY_32; IE1 | = WDTIE; P1DIR | = BIT0; } extern void blinkyStateMachineInternal_redOn (const BlinkyStateMachine* λαβή) {P1OUT | = BIT0; } extern void blinkyStateMachineInternal_redOff (const BlinkyStateMachine* λαβή) {P1OUT & = ~ BIT0; }

Η κύρια λειτουργία περιλαμβάνει δύο μέρη:

Η λειτουργία εκκίνησης και εισαγωγής της μηχανής κατάστασης και η εκκίνηση του χρονοδιακόπτη.

Το δεύτερο μέρος είναι ένας ατελείωτος βρόχος - ο βρόχος while (1). Μέσα σε αυτόν τον βρόχο, καλείται η λειτουργία κύκλου εκτέλεσης της μηχανής κατάστασης. Στη συνέχεια, το MSP430 θα τεθεί στη Λειτουργία χαμηλής κατανάλωσης 0 και θα οριστεί το bit Γενικής Διακοπής Ενεργοποίησης. Τώρα ο μικροελεγκτής κοιμάται και περιμένει μια διακοπή. Μετά τη διακοπή του WDT, ο χρονοδιακόπτης θα προχωρήσει. Αυτό σημαίνει ότι κάθε χρονόμετρο ενημερώνεται και ο χρόνος που παρέχεται αυξάνεται κατά 32 - ο χρόνος σε χιλιοστά του δευτερολέπτου, ο οποίος προχωρά μετά από κάθε διακοπή του WDT.

κενό κενό (κενό) {WDTCTL = WDTPW | WDTHOLD; // Διακοπή χρονομέτρου φύλακα

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

ενώ (1)

{// κλήση μηχανής κατάστασης κάθε 32 ms blinkyStateMachine_runCycle (& blinky); _bis_SR_register (LPM0_bits + GIE); sc_timer_service_proceed (& timer_service, 32); }}

// ISR WDT

#pragma vector = WDT_VECTOR _διακοπή void watchdog_timer (κενό) {_bic_SR_register_on_exit (LPM0_bits + GIE); }

Βήμα 6: Εκτελέστε το έργο

Αυτό είναι - Τώρα μπορείτε να δημιουργήσετε και να ανεβάσετε το πρόγραμμα στο MSP430 σας!

Ας ελπίσουμε ότι αυτό το σεμινάριο σας βοήθησε να δημιουργήσετε με επιτυχία ένα έργο για το MSP430. Τώρα ήρθε η ώρα να εφαρμόσετε τις δικές σας ιδέες!

Για τη δημιουργία κώδικα, τα YAKINDU Statechart Tools απαιτούνται ως Πρόσθετα στο Code Composer Studio σας.

Μπορείτε να λάβετε τον ιστότοπο ενημέρωσης εδώ! <

Ξεκινά με δοκιμαστική έκδοση 30 ημερών. Στη συνέχεια, μπορείτε να λάβετε δωρεάν άδεια για μη εμπορική χρήση!

Συνιστάται: