按下Terminate後 燒錄的行為消失

17 views
Skip to first unread message

Jed Kuo

unread,
Jun 1, 2016, 11:52:00 AM6/1/16
to [LaunchPad互動裝置] TI MSP430 LaunchPad 使用者討論區
各位朋友大家好, 小弟最近在學習ADC10的部分, 上網找到一個sample code是用ADC10判別input電壓是否小於0.5V.
如果小於0.5V, 則亮LED1. 大於0.5V則不亮. 

為了觀察每次ADC取樣的時間, 故意在發生ADC10的Interrupt後, 加入了P1OUT ^= LED2; 讓LED2閃爍. 在CCS裡面按下Debug test後, 選Resume, 則板子上的行為跟預料中相同 (LED2閃爍, ADC input 接地時會亮燈, 接VCC時會暗燈). 

但當我按下Terminate中斷後, 發現板子的行為就消失了 (LED1不會隨著ADC input改變, 且LED2也不會閃爍). 但我記得以前在使用時, 只要成功燒錄進去後, 關掉CCS還是會維持原本行為, 不知道是不是哪邊出錯了? 麻煩大家如果知道原因的話可以跟我說一聲 (想了很久不知道是哪邊有問題), 感謝大家的幫忙! 謝謝!

程式碼如下:

#include <msp430.h>
#define LED1 BIT0
#define LED2 BIT6

void main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer

ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE;
// Vr+ = Vref+, Vr- = Vss, sample-hold-time = 16*ADC10CLKs, Reference On
// ADC10 ON, ADC10 Interrupt Enable

ADC10CTL1 = SHS_1 + CONSEQ_2 + INCH_1;
// sample-hold-source =  Timer_A OUT1, repeat-single-channel
// A1 is ADC input

__enable_interrupt(); // enable interrupt
TACCR0 = 30;
TACCTL0 |= CCIE;
TACTL = TASSEL_2 + MC_1;
LPM0;
TACCTL0 &= ~CCIE;
__disable_interrupt(); // disable interrupt

ADC10CTL0 |= ENC;
ADC10AE0 |= 0x02;
//P1DIR |= 0x01;
P1DIR |= 0x41;
P1OUT=0;
TACCR0 = 2048;
TACCTL1 = OUTMOD_3;
TACCR1 = 2047;
TACTL = TASSEL_1 + MC_1;

__bis_SR_register(LPM3_bits + GIE);
}

#pragma vector = ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
P1OUT ^= LED2;
if (ADC10MEM < 0x155)
P1OUT |= LED1;
else
P1OUT &= ~LED1;
}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A_ISR (void)
{
TACTL = 0;
LPM0_EXIT;
}
Reply all
Reply to author
Forward
0 new messages