郁闷死了,今天想用430的捕获功能调一个频率计,调了半天只能捕获1.8KHZ左右的外部脉冲.外部信号直接到捕获输入脚,用CCR0,时钟选择ALCK和SMCLK时记数值一样.
有哪位朋友指点一下,怎么会这样呢?
楼上的朋友,你能说的详细一点吗? 我也正想用430做外部频率计数的东西,原来用51直接可以用计数器和定时器做,但是430,我还没看明白怎么做,你能说一下你是怎么做的吗?
【讨论】捕获功能
有两种方法:
1.用捕获功能读出前后两个脉冲的间隔时钟个数N,f=1/(N/fclk);
2.在1S内记数捕获到的脉冲个数,此值即为频率f;
楼上的朋友,你说的第2种方法,是用捕获功能吗? 如果用捕获的话,我是这么理解的,来一个脉冲信号(上升沿触发),就会发生中断,同时会将TAR的值送到CCR0,怎么定时在1S那?是用两个16位定时吗? 你能说的明白一些吗? 我也是刚学430,书上讲的很少,期待与你交流!
我想做个频率计,我这样想不知道可不可以,就是用两个16位定时器,一个用来定时在1S,另一个设成计数模式,选择TACLK输入,在1S中断的时候来读TAR的数值,这个数值就应该是频率了,不知道可不可以这么做,假设可以的话,也比较占系统资源啊(要同时用两个定时器),我现在还没搞明白怎么才能少占资源还能满足计频率的设计,还请高手给与指点,期待!
如果用捕获功能(设成上升沿和下降沿触发)来测这个脉冲的脉宽,然后来推算1S多少个脉冲,这样做不可以的,如果一秒就来两个脉冲信号怎么办? 我所说的脉冲信号来自传感器,霍尔或电感或伟根或光电信号,郁闷中,尽请高手指点!
斑竹能给指点一下不啊? 这的论坛高手都哪里了呢? 指点下吧!
我明白怎么用捕获来计脉冲了,但是不知道对不对,可以用CCR1进行捕获,CCR0进行定时,这样就可以在一个定时器中来实现了,但是中断程序应该怎么写呢? 中断向量应该怎么写呢? 书中写到,“TAIV为相应TIMER-A中个中断的数据,&TAIV+PC,可以自动执行相应的中断处理程序,”这句话是什么意思? 主要是不知道中断处理程序怎么写?
郁闷啊!
呵呵,我今天已经搞定了,用了两种方法都实现了,一种是用基本定时器定时1S,用timer_A 来捕获脉冲,每中断记一次,效率比较低.还可以用基本定时器定时1S,外部频率接timer_A输入计数.