zuoquan20 发表于 2010-12-27 11:29:50

关于CCP捕捉模块的程序,有问题,在线等,谢谢……

各位大侠。请帮忙看一下我的下面的程序,是关于pic16f873单片机ccp捕捉模块的,为什么我得到的结果不正确呢?
我想得到的“t”的值为每个脉冲的相隔时间,单位是ms,晶振是10M的,非常感谢,菜鸟在线等……谢谢……

zuoquan20 发表于 2010-12-27 11:31:39

也就是下面的截图,谢谢……

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_607367YW3U5J.png
(原文件名:TM截图未命名.png)

liansh 发表于 2010-12-27 14:00:10

具体是什么现象的问题?是不是你的被捕捉信号频率太低定时器已经溢出了?或者太高没法处理。

zuoquan20 发表于 2010-12-27 14:18:09

回复【2楼】liansh
-----------------------------------------------------------------------

t的值一直为0,应该不会,测试用的被捕捉的信号的周期为50ms,不会溢出的啊……

liansh 发表于 2010-12-27 14:54:12

10M下T1不分频溢出一次是26.214mS啊!
而且你的low是什么类型的,float还是INT,cp0z是一直为0吗?

zuoquan20 发表于 2010-12-27 15:51:16

回复【4楼】liansh
-----------------------------------------------------------------------

喔,我没有考虑到溢出的时间,如果用8分频应该可以吧。T1CON=0X30;
low和t都是float类型的……

liansh 发表于 2010-12-27 16:05:01

回复【5楼】zuoquan20
回复【4楼】liansh
-----------------------------------------------------------------------

喔,我没有考虑到溢出的时间,如果用8分频应该可以吧。t1con=0x30;
low和t都是float类型的……
-----------------------------------------------------------------------

反正在余量和测量精度间找个平衡点吧。
另外while(flag==1) 这样的写法会直接sleep的,因为程序第一遍执行到这里的时候可能信号捕捉都没发生。
截图里那个while(1)可以,但是要用flag判断,捕捉完成才执行,不然你那几句一直在循环,

zuoquan20 发表于 2010-12-27 17:03:45

回复【6楼】liansh
-----------------------------------------------------------------------

OK,问题解决了,谢谢各位啊……

bugplus 发表于 2013-8-29 11:31:57

不太理解捕捉口是怎么设置的?
难道TRISC2=1;就是捕捉口了?
那么如果有程序几个按键也设为输入口,岂不都成捕捉口了?

dazelong2018 发表于 2014-11-28 16:43:32

学习学习,正为DSPIC的捕捉测频问题困扰。
页: [1]
查看完整版本: 关于CCP捕捉模块的程序,有问题,在线等,谢谢……