找回密码
 立即注册
楼主: 飞捷

关于STC8H 的PWM发脉冲 可变频率发送一定个数脉冲

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:441
  • 最近打卡:2025-05-03 08:12:12
已绑定手机

40

主题

371

回帖

847

积分

高级会员

积分
847
发表于 2023-2-17 09:39:47 | 显示全部楼层

你好,请问STC8H的PWM,我能不能当成定时器来使用,因为自带的5个定时器已经用完了,我想把自带的PWM当成普通的定时器来使用,如果能自装载或者与PCA定时器的效果一样更好,有没有例程 ?

点评

可以,每一组PWM可以做4个互不干扰的16位定时器,与PCA的应用类似。 PWM产生变频方波脉冲去控制电机是非常可靠的,不会出现少一个、多一个脉冲的问题,每次脉冲都中断,中断里处理脉冲数,前提是中断间隔不要太小了  详情 回复 发表于 2023-2-17 15:55
纸上得到终觉浅,绝知此事要躬行。
  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-2-17 13:58:21 | 显示全部楼层
飞*** 发表于 2022-12-31 11:36
不一样的,我要每一1ms 根据已发送的脉冲数来调整频率。整个5000发送的过程是不能停止的。  我后来有想过 ...

硬件控制方式也是可以每1毫秒调整频率的,不过如果要发送5000个脉冲的话就只能用软件方式来控制了,硬件的重复计数器最多只能到255。
软件中断控制方式请参考官网最新的STC8H实验箱例程包“51-高级PWM输出-周期可调-脉冲计数”里面的软件中断控制方式例程,在你现有的基础上使能ARR预装载与输出比较预装载功能。
主要修改以下两个寄存器的设置:
PWMA_CR1 |= 0x81;  //使能ARR预装载,开始计时
PWMA_CCMR1 = 0x68; //设置 PWM1 模式1 输出,使能输出比较预装载
  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-2-17 14:00:42 | 显示全部楼层
飞*** 发表于 2023-2-17 09:39
你好,请问STC8H的PWM,我能不能当成定时器来使用,因为自带的5个定时器已经用完了,我想把自带的PWM当成 ...

可以当定时器用,STC8H实验箱例程包里面“50-利用高级PWM中断做定时器”
1.png
  • 打卡等级:以坛为家II
  • 打卡总天数:441
  • 最近打卡:2025-05-03 08:12:12
已绑定手机

40

主题

371

回帖

847

积分

高级会员

积分
847
发表于 2023-2-17 15:54:01 | 显示全部楼层
乘风*** 发表于 2023-2-17 13:58
硬件控制方式也是可以每1毫秒调整频率的,不过如果要发送5000个脉冲的话就只能用软件方式来控制了,硬件 ...

我是用软件模式进入中断,记录脉冲个数,再通过普通定时器每1MS通过已发送脉冲个数来修改频率。在PWM中断里面判断总脉冲数达到5000个的时候,关闭输出。用这方式采集下来的的脉冲数每次都会多几个或者少几个脉冲,怪得很,用PCA就不会。
纸上得到终觉浅,绝知此事要躬行。
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-2-17 15:55:25 | 显示全部楼层
飞*** 发表于 2023-2-17 09:39
你好,请问STC8H的PWM,我能不能当成定时器来使用,因为自带的5个定时器已经用完了,我想把自带的PWM当成 ...

可以,每一组PWM可以做4个互不干扰的16位定时器,与PCA的应用类似。

PWM产生变频方波脉冲去控制电机是非常可靠的,不会出现少一个、多一个脉冲的问题,每次脉冲都中断,中断里处理脉冲数,前提是中断间隔不要太小了,一般建议50KHz以下(对应100KHz的中断率)。我做过好多类似的应用,定时器、PCA、PWM都可以达到相同的效果。
  • 打卡等级:以坛为家II
  • 打卡总天数:441
  • 最近打卡:2025-05-03 08:12:12
已绑定手机

40

主题

371

回帖

847

积分

高级会员

积分
847
发表于 2023-2-17 16:53:26 | 显示全部楼层
本帖最后由 飞捷 于 2023-2-17 16:55 编辑
梁*** 发表于 2023-2-17 15:55
可以,每一组PWM可以做4个互不干扰的16位定时器,与PCA的应用类似。

PWM产生变频方波脉冲去控制电机是非 ...

目前用PCA的定时器来做,能实现,通过中断取反电平。效果不错。但是用STC8H的PWM来做,频率也是是50KHZ以内,就会增加或者减少几个。同样的采集工具(用PLC高速输入监控接收脉冲量)。同样的硬件,只是换了STC8H(用PWM)和STC8G(PCA定时器)

点评

应该用脉冲计数器来测量。  详情 回复 发表于 2023-2-17 17:26
纸上得到终觉浅,绝知此事要躬行。
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-2-17 17:26:55 | 显示全部楼层
本帖最后由 梁工 于 2023-2-17 17:28 编辑
飞*** 发表于 2023-2-17 16:53
目前用PCA的定时器来做,能实现,通过中断取反电平。效果不错。但是用STC8H的PWM来做,频率也是是50KHZ以 ...

应该用脉冲计数器来测量。一般我会测试100万、1000万个脉冲,1个不多,一个不少,才认为测试通过。
  • 打卡等级:以坛为家II
  • 打卡总天数:441
  • 最近打卡:2025-05-03 08:12:12
已绑定手机

40

主题

371

回帖

847

积分

高级会员

积分
847
发表于 2023-2-18 00:04:40 | 显示全部楼层
梁*** 发表于 2023-2-17 17:26
应该用脉冲计数器来测量。一般我会测试100万、1000万个脉冲,1个不多,一个不少,才认为测试通过。 ...

可以试一下,每一MS秒增加频率,直到达到50KHZ,,就是过程的频率是变化的,然后计算总数对不对。

点评

电机控制加减速必须压的操作,大量使用,没有问题。 我基本可以猜测出来你的程序会出现问题,估计你是1ms处理就立刻更新频率,此时会有临界问题。 我是准备好更新的频率数据,设置标志,PWM中断里更新,保证每个周期  详情 回复 发表于 2023-2-18 10:49
纸上得到终觉浅,绝知此事要躬行。
  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-2-18 10:49:25 | 显示全部楼层
飞*** 发表于 2023-2-18 00:04
可以试一下,每一MS秒增加频率,直到达到50KHZ,,就是过程的频率是变化的,然后计算总数对不对。 ...

电机控制加减速必须压的操作,大量使用,没有问题。
我基本可以猜测出来你的程序会出现问题,估计你是1ms处理就立刻更新频率,此时会有临界问题。
我是准备好更新的频率数据,设置标志,PWM中断里更新,保证每个周期都是完整的。
  • 打卡等级:以坛为家II
  • 打卡总天数:441
  • 最近打卡:2025-05-03 08:12:12
已绑定手机

40

主题

371

回帖

847

积分

高级会员

积分
847
发表于 2023-2-20 08:10:23 | 显示全部楼层
梁*** 发表于 2023-2-18 10:49
电机控制加减速必须压的操作,大量使用,没有问题。
我基本可以猜测出来你的程序会出现问题,估计你是1ms ...

我是属于1MS立即更新频率,我找个时间按你的思路试试。
纸上得到终觉浅,绝知此事要躬行。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 15:05 , Processed in 0.148591 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表