MSP430 Timer

Gast #6880639
Lesenswert?

Hallo,

auf einem MSP430 wird ein Timer eingesetzt umd ein delay in 
Millisekunden zu erzeugen.
Nun bin ich etwas verwirrt. Welche Frequenz wird für den Timer benutzt? 
Ich benutze den Timer Mode "Up Mode".
Warum eigentlich das Register TA0EX0 = 7?
1
void initTimerA0()
2
{
3
    TA0CCTL0 = CCIE;
4
    TA0CCR0 = 32000;
5
    TA0EX0 = 7;  
6
} 
7

8
void delay(uint16 delay)
9
{
10
    TA0CTL |= TASSEL_1 + TACLR | MC_1; 
11
    TA0CCR0 = delay * 2;    
12
    __bis_SR_register(LPM3_bits + GIE);
13
}
14

15
#pragma vector = TIMER0_A0_VECTOR
16
__interrupt void TIMER0_A0_ISR (void)
17
{
18
    TA0CTL = MC_0; //stop timer
19
    __bic_SR_register_on_exit(LPM3_bits);
20
}
Gast #6880669
Lesenswert?

Hallo,
sag doch erstmal, welchen MSP430 Du benutzt, das Register TA0EX0 gibts 
nicht bei allen.
Die Zeile
TA0CTL |= TASSEL_1 + TACLR | MC_1;
gehört ins init, damit ist auch festgelegt, dass der Timer mit der ACLK 
läuft, welche Frequenz die ACLK hat, hängt davon ab, wie Dein 
Basic-Clock-System initialisiert ist.
Außerdem würde ich in der init erstmal TA0CCR0 auf 0 setzten, damit der 
Timer erstmal nicht losläuft, sonst landet er gleich nach Aufruf der 
Init in der IRQ und Dein Programm steht erstmal im LPM3.

soweit erstmal

Gruß wv

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren