Inhaltsverzeichnis:

Finite State Machine auf einem MSP430 - Gunook
Finite State Machine auf einem MSP430 - Gunook

Video: Finite State Machine auf einem MSP430 - Gunook

Video: Finite State Machine auf einem MSP430 - Gunook
Video: Finite State Machine : State Reduction and State Assignment in the State Diagram 2024, Juli
Anonim
Finite State Machine auf einem MSP430
Finite State Machine auf einem MSP430
Finite State Machine auf einem MSP430
Finite State Machine auf einem MSP430

Ich zeige Ihnen, wie Sie ein MSP430G2 Launchpad mit Finite State Machines (FSM) mit YAKINDU Statechart Tools direkt in Texas Instruments Code Composer Studio programmieren.

Dieses Tutorial enthält sechs Schritte:

  1. Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio
  2. Erste Schritte mit Zustandsautomaten in Code Composer Studio
  3. Erstellen Sie die Blinky State Machine
  4. Generieren Sie den C-Code der Zustandsmaschine
  5. Aufrufen der State Machine aus Ihrem Code
  6. Führen Sie das Projekt aus!

Dieses Projekt kann als Blaupause für jedes MPS430 oder MSP432 verwendet werden!

Lieferungen

Software:

  • YAKINDU Statechart-Tools
  • Code Composer Studio (CCS) Integrierte Entwicklungsumgebung (IDE)

Hardware:

MSP430G2 LaunchPad-Entwicklungskit

Schritt 1: YAKINDU Statechart Tools als Plugin für Code Composer Studio installieren

Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio
Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio
Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio
Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio
Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio
Installieren von YAKINDU Statechart Tools als Plugin für Code Composer Studio

Zuerst müssen Sie das Code Composer Studio von TI installieren. Ich habe das Setup mit CCS Version 9.2 und älter einmal erfolgreich getestet. Einen Downloadlink finden Sie hier:

CCS herunterladen

Klicken Sie hier, um herunterzuladen, und stellen Sie sicher, dass Sie während der Installation mindestens die MSP430-MCUs mit extrem geringem Stromverbrauch ausgewählt haben. In der Zwischenzeit können Sie die Update-Site für YAKINDU Statechart Tools abrufen. Gehe zu:

YAKINDU Statechart-Tools herunterladen

Klicken Sie auf dieser Seite auf Jetzt herunterladen und folgen Sie den Anweisungen. Wie Sie auf dem Foto sehen können: Es ist für die nicht-kommerzielle Nutzung kostenlos. Nach der Registrierung erhalten Sie einen Überblick über die Downloadmöglichkeiten. Klicken Sie auf STANDARD-DOWNLOAD-SITE und dann auf INSTALLIEREN VON SITE AKTUALISIEREN. Dort erhalten Sie einen Link unter Stable Releases. Schnappen Sie sich diesen Link und speichern Sie ihn oder legen Sie ihn in Ihre Zwischenablage.

Die Installation von YAKINDU Statechart Tools in Code Composer Studio kann je nach verwendeter Version von Code Composer Studio etwas schwierig sein. Vielleicht sind diese Schritte mittlerweile veraltet - aber: Zögern Sie nicht, mich in den Kommentaren zu fragen, wenn Sie Hilfe benötigen.

Das sind meine Schritte:

Nachdem Sie CCS erfolgreich auf Ihrem System installiert haben, öffnen Sie die Registerkarte Hilfe und klicken Sie auf Neue Software installieren… Fügen Sie in diesem Assistenten die folgende Update-Site über die Schaltfläche Hinzufügen… hinzu:

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

Fügen Sie nichts hinzu, es muss nur gelöst werden. Sie können es auf dem Bild sehen.

Wiederholen Sie anschließend die Schritte und klicken Sie auf die Schaltfläche Hinzufügen…. Fügen Sie die YAKINDU Statechart Tools Update-Site ein, die Sie hoffentlich gespeichert haben. Aktivieren Sie dann das Kontrollkästchen YAKINDU-Lizenzverwaltung und klicken Sie auf Weiter. Folge den Anweisungen. Ihre IDE kann einmal neu gestartet werden.

