打印
[STM8]

TIM1脉冲捕获只进一次中断

[复制链接]
3788|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xfjane|  楼主 | 2012-6-8 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xfjane 于 2012-6-11 11:11 编辑

用stm8s207c8的TIM1的CH1捕获脉冲,每次只捕获上升沿,根据相邻两次的差值计算脉冲频率。同时TIM1产生15ms的更新中断(用于判断脉冲周期是否大于15ms)。

tim1初始化程序如下:
    CLR  TIM1_PSCRH
   MOV  TIM1_PSCRL, #7                 ;8分频,2M
    BRES  TIM1_CCER1, #0
    MOV  TIM1_CCMR1, #$01               ;每个脉冲都捕获一次
   MOV  TIM1_CCER1, #$01               ;捕获发生在上升沿,捕获使能
   BSET  TIM1_IER, #1                  ;允许捕获中断
    BRES  TIM1_SR1, #1                  ;清捕获中断标志
   MOV  TIM1_ARRH, #$75
   MOV  TIM1_ARRL, #$2F                ;计数值=15mS*2M-1=29999
   BSET  TIM1_IER, #0                  ;允许更新中断
   BSET  TIM1_CR1, #2                  ;仅允许溢出更新
    BRES  TIM1_SR1, #0                  ;清更新中断标志

   BSET  TIM1_CR1, #0                  ;使能TIM1
  BSET  TIM1_EGR, #0                   ;产生更新事件,重新计数

另外,tim1的更新中断和捕获中断都清了标志。

如果使输入的脉冲频率固定(周期不大于15ms),捕获中断只能进入一次,之后总是进入更新中断。
但是,如果一开始脉冲周期大于15ms,然后慢慢减小,捕获中断就能正常进入,程序也能正常计算出频率。

补充一下,同样的程序,用STM8S207RB就很正常,但是用STM8S207C8就不行。
请帮忙看下问题出在哪儿?是不是芯片本身的问题?
沙发
xfjane|  楼主 | 2012-6-11 15:45 | 只看该作者
找到原因了,电路的问题。脉冲输入的地方有个滤波,去掉就好了。

使用特权

评论回复
板凳
caoyicheng626| | 2013-4-4 00:23 | 只看该作者
发现这里的帖子都 是自问自答啊   

使用特权

评论回复
地板
cjhk| | 2013-4-4 18:41 | 只看该作者
没有啦   只是没有看到而已  楼主   呵呵   

使用特权

评论回复
5
cjhk| | 2013-4-4 18:42 | 只看该作者
楼主   有问题你就问   在这个坛子里   我觉得   如果大家能够看到你的问题   都会出手帮忙的   呵呵   顶一个   呵呵

使用特权

评论回复
6
cjhk| | 2013-4-4 18:53 | 只看该作者
多逛21ic   呵呵   一般都会有人帮忙的  呵呵  

使用特权

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

本版积分规则

6

主题

22

帖子

1

粉丝