打印

PIC16F726TIM1定时问题

[复制链接]
727|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    最近公司在生产一批产品,主控用的是PIC16F726 ssop28。内振8M,外振32.768K ,外围无匹配电容(前辈设计的电路)定时器使用的是TIM1。定时时间为1S,用的是PM3烧录器离线烧录。请教一下论坛的朋友有没有遇到这种问题并有解决方法的。供应商那边也在分析着。

问题:在测试 过程中出现50%以上指示灯常亮的问题。



1:怀疑是不起振,用示波器测量后,有起振。对比好的板子波形,判断不是晶体问题。
2:怀疑是板子问题?把好的板子和不正常的板子上的主控对调后,正常的板子变成不正常了。不正常的变成正常了。判断不是板子问题
3:怀疑是芯片问题,编写了一个用TIM1定时1S,LED 1s正反输出。烧录后发现LED不会1S闪烁,判断不是软件问题
4:怀疑是晶体没有匹配电容的问题,加上10p的匹配电容后,问题一样。
5:怀疑是外围电路有影响,把mcU换到另外一款板子上,发现LED正常闪烁。换了2个板子,也是这样。一脸懵,
6:当时想了一下,是不是mcu焊接过还留有温度的问题,把板子接电放在小风扇前吹,发现灯慢慢的就不闪烁了。用洛铁在IC上加热一下,又闪烁了,冷却后有不正常了。现在是真不知道什么问题了........


void Reg_TIMER1_Config(void)
{
     T1CON=0xAC;//0x88;    //TIMER1 控制寄存器 '在睡眠时timer1可以用'
                       //bit 7-6 TMR1CS<1:0>:Timer1 时钟源选择位 11 = Timer1 时钟源为容性传感振荡器(CAPOSC)
                       //                                         10 = Timer1 时钟源为引脚或振荡器:
                       //                                              如果T1OSCEN = 0:来自T1CKI 引脚的外部时钟(上升沿触发计数)
                       //                                              如果T1OSCEN = 1:T1OSI/T1OSO 引脚上的晶振
                       //                                         01 = Timer1 时钟源为系统时钟(FOSC)
                       //                                         00 = Timer1 时钟源为指令时钟(FOSC/4)
                       //bit 5-4 T1CKPS<1:0>:Timer1 输入时钟预分频比选择位  11 = 1:8 预分频比 10 = 1:4 预分频比  01 = 1:2 预分频比 00 = 1:1 预分频比
                       //bit 3 T1OSCEN:LP 振荡器使能控制位 1 = 使能专用的Timer1 振荡器电路 0 = 禁止专用的Timer1 振荡器电路
                       //bit 2 T1SYNC:Timer1 外部时钟输入同步控制位  TMR1CS<1:0> = 0X
                       //                                                         1 = 不同步外部时钟输入
                       //                                                         0 = 将外部时钟输入与系统时钟同步(FOSC)
                       //                                             TMR1CS<1:0> = 1X
                       //                                             该位为无关位。当TMR1CS<1:0> = 1X 时, Timer1 使用内部时钟。
                       //bit 0 TMR1ON:Timer1 使能位 1 = 使能Timer1  0 = 停止Timer1 清除Timer1 门控触发器


   // TMR1H = 0xFF;                     
   // TMR1L = 0xdf;
    TMR1H = 0xE0;                     
    TMR1L = 0xBF;                 
    T1GCON=0x00;

    PIE1|=0x01;
    PIR1&=~0x01;
    T1CON|=0x01

    INTCON|=0xc0   
}



      if(TMR1IF&TMR1IE)                  
      {
          //每次1S
          TMR1ON = 0;            //防写冲突先关再写
          TMR1H  = 0xE0;         
          TMR1L  = 0xBF;
          TMR1ON = 1;

                                        timer1s_flag =1;

       TMR1IF = 0;              
      }


460025ea7820078cb0.png (323.2 KB )

460025ea7820078cb0.png

699265ea78b4fd3298.png (13.75 KB )

699265ea78b4fd3298.png

使用特权

评论回复
沙发
GIGGWANG| | 2020-4-28 11:20 | 只看该作者
会不会是烧录导致的

使用特权

评论回复
板凳
wsndg| | 2020-4-29 09:08 | 只看该作者
烧录过后的checksum是否正确呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

1

粉丝