Herunterladen Inhalt Inhalt Diese Seite drucken
Texas Instruments MSP430 Anleitung
Vorschau ausblenden Andere Handbücher für MSP430:

Werbung

TI-Projekt SS12
Thema:
Implementierung eines 16 Bit Controllers mit MSP430
Entwicklungsboard ins Praktikum der Rechnerarchitektur
Mariela Cuya
(Frank Schäfer / Jan Pridal)
FH-Köln Campus Gummersbach
05.06.2012

Werbung

Inhaltsverzeichnis
loading

Inhaltszusammenfassung für Texas Instruments MSP430

  • Seite 1 TI-Projekt SS12 Thema: Implementierung eines 16 Bit Controllers mit MSP430 Entwicklungsboard ins Praktikum der Rechnerarchitektur Mariela Cuya (Frank Schäfer / Jan Pridal) FH-Köln Campus Gummersbach 05.06.2012...
  • Seite 2: Inhaltsverzeichnis

    MSP430 Mikrocontroller Inhalt TI-Projekt SS12 ............................ 0 Glossary ..............................3 Einführung ............................... 4 1.- Moses (R65xxx)vs.MSP430 (RISC) ...................... 5 2.- MSP430 Mikrocontroller ........................6 3. Betriebsarten ............................7 4. Interrupts-Behandlung ........................7 5. Zeitgeber-Modul (Basic-Clock Modul) ....................8 5.1. Grundtakt-Modul (Betrieb) ......................8 5.1.1.
  • Seite 3 FH-Köln Campus Gummersbach MSP430 Mikrocontroller 11.1 TxCCR0 Interrupt-Vektor ......................33 11.2. TxIV Interrupt-Vektor-Generator .................... 33 12. Aufbau der wichtigsten Timer A Register ..................35 13. Implementierung einer Praktikumsaufgabe in RA Praktikum ............36 13.1 Der Versuchsaufbau: ......................... 37 13.2 Ausgabesignal des Pattern Generators für 2 ASCII Zeichen ............38 14.
  • Seite 4: Glossary

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller Glossary ACLK Auxiliary Clock Siehe Basic Clock Module Analog-to-Digital Converter Central Processing Unit Digital-to-Analog Converter Digitally Controlled Oscillator Siehe Basic Clock Module General Interrupt Enable Siehe System Interrupts (N/2) Integer portion of N/2 Input/Output Siehe Digital I/O...
  • Seite 5: Einführung

    Die folgende Anleitung soll den Studenten zur Hilfestellung dienen, um einen schnelleren und leichteren Einstieg mit dem Umgang eines MSP430Gxxx Mikrocontroller und IAR’s Simulatorzu ermöglichen. Voraussetzung für das Arbeiten mit dem MSP430 Mikrocontroller sind Vorkenntnisse mit dem Mikrocontroller Moses, da sich beide Mikrocontroller nicht stark voneinander unterscheiden (CPU Architektur und Programmierung).
  • Seite 6: Moses (R65Xxx)Vs.msp430 (Risc)

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 1.- Moses (R65xxx)vs.MSP430 (RISC) Der 6502 ist ein Mikroprozessor mit zweistufiger Pipeline-Architektur, d.h. wenn nur nochinterne Schaltschritte für einen Befehl notwendig sind, kannder nächste Befehl gleichzeitig aus dem Speicher geholt werden. Der Befehlssatz des 6502 kann als „fast orthogonal“ angesehen werden.
  • Seite 7: Msp430 Mikrocontroller

    Energiesparmodi, ist für tragbare Mess-Anwendungen mit einer längeren Akkulaufzeit ausgerüstet. Das MSP430 verfügt über einen leistungsstarken 16-Bit RISC CPU und ein 16-Bit-Register. Vier der Register, R0 bis R3, werden als Programmzähler, Stack-Pointer, Status-Register oder konstante Generatoren verwendet. Die restlichen Register sind Mehrzweck-Register. Das 16-Bit-Register bietet eine reduzierte Befehlsausführungszeit, die konstanten Generatoren tragen...
  • Seite 8: Betriebsarten

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 3. Betriebsarten Der MSP430 verfügt über einen aktiven Modus und fünf einstellbare Energiesparbetriebsarten. Die folgenden sechs Betriebsarten können per Software konfiguriert werden: Betriebsart ACLK SMCLK MCLK Aktiver Modus Low Power Modus 0 (LPM0) Low Power Modus 1 (LPM1)
  • Seite 9: Zeitgeber-Modul (Basic-Clock Modul)

    Verfügung gestellt werden können 5.1. Grundtakt-Modul (Betrieb) Der Mikrocontroller MSP430 umfasst vier Oszillatoren, die als Frequenzquelle für die drei Zähler- Module dienen. Nach einem PUC können MCLK und SMCLK aus einem DCOCLK stammen (bei ~ 1,1 MHz). Das ACLK stammt aus der LFXT1CLK im LF Modus mit einer internen Lastkapazität von 6 pF.
  • Seite 10: Niederfrequenz Oszillator (Vlo)

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 5.1.2. Niederfrequenz Oszillator (VLO) Der interne Niederfrequenz-Oszillator (VLO)bietet eine typische Frequenz von 12kHz ohne einen Quarz-Zähler. Die VLOCLK Oszillator-Quelle wird mit LFXT1Sx= 10, wenn XTS= 0definiert.DerOSCOFF- Bitdeaktiviert den VLO für denLPM4-Modus. Der VLO wird für eine Verringerung des zeitigen Stromverbrauchs ausgewählt, solange die LFTXT1 deaktiviert bleibt.
  • Seite 11 FH-Köln Campus Gummersbach MSP430 Mikrocontroller Beispiel: //****************************************************************************** // MSP430Gxxxx - Basic Clock, MCLK und ACLK // Beschreibung: Puls P1.0 1/100 und P1.6 1/1 aktiver Arbeit Zyklus mittels Software . // VLO mit einer Frequenz von ~ 1.5kHz, Low-Power Modus vorgeführt.
  • Seite 12: Steuerleitung (Digitale I/O)

    MSP430 Mikrocontroller 6. Steuerleitung (Digitale I/O) MSP430-Geräte haben bis zu acht digitale I / O-Steuerleitungen (Ports) implementiert (P1 bis P8) und verfügen über bis zu acht I/O Pins. Jeder I/O-Pin kann individuell als Eingang oder Ausgang konfiguriert werden. Jede I/O-Leitung kann einzeln gelesen oder beschrieben werden.
  • Seite 13 FH-Köln Campus Gummersbach MSP430 Mikrocontroller Beispiel: //****************************************************************************** // MSP430G2xx2 Demo - P1 Hardware Interrupt // Beschreibung: CPU ist im Sleep Modus solange kein Hardware Interrupt // ausgelöst wird, ist P1.3 hi P1.0 LED an oder low, P1.0 LED aus ACLK = n/a, MCLK = SMCLK = default DCO...
  • Seite 14: Überwachungstimer (Watchdog Timerwdt +)

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 7. Überwachungstimer (Watchdog TimerWDT +) Die primäre Funktion des WDT + Modul ist für die Durchführung eines gesteuerten Systems zuständig, wenn nach einem Software-Neustart Probleme auftreten sollten. Nach dem Ablauf eines Zeitintervalls wird vom System ein Reset durchgeführt. Wenn die Überwachungstimer-Funktion nicht für die Anwendung benötigt wird, kann sie als Intervall-Timer konfiguriert werden und für bestimmte...
  • Seite 15: Interrupt-Vektor

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 8.- Interrupt-Vektor Bei einem Interrupt Vektor handelt es sich um einen Zeiger auf eine Interrupt Service Routine Es gibt eine Vielzahl an Ereignissen, die wiederum eine Vielzahl verschiedener Interrupt Service Routinen aufrufen können, wobei jedem Ereignis eine bestimmte Interrupt Service Routine fest zugeordnet ist.
  • Seite 16 FH-Köln Campus Gummersbach MSP430 Mikrocontroller Interrupt-Freigabe Adresse 7 NMIIE OFIE WDTIFE WDTIFG : Freigabe des Wachtdog Timer Interrupt OFIFE : Freigabe des Oszillator-Interrupts NMIIE : Freigabe des Interrupts-NMI Adresse unbenutzt Interrupt-Flag Adresse NMIIFG RSTIFG PORIFG OFIFG WDTIFG WDTIFG : Watchdog-Timer-Überlauf, Einschalten oder Reset am RST / NMI...
  • Seite 17: Timer A Und Timer B

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 9. Timer A und Timer B Die Timer bestehen aus mehreren Capture/Compare-Register, PWM-Ausgängen und Zeitintervallen. Die Timer verfügen über umfassende Interrupts-Funktionen, die bei einer Überlauf-Bedingung und von jedem Capture/Compare-Register ausgelöst werden können. Der Timer B ist bei den von uns verwendeten Controllern nicht verfügbar! Timer Merkmale: 1.
  • Seite 18: Timer-Modus

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 9.3 Timer-Modus Der Timer hat vier Modi als Operationen, die durch MCx konfiguriert werden Modi Beschreibung Stop Timer wird angehalten Timer wiederholt das Zählen von 0 bis zu dem Wert von TACCR0 Continuous Timer wiederholt das Zählen von 0 bis 0FFFFh Up/Down Timer wiederholt das Zählen von 0 bis zu dem Wert von TACCR0 und...
  • Seite 19: Continuos Modus

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 9.3.2 Continuos Modus Das TACCR0 Register arbeitet vergleichsweise wie ein Capture/Compare Register. Der TAIG Interrupt Flag wird gesetzt, wenn der Timer von 0FFFFh bis null zählt. Im Continuos Modus wird auch der Interrupt Flag zyklisch gesetzt. Der Continuos Modus kann zur Erzeugung von verschiedenen Zeitintervallen und unterschiedlichen Ausgangsfrequenzen verwendet werden.
  • Seite 20: Taktung Und Teilung

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 9.4 Taktung und Teilung Der Timer kann aus der ACLK/SMCLK oder extern aus der TACLK/INCLK erfolgen. Die Auswahl des Taktgebers (Clock) erfolgt durch die TASSELx Bits. Der ausgewählte Taktgeber (Clock) kann direkt in den Timer weitergegeben oder dividiert werden (2, 4 oder 8 mit den IDx Bits). Der Timer, Zeitgeber und Teiler werden zurückgesetzt, wenn der TACLR gesetzt wird...
  • Seite 21: Anwendungsbeispiele Zur Realisierung Von Timer Und Hardware Interrupts

    Hardwareinterrupt implementieren. Während unserer ausgiebigen Tests und Versuche haben wir z.B. folgende wichtige Erkenntnisse erlangt, die man bei der Entwicklung einer Applikation für den MSP430 Controller immer berücksichtigen sollte: 1.: Bei Verwendung von Timer Funktionen sollten immer alle Timer Interrupt Service Routinen im Programm implementiert werden.
  • Seite 22: Cctl0 Enabled, Cctl1 Disabled Und Taie Im Tactl Gesetzt

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller Beispiel 1: 9.5.1 CCTL0 enabled, CCTL1 disabled und TAIE im TACTL gesetzt #include <msp430G2231.h> int X = 0; unsigned int TimeValue = 10000; void INIT(); //-----------------------MAIN PROGRAM-------------------------------- int main( void ) if (X==0) INIT(); X = 1;...
  • Seite 23 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //............. //-------------------IRQ SERVICE ROUTINES--------------------------- //TimerA0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void TIMERA0_ISR(void) // CCTL0.CCIFG flag will acknowledge automatically P1OUT^=0x01; // Toggle P1.0 //------------------------------------------------------------------ //TimerA1 interrupt service routine #pragma vector=TIMERA1_VECTOR __interrupt void TIMERA1_ISR(void) // Acknowledge TAIFG IRQ Flag by reading TAIV register via switch operation...
  • Seite 24 FH-Köln Campus Gummersbach MSP430 Mikrocontroller P1.0 : Toggle Time = P1.1 : Toggle Time IRQ A0-Timer Intervall = 68 ms (CCR0 = 10000)  10.000 * 6,8µs = 68 ms IRQ A1-Timer Intervall = 68 ms (CCR0 = 10000)  10.000 * 6,8µs = 68 ms...
  • Seite 25 FH-Köln Campus Gummersbach MSP430 Mikrocontroller Bemerkung: Dieses Bild zeigt die Verzögerung zwischen A0-Timer Interrupt (gelb) und A1-Timer Interrupt (grün). Beim Up-Mode sollte diese Zeit eigentlich nur einen Clock betragen. Wie auch beim 6802 (Moses) sind Messungen im µs Bereich nicht realisierbar, da die Abarbeitungszeit einer C oder Assembler Anweisung schon >...
  • Seite 26: Cctl0 Enabled, Cctl1 Enabled Mit (Ta)Ccr1 = (Ta)Ccr0/2 Und Tai Im Tactl Gesetzt

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller Beispiel 2: 9.5.2 CCTL0 enabled, CCTL1 enabled mit (TA)CCR1 = (TA)CCR0/2 und TAI im TACTL gesetzt #include <msp430G2231.h> int X = 0; unsigned int TimeValue = 10000; void INIT(); //-----------------------MAIN PROGRAM-------------------------------- int main( void ) if (X==0) INIT();...
  • Seite 27 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //(prescaler =8)) the time for 1 clock = 6,8µs! //............. //-------------------IRQ SERVICE ROUTINES--------------------------- //TimerA0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void TIMERA0_ISR(void) // CCTL0.CCIFG flag will acknowledge automatically P1OUT^=0x01; // Toggle P1.0 //------------------------------------------------------------------ //TimerA1 interrupt service routine...
  • Seite 28 FH-Köln Campus Gummersbach MSP430 Mikrocontroller P1.0 : Toggle Time = IRQ A0-Timer Intervall = 68 ms (CCR0 = 10000)  10.000 * 6,8µs = 68 ms P1.1 : Toggle Time = IRQ A1-Timer Intervall = 34 ms (CCR1 = 5000) ...
  • Seite 29: Cctl0 Enabled, Cctl1 Disabled Und Taie Im Tactl Nicht Gesetzt

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller Beispiel 3: 9.5.3 CCTL0 enabled, CCTL1 disabled und TAIE im TACTL nicht gesetzt #include <msp430G2231.h> int X = 0; unsigned int TimeValue = 10000; void INIT(); //-----------------------MAIN PROGRAM-------------------------------- int main( void ) if (X==0) INIT();...
  • Seite 30 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //............. //-------------------IRQ SERVICE ROUTINES--------------------------- //TimerA0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void TIMERA0_ISR(void) // CCTL0.CCIFG flag will acknowledge automatically P1OUT^=0x01; // Toggle P1.0 //------------------------------------------------------------------ //TimerA1 interrupt service routine #pragma vector=TIMERA1_VECTOR __interrupt void TIMERA1_ISR(void) // Acknowledge CCTL1.CCIFG IRQ-Flag and/or TAIFG IRQ Flag by reading...
  • Seite 31 FH-Köln Campus Gummersbach MSP430 Mikrocontroller Wenn sowohl CCTL1 disabled ist, also ein CCR1 event keinen Timer A1 Interrupt auslösen kann und auch der Timer A Interrupt nicht freigegeben ist durch setzen von TAIE im TACTL, also das automatische 0 setzen von TAR im Up-Mode auch keinen Timer A1 Interrupt mehr auslösen kann, dann wird nur noch die Timer A0 Interrupt Service Routine benötigt und bearbeitet.
  • Seite 32: Capture / Compare Modus

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 9.6 Capture / Compare Modus Für Timer A Im Timer A sind bis zu drei gleiche Empfangs- bzw. Vergleichsblöcke (TACCRx). Jeder der Blöcke kann verwendet werden, um die Daten der Timer zu erfassen oder Zeitintervalle zu erzeugen.
  • Seite 33: Capture-Modus

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 9.7. Capture-Modus Der Capture Modus wird für die Aufzeichnung oder Berechnung von analogen und digitalen Signalen verwendet. Er wird gewählt, wenn GAP = 1 ist. Die Eingänge CCIxA und CCIxB sind mit externen Pins oder internen Signalen verbunden und werden durch CCISx Bits gewählt. Die CMx-Bits wählen die Flanke des Eingangssignals als steigend, fallend oder beides aus.
  • Seite 34: Ausgangsbaugruppe(Output Unit)

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 10. Ausgangsbaugruppe(Output Unit) Jeder Empfangs-/Vergleichs-Block enthält eine Ausgabeeinheit. Die Ausgabeeinheit wird verwendet um Ausgangssignale zu erzeugen. Jeder Ausgang verfügt über acht Betriebsarten, die Signale auf Basis der EQU0 und EQUx Signale erzeugen. 11. Timer-Interrupts Zwei Interrupt-Vektoren sind mit dem 16-Bit-Timer x Modul verbunden: •...
  • Seite 35 FH-Köln Campus Gummersbach MSP430 Mikrocontroller Wenn die TxCCR1 und TxCCR2 CCIFG Flags gesetzt sind, greift die Interrupt-Routine auf die TxIV Register zu und der TxCCR1 CCIFG wird automatisch zurückgesetzt. Nachdem die Ausführung von der RETI Interrupt-Routine erfolgt ist, wird über TxCCR2 CCIFG eine weitere Interrupt-Routine ausgeführt.
  • Seite 36: Aufbau Der Wichtigsten Timer A Register

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 12. Aufbau der wichtigsten Timer A Register TACTL, Timer_A Control Register TAR, Timer_A Register TACCRx, Timer_A Capture/Compare Register x TACCTLx, Capture/Compare Control Register TAIV, Timer_A Interrupt Vector Register 35 | S e i t e...
  • Seite 37: Implementierung Einer Praktikumsaufgabe In Ra Praktikum

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 13. Implementierung einer Praktikumsaufgabe in RA Praktikum “Entwicklung einer asynchron, bitseriellen Empfangsschnittstelle für ASCII-Zeichen“ Erläuterung: Jeweils ein ASCII-Zeichen soll mittels Pattern Generator Bitseriell zum Controller pro Telegramm übertragen werden. Es soll immer das zuletzt empfangene Zeichen auf einem 8-Bit Ausgangsport des MSP ausgegeben und mittels LED-Box visualisiert werden.
  • Seite 38: Der Versuchsaufbau

    MSP430 Mikrocontroller 13.1 Der Versuchsaufbau: MSP 430 Controller Box mit 2mm Steckersystem Pattern Generator zur Erzeugung des TxD-Signals  P1.7 des MSP430 5V Spannungsquelle (Moses Portbox) zur Versorgung der LED Box Konfiguration des USB – Pattern Generators von Deditec: 37 |...
  • Seite 39: Ausgabesignal Des Pattern Generators Für 2 Ascii Zeichen

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 13.2 Ausgabesignal des Pattern Generators für 2 ASCII Zeichen Startbit Stopbit Idle Startbit Stopbit Idle Zeichenfolge: 1010 1100  35 Hex  “5” 0101 1100 - 3A Hex  „:“ 38 | S e i t e...
  • Seite 40: Das Realisierte C Programm Für Den Empfang Und Die Ausgabe Von Ascii Zeichen

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 14. Das realisierte C Programm für den Empfang und die Ausgabe von ASCII Zeichen Funktionsbeschreibung: Es werden (variable) 10 Zeichen vom Pattern Generator empfangen und in einem FIFO Array zwischengespeichert. Die aktuelle Anzahl der FIFO Einträge wird auf Port 1.0 bis P1.6 im Dual Code angezeigt.
  • Seite 41 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //---------- Main Function ------------------------------------- int main( void ) Start: enable = 1; //Freigabe für Initialisierung INIT(enable); //Initialisierungsfunktion RECEIVE(Number); //Empfangsfunktion für n ASCII Zeichen DISPLAY(Number); //Empfangene Zeichen anzeigen //..Ende....enable = 0; INIT(enable); //IRQ's sperren //......
  • Seite 42 FH-Köln Campus Gummersbach MSP430 Mikrocontroller // Timer deaktivieren vorab TACTL = MC_0; //Timer beenden CCR0 = 0; //Counter Control Register löschen CCTL0 = 0x00; // CCR0 interrupt disabled CCTL1 = 0x00; // CCR1 interrupt disabled //..............//Low Power Management(wake up on interrupt) + IRQ-Freigabe //Danach geht CPU in Stop, bis zum 1.
  • Seite 43 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //Ausgabe der laufenden akt. Empfangs-Nr. auf Port 1 P1OUT = (unsigned char)i+1; //........ //-------------------------------------------------------------- void DISPLAY(int n) fDisplayActive = 1; //Zeichen-Ausgabe Mode aktiv setzen für TIRQ //.... Timer starten .... CCTL1 = 0x00; // CCR1 interrupt disabled CCTL0 = CCIE;...
  • Seite 44 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //----------------- Interrupt Service routines ----------------- //TimerA0 interrupt service routine //================================= #pragma vector=TIMERA0_VECTOR __interrupt void TIMERA0_ISR(void) if(fDisplayActive == 1) //Zeichenausgabe auf Port 1 nach Empfang aller Zeichen fDisplayTimeReady = 1; else if(fFrameActive == 1) //sonst Zeichenempfang bearbeiten if(BitCount == 0) //Wenn 1.
  • Seite 45 FH-Köln Campus Gummersbach MSP430 Mikrocontroller //......... else TACTL = MC_0; CCR0 = 0; CCTL1 = 0x00; CCTL0 = 0x00; // CCR0 interrupt disabled //-------------------------------------------------------------- //Hardware interrupt service routine //=================================== #pragma vector=PORT1_VECTOR __interrupt void Port1(void) { if((fFrameActive == 0) && (fDisplayActive == 0)) TACTL = MC_0;...
  • Seite 46: Normierung Der Timerwerte

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 14.1 Normierung der Timerwerte Um exakte Zeitwerte mit dem Zählregister zu realisieren muss die Zeit für einen Clock Tick bekannt sein, also die Zeit die der Zähler benötigt um seinen Zählerstand um 1 zu erhöhen.
  • Seite 47: Ein Weiterer Vorschlag Für Eine Praktikumsaufgabe

    FH-Köln Campus Gummersbach MSP430 Mikrocontroller 15. Ein weiterer Vorschlag für eine Praktikumsaufgabe Im definierten Zeittakt (z.B. 1 Sek.) einen änderbaren Analogwert mit vorhandenem Analog- Digitalkonverter und MOSES einlesen und Tetraden seriell an den MSP 430 Controller senden. Auf dem Controller dann den empfangenen Spannungswert (0..2,55V) mit parametrierten Vergleichswerten vergleichen und den aktuellen Spannungszustand visualisieren.

Inhaltsverzeichnis