Thông báo

Collapse
No announcement yet.

timer trong msp430G2

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • timer trong msp430G2

    hiện tại mình muốn dùng msp430G2553, nó có 2 cái timer là timer0_A và timer1_A, tuy nhiên các thanh ghi lệnh lại giống hệt nhau, cho nên bây giờ mình muốn dùng timer1_A để đếm đến 5000 xung, sử dụng xung nội 1Mhz, còn timer0_A kia chạy đồng thời sử dụng xung đưa từ chân P1.0
    code đâym thiết lập thanh ghi mình không hiểu rõ lắm
    #include<msp430g2553.h>


    int main( void )
    {
    // Stop watchdog timer to prevent time out reset
    WDTCTL = WDTPW + WDTHOLD;
    BCSCTL1 = CALBC1_1MHZ; // Set range
    DCOCTL = CALDCO_1MHZ; // SMCLK = DCO = 1MH, dinh nghia lai tan so dao dong noi la 1Mhz
    return 0;
    }
    P1DIR |=0x32; //cac chan P1.1, P1.4, P1.5 la dau ra
    P2DIR |=0x2B; //cac chan P2.0, P2.2, P2.3, P2.5 la dau ra
    TACTL = TASSEL_2 + MC_1; //su dung xung SMCLK, che do dem len
    TACCTL = CCIE; //cho phép ngat timerA
    CCR0 = 5000; //chu ki 5000 lan
    P1SEL |= 0x01; //chan P1.0 la ngo vào xung clock TACLK cua Timer0_A
    P1SEL2 |=0x01;
    __bis_SR_register(LPM0_bits + GIE); //cho phep nhat LPM0
    #pragma vector=TIMERA0_VECTOR; //su dung ngat timerA trong suot qua trinh

  • #2
    Theo mình,dòng lệnh CCR0 = 5000 thì ko phải là đếm 5000 xung/1s đâu bạn,bởi vì khi bạn khai báo TACTL = TASSEL_2 + MC_1 thì nó đã mặc định chu kì xung là bao nhiêu đó rồi. bạn có nạp CCR0=100 cũng vậy thôi. (cái này mình thử nạp trên kit rồi)

    Comment

    Về tác giả

    Collapse

    trienst Tìm hiểu thêm về trienst

    Bài viết mới nhất

    Collapse

    Đang tải...
    X