logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 6771190
    hpLukasz
    Poziom 10  
    Witam, ostatnio mialem mozliwosc pracowania na mikrokontrolerze msp430F5438. Chcialem obsluzyc timer A1 w trybie up/down.
    konfiguracja:

    TA1CCR0 = time;
    //additional div=8
    TA1EX0 = TAIDEX_7;
    //enable interrupts while compare
    TA1CCTL0 = CCIE;
    //set ACLK, div=8, up/down mode, clear
    TA1CTL = TASSEL0 + ID_3 + MC_3 + TACLR;

    W obsludze jest blyskanie led:

    #pragma vector=TIMER1_A1_VECTOR
    __interrupt void Timer_A1 (void)

    {
    //blinking led
    if(light_flag) {
    P1OUT = 0x0;
    light_flag = 0;
    } else {
    P1OUT = 0x1;
    light_flag = 1;
    }
    }

    Timer dziala ale nie do konca, timer powinien zliczac do wartosci time i w dol do zera, a nastepnie generowac przerwanie. Po wystartowaniu timera, zglaszane jest przerwanie po zliczeniu do wartosci "time"; powinno to nastapic po 2-krotnie dluzszym czasie. Co ciekawe tak sie dzieje w kolejnych zliczeniach licznika. Jedynie w tym pierwszym zliczaniu wystepuje rozbieznosc.
    Moze ktos spodkal sie juz z podobnym problemem ?
  • REKLAMA
REKLAMA