求助:问什么我用的定时器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起振电阻也试过了,失败。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
surf_131
1楼-- · 2020-02-08 15:08
lz,你先用内部振荡器推动tmr1,确定没有问题,再改用外接的晶体。不过,好像选择的不该是“外部振荡器”,而是内部振荡器配接晶体。请查对手册,确定你的时钟接法与设置相对应。所谓外部振荡器,是将tmr1作为计数器,外部送进来脉冲。

手册很重要,pic的手册也很详细。
xiaob135
2楼-- · 2020-02-08 16:09
 精彩回答 2  元偷偷看……
xiaob135
3楼-- · 2020-02-08 18:52
T1CON = 0x89;//1000 1001
选择T1OSI、T1OSO引脚上的晶振。
使能Timer1振荡电路
使能Timer1
按说没有错啊……


(原文件名:未命名.jpg)
surf_131
4楼-- · 2020-02-08 19:20
那就是TMR1振荡器没有起振最可疑。在晶体两端各引一个22p电容到地,是常见的起振条件。有条件的话,把那个晶体去掉,换为外部时钟,用个有源的32k振荡器组件输出到T1OSI,并相应设置,用示波器看波形确保计数脉冲进入MCU。
xiaob135
5楼-- · 2020-02-08 21:07
回复【4楼】surf_131
-----------------------------------------------------------------------

我用手分别摸晶振的两引脚定时器TMR1L会有变化,确实是没有起振的原因,晶振也试过不同封装的。

现在等第一批实验板呢,在实验板上直接测试,希望能找到原因。(现在怀疑是洞洞板上那PIC单片机有问题。)
xiaob135
6楼-- · 2020-02-08 21:27
问题已解决,原因是因为洞洞板上的那块单片机坏了,换了一片就起振了。

一周热门 更多>