MSP 430

Erklärung

Allgemein

Clock

Master clock (MCLK)

Wird von der CPU und einzelnen Peripherie genutzt

Subsystem master clock (SMCLK)

Für die Peripherie

Auxiliary clock (ACLK)

Normalerweise laufen SMCLK und MCLK mit der gleichen Frequenz (Megahertz-Bereich). Der ACLK läuft auf einer niedrigeren Frequenz (12KHz)

digitally controlled oscillator (DCO)

MCLK und SMCLK werden von dem DCO gespeisst. Der DCO läuft beim MSP403 mit 1.1 MHz

Es sind drei kallebrierte Frequenzen verfügbar: 1, 8, 12 und 16 MHz. Um diese umzustellen müssen nur die Bits im Register gesetzt werden.

Folgender Code setzt den DCO auf 1MHz:

BCSCTL1 = CALBC1_1MHZ;     // Set range
DCOCTL = CALDCO_1MHZ;     // Set DCO step and modulation


http://homepages.ius.edu/RWISMAN/C335/HTML/msp43024.jpg


Quelle: http://homepages.ius.edu/RWISMAN/C335/HTML/msp430Timer.HTM

Status Register

Im status register werden die Zustände und controll bits gehalten. Das SR besteht aus einem 16-bit Register

General interrupt enable (GIE)

Interrupts (maskable) können erst verwendet und eingesetzt werden wenn dieses Bit gesetzt ist.

Der GIE liegt auf dem 3. bit des SR

Low Power Mode (LPM)

Da Timer unabhängig von der CPU laufen können ist es möglich die CPU auszuschalten. Diese wird durch den Interrupt wieder geweckt

Code Beispiel

GIE aktivieren und Low Power Mode verwenden:

_BIS_SR(LPM0_bits + GIE);

P1DIR

Timer

Timer sind fundamentale Counter die vom Clock Signal angetrieben werden. Der Counter wird mit jedem Clock Signal in- oder decrementiert.

Wenn der Counter einen gewissen Wert erreicht hat kann ein interrupt generiert werden - Timer A interrupt flag (TAIFG).
Bsp: Wenn die Clock mit FFFFh Hz pulst und das Counter Limit bei FFFFh liegt so wird jede Sekunde ein Interrupt ausgelöst.

16 bit Timer continuous mode von 0 bis FFFFh:

http://homepages.ius.edu/RWISMAN/C335/HTML/msp43028.png

Bestandteile eines Timers

Timer_A control register (TACTL)

TASSEL = 01 in bits 9-8 wählt A0 source clock als ACLK 12KHz.

MC_1 = 01 in bit 5-4, definiert den count modus. Zählt hoch bis zu dem Wert der in TA0CCR0 hinterlegt ist und generiert ein Interrupt (wenn dieser aktiviert ist)


http://homepages.ius.edu/RWISMAN/C335/HTML/msp43030.png

Counter


Quelle: http://homepages.ius.edu/RWISMAN/C335/HTML/msp430Timer.HTM

Verwendung der Timer

capture und compare Blöcke

Timer_A control register (TACTL) - Details

Basic Timer 1 module

Verwendung des Basic Timer 1 module

Basic Timer Counter 1 (BTCNT1) und 2 (BTCNT2)

BTCNT1

wird für die frame Frequenz des LCD Controller verwendet

BTCNT2

programmable frequency divider mit interrupt Möglichkeit, (CPU interrupts)

CODE Beispiele

LED blinken

Quellcode

LED blinken mit Timer

Quellcode