Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Instalowanie narzędzi YAKINDU Statechart jako wtyczki do Code Composer Studio
- Krok 2: Pierwsze kroki z automatami stanowymi w Code Composer Studio
- Krok 3: Stwórz Blinky State Machine
- Krok 4: Wygeneruj kod maszyny stanowej C
- Krok 5: Wywołanie maszyny stanowej z kodu
- Krok 6: Uruchom projekt
Wideo: Maszyna skończona na MSP430: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Pokażę Ci, jak zaprogramować Launchpad MSP430G2 za pomocą Finite State Machine (FSM) za pomocą YAKINDU Statechart Tools bezpośrednio w Texas Instruments Code Composer Studio.
Ten samouczek zawiera sześć kroków:
- Instalowanie YAKINDU Statechart Tools jako wtyczki do Code Composer Studio
- Pierwsze kroki z automatami stanowymi w Code Composer Studio
- Stwórz Blinky State Machine
- Wygeneruj kod State Machine C
- Dzwonienie do maszyny stanowej z twojego kodu
- Uruchom projekt!
Ten projekt może być użyty jako plan dla dowolnego MPS430 lub MSP432!
Kieszonkowe dzieci
Oprogramowanie:
- Narzędzia wykresów stanu YAKINDU
- Zintegrowane środowisko programistyczne (IDE) Code Composer Studio (CCS)
Sprzęt komputerowy:
Zestaw rozwojowy LaunchPad MSP430G2
Krok 1: Instalowanie narzędzi YAKINDU Statechart jako wtyczki do Code Composer Studio
Najpierw musisz zainstalować Code Composer Studio firmy TI. Raz z powodzeniem przetestowałem konfigurację z CCS w wersji 9.2 i starszej. Link do pobrania znajdziesz tutaj:
Pobierz CCS
Kliknij, aby pobrać i upewnij się, że podczas instalacji wybrałeś przynajmniej mikrokontrolery MSP430 o bardzo niskim poborze mocy. W międzyczasie możesz pobrać stronę aktualizacji dla narzędzi YAKINDU Statechart Tools. Iść do:
Pobierz narzędzia wykresów stanu YAKINDU
Na tej stronie kliknij Pobierz teraz i postępuj zgodnie z instrukcjami. Jak widać na zdjęciu: Jest bezpłatny do użytku niekomercyjnego. Po rejestracji otrzymasz przegląd opcji pobierania. Kliknij STANDARDOWA STRONA POBIERANIA i kliknij ZAINSTALUJ Z WITRYNY AKTUALIZACJI. Znajdziesz tam link w sekcji Wydania stabilne. Chwyć ten link i zapisz go lub umieść w schowku.
Instalacja narzędzi YAKINDU Statechart Tools w Code Composer Studio może być nieco trudna, w zależności od używanej wersji Code Composer Studio. Być może te kroki są w międzyczasie nieaktualne - jednak: nie wahaj się zapytać mnie w komentarzach, czy potrzebujesz pomocy.
Oto moje kroki:
Po pomyślnym zainstalowaniu CCS w systemie otwórz kartę Pomoc i kliknij Zainstaluj nowe oprogramowanie… W tym kreatorze dodaj następującą witrynę aktualizacji za pomocą przycisku Dodaj…:
download.eclipse.org/releases/2018-09/
Nie dodawaj niczego, po prostu trzeba to rozwiązać. Widać to na zdjęciu.
Następnie powtórz kroki i kliknij przycisk Dodaj…. Wstaw witrynę aktualizacyjną YAKINDU Statechart Tools, którą, miejmy nadzieję, zapisałeś. Następnie zaznacz pole wyboru YAKINDU License Management i kliknij Dalej. Postępuj zgodnie z instrukcją. Twoje IDE może raz uruchomić się ponownie.
Na koniec możesz zainstalować narzędzia YAKINDU Statechart. Powtórz ostatnie kroki, ale tym razem wybierz YAKINDU Statechart Tools Standard Edition. Ponownie postępuj zgodnie z instrukcjami. Po ponownym uruchomieniu pomyślnie zainstalowałeś YAKINDU Statechart Tools.
Krok 2: Pierwsze kroki z automatami stanowymi w Code Composer Studio
Aby korzystać z automatów stanowych, postępuj normalnie i utwórz nowy projekt CCS. Otwórz zakładkę Plik, otwórz Nowy i kliknij Projekt CCS. Zdefiniuj nazwę projektu, wybierz swój mikrokontroler i utwórz pusty projekt, który zawiera pusty plik main.c. Użyłem MSP430G2553.
Teraz możesz rozpocząć pracę z automatami stanowymi!
Kliknij projekt prawym przyciskiem myszy, otwórz Nowy i wybierz Model wykresu stanów. Otworzy się kreator, w którym możesz wybrać swój projekt i nazwać swój diagram stanu. Na przykład nazwij to blinkyStateMachine.sct.
Model Statechart pojawi się w folderze projektu po kliknięciu przycisku Zakończ. Kliknij Tak, jeśli zostaniesz poproszony o zmianę perspektywy.
Krok 3: Stwórz Blinky State Machine
Teraz możesz rozpocząć tworzenie mapy stanu!
Po lewej stronie znajdziesz tak zwaną sekcję definicji. Tam możesz dodać do modelu elementy tekstowe, na przykład operacje, które można wywołać w maszynie stanów.
Usuń z niego wszystko i po prostu dodaj te trzy definicje operacji:
wewnętrzny:
operacja init() operacja redOn() operacja redOff()
Następnie przejdź do modelu wykresu stanów i dodaj trzy stany:
- Inicjalizacja
- czerwona dioda LED włączona
- czerwona dioda zgaszona
Połącz stany, jak pokazano na obrazku i dodaj przejścia i akcje wejścia. Możesz je ponownie znaleźć na załączonym obrazku.
Krok 4: Wygeneruj kod maszyny stanowej C
Teraz nadszedł czas na wygenerowanie kodu C. Aby to zrobić, należy dodać model generatora. Ponownie kliknij prawym przyciskiem myszy projekt i otwórz Nowy i kliknij Model generatora kodu. Wybierz nazwę pliku sgen. Dobrą praktyką jest pozostanie przy nazwie automatu stanów. Nazwij to blinkyStateMachine.sgen i kliknij Dalej. Wybierz żądany automat stanowy, klikając pole wyboru. Upewnij się, że wybrałeś Generator kodu YAKINDU SCT C (ponieważ chcemy wygenerować kod C) i kliknij Zakończ.
Zwykle kod C zostanie wygenerowany automatycznie, ale jeśli nie, możesz kliknąć plik sgen prawym przyciskiem myszy i kliknąć opcję Generuj artefakty kodu, aby to zrobić. W twoim projekcie powinny pojawić się foldery src i src-gen. Zawierają wygenerowany kod C, który zostanie automatycznie zaktualizowany podczas edycji i zapisywania schematu stanu.
Ponieważ ten schemat stanu używa zdarzeń opartych na czasie, należy zaimplementować usługę czasomierza. Aby to przygotować, potrzebujesz tych dwóch plików: sc_timer_service.c i sc_timer_service.h Możesz je pobrać z GitHub lub pobrać tutaj. Musisz je dodać do folderu src.
Krok 5: Wywołanie maszyny stanowej z kodu
Wreszcie maszyna stanowa może być używana w głównej funkcji!
Najpierw musisz dołączyć maszynę stanów i usługę timera. Następnie należy zadeklarować i zdefiniować automat stanowy, usługę timera i wymagane funkcje dla usługi timera. Dodatkowo należy wykonać zdefiniowane operacje, które włączają i wyłączają ponownie czerwoną diodę.
#włączać
#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 statyczne timery sc_timer_t[MAX_TIMERS]; statyczny sc_timer_service_t timer_service; //! implementacja wywołania zwrotnego do ustawiania zdarzeń czasowych 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); } //! implementacja wywołań zwrotnych do anulowania zdarzeń czasowych. extern void blinkyStateMachine_unsetTimer(uchwyt BlinkyStateMachine*, const sc_eventid evid) { sc_timer_cancel(&timer_service, evid); } //! definiowanie operacji 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 uchwyt BlinkyStateMachine*) { P1OUT &= ~BIT0; }
Główna funkcja składa się z dwóch części:
Inicjalizacja i funkcja enter automatu stanów oraz inicjalizacja timera.
Druga część to nieskończona pętla - pętla while(1). W tej pętli wywoływana jest funkcja cyklu uruchamiania automatu stanów. Następnie MSP430 zostanie przełączony w tryb niskiego poboru mocy 0 i zostanie ustawiony bit General Interrupt Enable. Teraz mikrokontroler śpi i czeka na przerwanie. Po przerwaniu WDT zegar będzie kontynuowany. Oznacza to, że każdy zegar jest aktualizowany, a czas, który upłynął, jest zwiększany o 32 - czas w milisekundach, który następuje po każdym przerwaniu WDT.
void main(void) { WDTCTL = WDTPW | WDTHOLD; // Zatrzymaj zegar nadzoru
// Inicjowanie licznika czasu i maszyny stanów sc_timer_service_init(&timer_service, timers, MAX_TIMERS, (sc_raise_time_event_fp) &blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init(&blinky); blinkyStateMachine_enter(&blinky);
gdy (1)
{ // wywołaj maszynę stanów co 32 ms blinkyStateMachine_runCycle(&blinky); _bis_SR_register(LPM0_bitów + 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); }
Krok 6: Uruchom projekt
To wszystko - teraz możesz zbudować i przesłać program do swojego MSP430!
Mamy nadzieję, że ten samouczek pomógł ci pomyślnie stworzyć projekt dla twojego MSP430. Teraz czas na realizację własnych pomysłów!
Do generowania kodu, YAKINDU Statechart Tools jest wymagany jako wtyczka w twoim Code Composer Studio.
Możesz pobrać stronę aktualizacji tutaj! <
Zaczyna się od 30-dniowej wersji próbnej. Następnie możesz otrzymać bezpłatną licencję do użytku niekomercyjnego!
Zalecana:
Kartonowa maszyna Gumball bez użycia rąk: 18 kroków (ze zdjęciami)
Bezdotykowa maszyna Gumball Cardboard: Stworzyliśmy bezdotykową maszynę Gumball przy użyciu micro:bit, płytki bitowej Crazy Circuits, czujnika odległości, serwa i kartonu. Stworzenie go i korzystanie z niego było „BLAST”! ? ? Kiedy umieścisz rękę w podstawie rakiety, czujnik odległości
Straszna maszyna do cukierków dyniowych na Halloween: 5 kroków
Straszna maszyna do cukierków dyniowych na Halloween: Witam wszystkich! Szczęśliwy Holloween!! Zbudowaliśmy lampion z dyni, który będzie puszczał muzykę i pluł cukierkami, gdy ktoś do niej podejdzie
Inna bezużyteczna maszyna: 6 kroków (ze zdjęciami)
Inna bezużyteczna maszyna: Przy tak wielu bezużytecznych maszynach próbowałem zrobić taką, która jest nieco inna. Zamiast mechanizmu przesuwającego przełącznik, ta maszyna po prostu obraca przełącznik o 180 stopni, w tym projekcie użyłem Nema 17 silnik krokowy, który
555 Bezużyteczna maszyna: 8 kroków (ze zdjęciami)
555 Useless Machine: Prawie każdy projekt, który zrobiłem w życiu, używa arduino lub po prostu atmegas, ale na ostatniej lekcji elektroniki w mojej szkole znalazłem mały układ scalony o nazwie 555. Słyszałem o tym wcześniej, ale myślałem, że mikrokontrolery są lepsze. Czytam
LEWITACJA ULTRADŹWIĘKOWA Maszyna z wykorzystaniem ARDUINO: 8 kroków (ze zdjęciami)
ULTRADŹWIĘKOWA LEWITACYJNA Maszyna Używająca ARDUINO: Bardzo interesujące jest zobaczyć coś unoszącego się w powietrzu lub wolnej przestrzeni, jak statki kosmiczne obcych. o to właśnie chodzi w projekcie antygrawitacyjnym. Przedmiot (w zasadzie mały kawałek papieru lub termokolu) umieszcza się między dwoma ultradźwiękowymi trans