Schließlich können Sie YAKINDU Statechart-Tools installieren. Wiederholen Sie die letzten Schritte, aber wählen Sie diesmal YAKINDU Statechart Tools Standard Edition. Folgen Sie erneut den Anweisungen. Nach dem Neustart haben Sie die YAKINDU Statechart Tools erfolgreich installiert.

Schritt 2: Erste Schritte mit Zustandsautomaten in Code Composer Studio

Erste Schritte mit Zustandsautomaten in Code Composer Studio
Erste Schritte mit Zustandsautomaten in Code Composer Studio
Erste Schritte mit Zustandsautomaten in Code Composer Studio
Erste Schritte mit Zustandsautomaten in Code Composer Studio

Um Zustandsautomaten zu verwenden, gehen Sie wie gewohnt vor und erstellen Sie ein neues CCS-Projekt. Öffnen Sie die Registerkarte Datei, öffnen Sie Neu und klicken Sie auf CCS-Projekt. Definieren Sie einen Projektnamen, wählen Sie Ihren Mikrocontroller und erstellen Sie ein leeres Projekt, das eine leere main.c-Datei enthält. Ich habe den MSP430G2553 verwendet.

Jetzt können Sie mit der Arbeit mit Zustandsautomaten beginnen!

Klicken Sie mit der rechten Maustaste auf das Projekt, öffnen Sie Neu und wählen Sie Statechart-Modell. Es öffnet sich ein Wizard, in dem Sie Ihr Projekt auswählen und Ihr Statechart benennen können. Nennen Sie es beispielsweise blinkyStateMachine.sct.

Nach Klick auf Fertig stellen erscheint das Statechart-Modell im Projektordner. Klicken Sie auf Ja, wenn Sie aufgefordert werden, die Perspektive zu ändern.

Schritt 3: Erstellen Sie die Blinky State Machine

Erstellen Sie die Blinky State Machine
Erstellen Sie die Blinky State Machine

Jetzt können Sie mit der Erstellung des Statecharts beginnen!

Auf der linken Seite finden Sie den sogenannten Definitionsbereich. Dort können Sie dem Modell textuelle Elemente hinzufügen, zum Beispiel Operationen, die in der Zustandsmaschine aufgerufen werden können.

Löschen Sie alles daraus und fügen Sie einfach diese drei Operationsdefinitionen hinzu:

intern:

Operation init() Operation redOn() Operation redOff()

Wechseln Sie anschließend zum Statechart-Modell und fügen Sie drei Zustände hinzu:

  • Initialisierung
  • rote LED an
  • rote LED aus

Verbinden Sie die Zustände wie auf dem Bild gezeigt und fügen Sie die Übergänge und Eintrittsaktionen hinzu. Sie finden sie auf dem beigefügten Bild wieder.

Schritt 4: Generieren Sie den C-Code der Zustandsmaschine

Generieren Sie den C-Code der Zustandsmaschine
Generieren Sie den C-Code der Zustandsmaschine

Jetzt ist es an der Zeit, den C-Code zu generieren. Dazu muss ein Generatormodell hinzugefügt werden. Klicken Sie erneut mit der rechten Maustaste auf das Projekt, öffnen Sie Neu und klicken Sie auf Code Generator Model. Wählen Sie einen Namen für die sgen-Datei. Es empfiehlt sich, beim Namen der Zustandsmaschine zu bleiben. Nennen Sie es blinkyStateMachine.sgen und klicken Sie auf Weiter. Wählen Sie die gewünschte State Machine aus, indem Sie auf das Kontrollkästchen klicken. Stellen Sie sicher, dass Sie den YAKINDU SCT C Code Generator ausgewählt haben (da wir C-Code generieren möchten) und klicken Sie auf Fertig stellen.

Normalerweise wird der C-Code automatisch generiert, aber wenn nicht, können Sie mit der rechten Maustaste auf die sgen -Datei klicken und dazu auf Codeartefakte generieren klicken. Die Ordner src und src-gen sollten in Ihrem Projekt erscheinen. Sie enthalten den generierten C-Code, der beim Bearbeiten und Speichern des Statecharts automatisch aktualisiert wird.

