求助:问什么我用的定时器1不起振呢?

2020-02-08 12:20发布

用PIC16LF1933,定时器1用外部32.768,时钟总是不起振,刚刚用PIC不太熟悉。

int main(void)
{
        OSCCON = 0xdb;
        PORTA = 0xff;
        PORTB = 0xff;
        PORTC = 0xff;
        PORTE = 0xff;

        TRISA = 0;
        TRISB = 0;
        TRISC = 0;
        TRISE = 0;

        ANSELA = 0;
        ANSELB = 0;
       
        T1OSCEN = 1;//使能振荡器
        TMR1CS0 = 0;//
        TMR1CS1 = 1;//
        TMR1ON = 1;//使能定时器
       
        //while(!T1OSCR)

        UartInit();

        while(1)
        {
                put_sdbg("TMR1L= %f ",TMR1L);//串口打印出来的数一直不变。
                delay();
        }
        ;
}

不使能振荡器1的话 T1OSO和T1OSI为高电平,使能后变为0.6v,说明振荡器使能没有问题。Timer1用内部时钟时TMR1L时也能正常工作。

不知道PIC的异步时钟是不是需要其他特殊设置,晶振并联1.5Mohm起振电阻也试过了,失败。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
surf_131
2020-02-08 19:20
那就是TMR1振荡器没有起振最可疑。在晶体两端各引一个22p电容到地,是常见的起振条件。有条件的话,把那个晶体去掉,换为外部时钟,用个有源的32k振荡器组件输出到T1OSI,并相应设置,用示波器看波形确保计数脉冲进入MCU。

一周热门 更多>