2014-11-30 8 views
1

msp430 제품군 mcu (런치 패드 보드에는 실제로 msp430g2553 임)가 있습니다. 내가 uart 드라이버를 작성하고 작동합니다. 하지만 타이머 드라이버를 추가 한 후에 몇 가지 문제가 발견되었습니다. 첫 번째 타이머가 중단 된 후 uart가 작동을 멈 춥니 다. 타이머 인터럽트 처리기에서 일부 플래그를 복원해야합니까?msp430 uart 및 타이머 인터럽트

interrupt(TIMER0_A0_VECTOR) enablenested timer0_isr() { 
    P1OUT ^= BIT6; 
} 

void timer_init(void) { 
    int i; 
    TACTL = TASSEL_2 + ID_3 + MC_1 + TAIE; 
    TA0CCR0 = 0xffff; 
    TACCTL0 = CM_0 + CCIE; 
} 
+1

마이크로가 ISR에 고정되어 있는지 확인하려면 메인 프로그램 (또는 UART ISR)에 LED 깜박임을 추가해보십시오. 어리석게도 간단한 생각이지만, 때로는 이것들이 어떤 문제를 일으키는 지 알 수 있습니다. – Jubatian

답변

1

방금 ​​0xFFFF가 0에서 계산하고 있기 때문에, 당신이 정말로에있을 필요가 없습니다 등록 TA0CCR0의 값에 계산 (에서는 mc_1) "모드까지", 당신은 연속 "에있을 수 있습니다 모드 "(MC_2)는 자동으로 0에서 0xFFFF까지 카운트하며 올바르게 호출 할 경우 TA0CCRX 레지스터의 필요성을 제거합니다.

그렇지 않으면 TACTL = TACLR이라고 말하는 습관을 갖게됩니다. (이 레지스터를 지우는) 어떤 값을 설정하기 전에 아마도 도움이 될 수 있습니다.