Da dieses Zustandsdiagramm zeitbasierte Ereignisse verwendet, muss ein Zeitgeberdienst implementiert werden. Um dies vorzubereiten, benötigen Sie diese beiden Dateien: sc_timer_service.c und sc_timer_service.h Sie können sie von GitHub beziehen oder hier herunterladen. Sie müssen sie dem Ordner src hinzufügen.

Schritt 5: Aufrufen der Zustandsmaschine aus Ihrem Code

Schließlich kann der Zustandsautomat in Ihrer Hauptfunktion verwendet werden!

Zuerst müssen Sie die Zustandsmaschine und den Timer-Dienst einbeziehen. Anschließend müssen die Zustandsmaschine, der Timer-Dienst und die benötigten Funktionen für den Timer-Dienst deklariert und definiert werden. Außerdem müssen die definierten Operationen zum Ein- und Ausschalten der roten LED ausgeführt werden.

#enthalten

#include "src-gen/BlinkyStateMachine.h" #include "src/sc_timer_service.h" BlinkyStateMachine blinky; #define MAX_TIMERS 4 statische sc_timer_t Timer[MAX_TIMERS]; statisch sc_timer_service_t timer_service; //! Callback-Implementierung zum Einrichten von Zeitereignissen 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); } //! Callback-Implementierung zum Abbrechen von Zeitereignissen. extern void blinkyStateMachine_unsetTimer(BlinkyStateMachine* handle, const sc_eventid evid) { sc_timer_cancel(&timer_service, evid); } //! Definieren von Operationen extern void blinkyStateMachineInternal_init(const BlinkyStateMachine* handle) { WDTCTL = WDT_MDLY_32; IE1 |= WDTIE; P1VERZ |= BIT0; } extern void blinkyStateMachineInternal_redOn(const BlinkyStateMachine* handle) { P1OUT |= BIT0; } extern void blinkyStateMachineInternal_redOff(const BlinkyStateMachine* handle) { P1OUT &= ~BIT0; }

Die Hauptfunktion besteht aus zwei Teilen:

Die Initialisierung und die Enter-Funktion der Zustandsmaschine und die Initialisierung des Timers.

Der zweite Teil ist eine Endlosschleife - die while(1)-Schleife. Innerhalb dieser Schleife wird die Laufzyklusfunktion des Zustandsautomaten aufgerufen. Danach wird der MSP430 in den Low Power Mode 0 gesetzt und das General Interrupt Enable Bit wird gesetzt. Jetzt schläft der Mikrocontroller und wartet auf einen Interrupt. Nach der Unterbrechung des WDT läuft der Timer weiter. Dies bedeutet, dass jeder Timer aktualisiert wird und die abgelaufene Zeit um 32 erhöht wird - die Zeit in Millisekunden, die nach jedem Interrupt des WDT abläuft.

void main(void) { WDTCTL = WDTPW | WDTHOLD; // Watchdog-Timer stoppen

// Timer und Zustandsmaschine initiieren sc_timer_service_init(&timer_service, timers, MAX_TIMERS, (sc_raise_time_event_fp) &blinkyStateMachine_raiseTimeEvent); blinkyStateMachine_init(&blinky); blinkyStateMachine_enter(&blinky);

während (1)

{ // Zustandsmaschine alle 32 ms aufrufen 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(void) {_bic_SR_register_on_exit(LPM0_bits + GIE); }

Schritt 6: Führen Sie das Projekt aus

Das war's - Jetzt können Sie das Programm erstellen und auf Ihren MSP430 hochladen!

Hoffentlich hat Ihnen dieses Tutorial geholfen, ein Projekt für Ihren MSP430 erfolgreich zu erstellen. Jetzt ist es an der Zeit, eigene Ideen umzusetzen!

Für die Codegenerierung werden YAKINDU Statechart Tools als Plugin in Ihrem Code Composer Studio benötigt.

Die Update-Site erhalten Sie hier! <

Es beginnt mit einer 30-tägigen Testversion. Anschließend erhalten Sie eine kostenlose Lizenz für die nicht-kommerzielle Nutzung!

Empfohlen: