ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
71837 Топик полностью
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