vekt (15.10.2006 13:52, просмотров: 1) ответил vekt на Чего-то я поспешил:) Я подключил кварц 4Мгц, конденсаторы к нему, Завел прерывание от TA. Моргаю светодиодом раз в секунду (мат выкладка приводится). Опаздывает :[
я так написал extern void SetOsc(void);
interrupt[TIMERA0_VECTOR] void ta_int(void);
unsigned int tacnt;
Основной цикл программы:
void main(void){
...
SetOsc();
...
while(1){
...
if (tacnt>9)
{
P1OUT ^= 0x001;
tacnt = 0;
}
}
}
Обработчик прерывания:
interrupt[TIMERA0_VECTOR] void ta_int(void){
tacnt++;
*sptr &= ~CPUOFF;
}
;---setting the oscilator:
SetOsc bis.b #XTS,&BCSCTL1 ; LFXT1 = HF XTAL
SetupOsc bic.b #OFIFG,&IFG1 ; Clear OSC fault flag
mov.w #0FFh,R15 ; R15 = Delay
SetupOsc1 dec.w R15 ; Additional delay to ensure start
jnz SetupOsc1 ;
bit.b #OFIFG,&IFG1 ; OSC fault flag set?
jnz SetupOsc ; OSC Fault, clear flag again
bis.b #SELM1+SELM0+DIVM_2 ,&BCSCTL2 ; MCLK = LFXT1/4 (1 MGz)
SetupC0 mov.w #CCIE,&CCTL0 ; CCR0 interrupt enabled
mov.w #25000,&CCR0 ; -> 10 Gz <-
SetupTA mov.w #TASSEL_2+MC_1+ID_2,&TACTL ; SMCLK, upmode 250 kGz
eint
ret