[STM8] stm8 tim1 cc3 配置为俘获输入 cc4比较输出

[复制链接]
 楼主| qqpqqp 发表于 2010-8-10 16:33 | 显示全部楼层 |阅读模式
TI, STM8, ce, ps, PWM
各位求助:

  我用stm8的time1,其中CC3配置为俘获输入(遥控码接受),CC4配置为PWM输出,结果只要写入ARRH,ARRL时,就只能输出PWM,遥控码不能接收, 好像时基改变了,俘获值不对,无法识别遥控码:
程序如下:

//TIM1_CC1用做REMOTE input capture
TIM1_CCER2&=0xfe;    //捕获关
TIM1_CCMR3=0x01;     //输入捕获
    TIM1_PSCRH=0x00;     //分频,决定计数单位 fCK_PSC/( PSCR[15:0]+1)=8M/16=2us
    TIM1_PSCRL=0x0f;
    //TIM1_CNTRH = 0;   
   // TIM1_CNTRL = 0;
    TIM1_CCER2|=0x02;      ///下降沿
    TIM1_CCER2|=0x01;  ///使能捕获
    TIM1_IER|=0x08;      //允许中断
    //TIM1_CR1_CEN=1;         //使能time1
   
TIM1_CCMR4=0x60;  //PWM MODE1 输出
  TIM1_ARRH=0x00;   
TIM1_ARRL=0x28;         //12.5k=80us=2usx40
TIM1_CCR4H=0x00;
TIM1_CCR4L=0x14;        //duty cycle=CCR/ARRx100
TIM1_CCER2|=0x10;        //输出使能
TIM1_BKR|=0x80;
  TIM1_CR1_CEN=1;
请帮忙
香水城 发表于 2010-8-10 21:19 | 显示全部楼层
是的,不能这么用;除非你知道输入捕获和PWM模式的原理。
pkat 发表于 2010-8-11 08:48 | 显示全部楼层
不提倡这么用,很容易出问题的
 楼主| qqpqqp 发表于 2010-8-11 08:55 | 显示全部楼层
规格书明确说明time1 的四个通道可以单独配置为输入,PWM输出等功能,理论上是可以的啊
秋天落叶 发表于 2010-8-11 09:07 | 显示全部楼层
这么用可以,但是你得先弄清输入捕获和PWM模式的原理
 楼主| qqpqqp 发表于 2010-8-11 09:21 | 显示全部楼层
非常感谢楼上两位的回复, 理论上这应该是可以,否则tim1有四个通道没有意义,硬件已定,只能用tim3作定时器,专门为cc4口服务输出IR遥控码了,郁闷。。。。。。。。
香水城 发表于 2010-8-11 09:55 | 显示全部楼层
非常感谢楼上两位的回复, 理论上这应该是可以,否则tim1有四个通道没有意义,硬件已定,只能用tim3作定时器,专门为cc4口服务输出IR遥控码了,郁闷。。。。。。。。 ...
qqpqqp 发表于 2010-8-11 09:21


没错,理论上确实是可以,所以我说你要知道输入捕获和PWM模式的原理。

简单地说,当你只做捕获输入时,计数器是从0x0000计数到0xFFFF,所以你的捕获值的范围是0x0000~0xFFFF。

但当你使用PWM输出时,配置了ARRH和ARRL,此时计数器的计数是从0x0000计数到ARRH和ARRL对应的数值,然后再从0x0000开始,如果捕获值超出了0x0000~ARRH:ARRL的范围,当然会出错。

解决的办法是,在每次计数器溢出并重复计数时,有一个溢出中断,你要在溢出中断中做计数,然后在捕获成功时把溢出次数补偿到捕获结果中。
香水城 发表于 2010-8-11 11:55 | 显示全部楼层
嘿嘿,理论上确实是可以,但你要把理论搞懂才可以实现,一知半解当然就不可以,:lol
侠行江湖 发表于 2016-2-15 21:08 | 显示全部楼层
香水城 发表于 2010-8-11 09:55
没错,理论上确实是可以,所以我说你要知道输入捕获和PWM模式的原理。

简单地说,当你只做捕获输入时, ...

香主,可以类似溢出计数类似例子?我也遇到相关类似问题,TIM1 CH1做输入捕捉,TIM2做PWM输出,高频PWM可以准确捕捉频率,低频不可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

5

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部