找回密码
 立即注册
查看: 663|回复: 18

小白求问,如何把接收的方波,变成我需要时长的方波

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-04-17 20:26:49

9

主题

17

回帖

217

积分

中级会员

积分
217
发表于 2024-11-1 21:46:08 | 显示全部楼层 |阅读模式

接收的方波我只能接收不能修改的
接收的方波一个高电平时间时50us, 35us, 17us, 18us ,时间不固定,个数也不固定。

我想把它变成固定45us一个高电平。
主要就是时间和个数不固定,所以没有好的方案

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:460
  • 最近打卡:2025-05-03 07:38:35
已绑定手机
已实名认证

110

主题

2224

回帖

5470

积分

版主

积分
5470
发表于 2024-11-2 15:56:45 | 显示全部楼层
zhou*** 发表于 2024-11-2 15:45
就是输入一个脉冲,就输出一个45μs脉冲。
输入的脉冲它的时间不是固定的(是我读取其他单片机得来的), ...

如果这两个之间没有严格的时序关系的话,倒是可以搞。
通过捕获输入脉冲的上升沿,增加内部程序的脉冲计数。
同时,内部判断计数不为零就发送一个45us的脉冲,可以用定时器产生这个。发送后脉冲数量减一,然后再进行判断,直到数量为0就不发了。
如此循环往复

点评

非常感谢。一下子想通了  发表于 2024-11-2 16:06
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-11-1 23:17:56 | 显示全部楼层
什么是固定的?你希望输入输出有什么关系?表达不清楚。
是每输入一个脉冲,就输出一个45μs脉冲
还是输入的方波周期和占空比不固定,需要计算占空比,然后再输出固定频率的PWM
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:200
  • 最近打卡:2025-05-03 00:16:59
已绑定手机

24

主题

345

回帖

1637

积分

金牌会员

积分
1637
发表于 2024-11-2 00:28:31 | 显示全部楼层
没明白是要整个什么功能
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-11-2 01:33:56 | 显示全部楼层
你要的这个功能,可以理解为单稳触发器模式的脉冲宽度整型,用555定时器之类的硬件芯片非常容易实现,不过非要用单片机的话,请看下面的方法:
1,配置外部中断为边沿中断,开启上升沿和下降沿,
2,在外部中断中识别到上升沿时,控制输出引脚电平为高,启动一个45us的定时器,打开定时器中断,  这里45us可能需要根据实测微调
3,在定时器中断中关闭定时器,并且控制输出引脚为低
注意,需要确保方波上升沿的间隔要大于45us,否则输出会粘连成一个宽脉冲,可以通过阻塞外部中断的方式解决粘连,方法是在启动定时器的同时,关闭外部中断,并且在定时器中断中启动外部中断
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-11-2 01:51:06 | 显示全部楼层
例如,两个间隔20us的20us窄脉冲直接展宽到45us,
如果不阻塞第二个窄脉冲,会出现输出脉冲宽度覆盖叠加,最终得到一个85us的加宽脉冲,
如果阻塞掉第二个窄脉冲,最终得到一个45us的标准脉冲,

因此,这个脉冲展宽的宽度45us,一定要小于脉冲上升沿之间的最小间隔,如果输入信号出现的时机是随机的,只要上升沿间隔小于45us,必然会粘连。
是否采用阻塞机制,看实际需求吧,这是输入信号的问题,不是方案问题。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:154
  • 最近打卡:2025-04-30 08:40:57
已绑定手机

15

主题

630

回帖

730

积分

高级会员

积分
730
发表于 2024-11-2 08:13:57 来自手机 | 显示全部楼层
看看👀
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-04-17 20:26:49

9

主题

17

回帖

217

积分

中级会员

积分
217
发表于 2024-11-2 15:37:33 | 显示全部楼层
Debu*** 发表于 2024-11-1 23:17
什么是固定的?你希望输入输出有什么关系?表达不清楚。
是每输入一个脉冲,就输出一个45μs脉冲
还是输入 ...

输入一个脉冲,就输出一个45μs脉冲

点评

外部中断就行  详情 回复 发表于 2024-11-2 16:03
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2025-04-17 20:26:49

9

主题

17

回帖

217

积分

中级会员

积分
217
发表于 2024-11-2 15:45:28 | 显示全部楼层
本帖最后由 zhou220 于 2024-11-2 15:49 编辑
晓*** 发表于 2024-11-2 01:51
例如,两个间隔20us的20us窄脉冲直接展宽到45us,
如果不阻塞第二个窄脉冲,会出现输出脉冲宽度覆盖叠加, ...

就是输入一个脉冲,就输出一个45μs脉冲。
输入的脉冲它的时间不是固定的(是我读取其他单片机得来的),可能80us, 也可能17us,而我只输出45us的。
输入几个我就输出几个45us的脉冲

点评

如果这两个之间没有严格的时序关系的话,倒是可以搞。 通过捕获输入脉冲的上升沿,增加内部程序的脉冲计数。 同时,内部判断计数不为零就发送一个45us的脉冲,可以用定时器产生这个。发送后脉冲数量减一,然后再进行  详情 回复 发表于 2024-11-2 15:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 2024-11-2 16:03:40 | 显示全部楼层
zhou*** 发表于 2024-11-2 15:37
输入一个脉冲,就输出一个45μs脉冲

外部中断就行
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-3 15:20 , Processed in 0.136286 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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