MSP 430
Erklärung
CODE Beispiele
P1DIR
ist ein 8-Bit Registerdir
) des Port Pins als Input oder Output anP1DIR = <PIN7><PIN6><PIN5><PIN4><PIN3><PIN2><PIN1><PIN0>
P1.0
)P1.6
)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
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
TA0CCTL0
TA0CCR0
Quelle: http://homepages.ius.edu/RWISMAN/C335/HTML/msp430Timer.HTM
Wird von der CPU und einzelnen Peripherie genutzt
Für die Peripherie
Normalerweise laufen SMCLK und MCLK mit der gleichen Frequenz (Megahertz-Bereich). Der ACLK läuft auf einer niedrigeren Frequenz (12KHz)
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
Im status register werden die Zustände und controll bits gehalten. Das SR besteht aus einem 16-bit Register
Interrupts (maskable) können erst verwendet und eingesetzt werden wenn dieses Bit gesetzt ist.
Der GIE liegt auf dem 3. bit des SR
Da Timer unabhängig von der CPU laufen können ist es möglich die CPU auszuschalten. Diese wird durch den Interrupt wieder geweckt
GIE aktivieren und Low Power Mode verwenden:
_BIS_SR(LPM0_bits + GIE);
Timer_A clock source (TASSELx) - Bit: 9-8
TASSEL1 TASSEL0 = 00 => TACLK
TASSEL1 TASSEL0 = 01 => ACLK
TASSEL1 TASSEL0 = 10 => SMCLK
TASSEL1 TASSEL0 = 11 => INCLK
Clock signal divider (IDx) - Bit: 7-6
ID1 ID0 = 00 => /1
ID1 ID0 = 01 => /2
ID1 ID0 = 10 => /4
ID1 ID0 = 11 => /8
Clock timer operating mode (MCx) - Bit: 5-4
MC1 MC0 = 00 => Stop mode
MC1 MC0 = 01 => Up mode
MC1 MC0 = 10 => Continuous mode
MC1 MC0 = 11 => Up/down mode
Timer_A clear (TACLR) - Bit: 2
TACLR = 1
Timer_A interrupt enable (TAIE) - Bit: 1
TAIE = 1
Timer_A interrupt flag (TAIFG) - Bit: 0
TAIFG = 1
(und wenn TAIE
enabled)RTC
ImplementierungenBTCTL register configuration
eingestellt werden) wird für die frame Frequenz des LCD Controller verwendet
BTCTL
-Registersprogrammable frequency divider
mit interrupt Möglichkeit, (CPU interrupts)
ACLK
SMCLK
ACLK
/256BTCNT2
und BTDIV bits
im BTCTL
-Register