打印

CCP1捕捉测频率问题

[复制链接]
1489|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlx423|  楼主 | 2019-4-15 17:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wlx423 于 2019-4-15 18:56 编辑

请高手看看,我这个程序中断可以进入,就是测的频率是乱的。单片机PICF18F65J90
==============================================================================//
//                                            CCP1中断处理函数
//                     CCP1扑捉工作于4M晶振
//===================================================================================//                                                     
void interrupt low_priority  CCP1int(void)  
{ if(!PIR3bits.CCP1IF)
     {PIE3bits.CCP1IE=1;
      GIEL=1;
          return;
         }
  if(CCP1gdflag)
     {CCP1CON=0x04;                                        //下降沿捕捉
      TMR1ON=0;                                          //定时器处理
      TMR1IF=0;
      TMR1H=0x00;
      TMR1L=0x00;                                                             //定时器延时
      TMR1ON=1;                                          //重开定时器     
      CCP1gdflag=0;
     
     }
  else
     {dy_cj.adre[0]=CCPR1L;
      dy_cj.adre[1]=CCPR1H;
      CCP1intflag=1;
  
     }
  PIR3bits.CCP1IF=0;            
  PIE3bits.CCP1IE=1;
}
void main(void)
{ CCP1CON=0x05;                                                               //上升沿捕捉
      
      CCP1gdflag=1;                                                             //上升沿标识位
      CCP1intflag=0;                                                            //下降沿中断标识位,置1表示产生了中断
      PIE3bits.CCP1IE=1;
      GIEL=1;GIEH=1;   
      
      loop=1000;
      while(--loop>0)
          {delayms(1);asm("clrwdt");
           if(CCP1intflag) break;
          }                                                                            //等待一次测量结束
      PIE3bits.CCP1IE=0;
      GIEL=0;GIEH=0;
      TMR1ON=0;                                                                 //定时器处理
      TMR1IF=0;
      TMR1H=0x00;
      TMR1L=0x00;
}   
我用一个单片机+PNP三极管,产生100HZ的频率。频率用示波器测是正常的方波。但是我用这个程序测出来,是随机跳变的。我就直接显示CCP1R1L看数值,发现,CCP1R1L的数据不停的变,而且随机。                    

使用特权

评论回复
沙发
小灵通2018| | 2019-4-15 17:53 | 只看该作者
测的频率怎么乱,

使用特权

评论回复
板凳
小灵通2018| | 2019-4-15 17:53 | 只看该作者
被测信号频率稳定吗

使用特权

评论回复
地板
小灵通2018| | 2019-4-15 17:53 | 只看该作者
信号发生器做的信号源测试的?

使用特权

评论回复
5
wlx423|  楼主 | 2019-4-15 18:29 | 只看该作者
我用一个单片机+PNP三极管,产生100HZ的频率。频率用示波器测是正常的方波。但是我用这个程序测出来,是随机跳变的。我就直接显示CCP1R1L看数值,发现,CCP1R1L的数据不停的变,而且随机。

使用特权

评论回复
6
wlx423|  楼主 | 2019-4-15 18:31 | 只看该作者
我测试了下程序,捕捉上升沿中断,和捕捉下降沿中断,都进的去。不知道为什么。
各位高手,给分析下程序

使用特权

评论回复
7
operating| | 2019-4-15 21:08 | 只看该作者
定时器有捕捉模式,不用自己做这个功能吧

使用特权

评论回复
8
wlx423|  楼主 | 2019-4-16 08:32 | 只看该作者
请高手帮忙看看程序。

使用特权

评论回复
9
CoolSilicon| | 2019-4-16 08:51 | 只看该作者
你TMR1的初始化在哪里呢?
选择什么时钟源?分频比是多少?
简单的说, 就是你需要测量的时间的宽度,要小于TMR1的计时溢出的宽度-----通过调整上面的时钟源和分频比来实现.
是不是这里的问题?你再研究研究?

使用特权

评论回复
10
最底层的BUG| | 2019-4-16 11:55 | 只看该作者
应该是配置不对

使用特权

评论回复
11
wlx423|  楼主 | 2019-4-16 13:49 | 只看该作者
谢谢各位,程序没有问题。主要是T3CON=0;要加上

使用特权

评论回复
12
CoolSilicon| | 2019-4-17 08:42 | 只看该作者
wlx423 发表于 2019-4-16 13:49
谢谢各位,程序没有问题。主要是T3CON=0;要加上

CCP计时 是对应一个TMR的, 看样子你这里是用到的TMR3作为时基咯....
在你贴出来的代码中可是没有TMR3相关的操作哦.

使用特权

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

本版积分规则

1

主题

5

帖子

1

粉丝