请教在stc中如何做到信号的精确延时?
这几天用了下stc觉得不错。就想stc能否做一点特殊的信号处理,比如下面这个图:
我希望信号精确的延时2个节拍,用stc自带的比较器可以实现这个需要,但是比较器被我用掉了,还其他的方法可以实现吗? 中断定时器随便搞啊 饭桶 发表于 2020-9-25 11:08
中断定时器随便搞啊
比如程序中关一下中断(临界区),或者多个中断同时发生的时候,这个时候响应中断的时间其实很难保证,没法实现我要的那个功能 加个CPLD? 循环加状态机 woshigeshuai 发表于 2020-9-25 11:22
加个CPLD?
这个成本也太高了吧 wqsjob 发表于 2020-9-25 11:28
循环加状态机
如果单片机只做这一件事情,是可以的,但是我还要做其他事情啊 多搞几个74非门串联 youkebing 发表于 2020-9-25 11:34
如果单片机只做这一件事情,是可以的,但是我还要做其他事情啊
呵呵,不是有break吗?
节拍是多少?1us,1ms?1ns? autolog 发表于 2020-9-25 11:37
多搞几个74非门串联
加硬件就不考虑了 wqsjob 发表于 2020-9-25 11:42
呵呵,不是有break吗?
节拍是多少?1us,1ms?1ns?
算100ns吧 那你单片机真的会忙不过来 youkebing 发表于 2020-9-25 11:57
算100ns吧
要实时检测?还是偶尔用一下?也就是信号发生的时间是受控的还是不受控的?
100ns基本上是STC的一个周期了,实际上STC有不少指令并不是一个周期能完成的。如果实时检测并按照你图的要求延时,不管信号频率多低,你是根本没办法做其他事情的。比较器如果能实现,不如就用比较器靠谱点。
或者可以把STC的频率做到很高,用外部中断边沿触发,汇编写代码,或许可以实现。如果频率低,进入中断的时间,可能会超过2个节拍了。
如果信号是受控的,比如说我开了灯,然后检测光电开关是不是有信号,关了灯,检测光电开关是不是没信号了,这种应用,随便写写就行了。
ps:楼主说比较器能实现?是用比较器中断?如果是,那也是不能实现的。响应中断就已经不满足你这个延时的要求了。
2个节拍,是指两个系统时钟节拍是吧。那软件不用考虑了,基本上无法实现,你查下STC的IO指令,输入、输出就不止2T了,进出中断都好多T了,而且你不考虑硬件方案,确定不是开玩笑? wqsjob 发表于 2020-9-25 12:15
要实时检测?还是偶尔用一下?也就是信号发生的时间是受控的还是不受控的?
100ns基本上是STC的一个周期 ...
这是比较器的图,你看红框里,理论上应该可以达到我的要求
takashiki 发表于 2020-9-25 12:18
2个节拍,是指两个系统时钟节拍是吧。那软件不用考虑了,基本上无法实现,你查下STC的IO指令,输入、输出就 ...
你看我15楼的图 autolog 发表于 2020-9-25 11:37
多搞几个74非门串联
非门串联这个延迟不确定 youkebing 发表于 2020-9-25 12:42
这是比较器的图,你看红框里,理论上应该可以达到我的要求
哪款型号 youkebing 发表于 2020-9-25 11:57
算100ns吧
100ns就不要指望用软件实现了 chenchaoting 发表于 2020-9-25 12:58
哪款型号
我用的是stc15w404as modbus 发表于 2020-9-25 13:05
100ns就不要指望用软件实现了
软件应该是没法处理 看图标是玩XMOS的,这种精确的百ns操作还是放过MCU吧{:lol:} cloudboy 发表于 2020-9-25 15:07
看图标是玩XMOS的,这种精确的百ns操作还是放过MCU吧
同意..... 用STC8的中断应该可以,进中断3个周期,中断里把OUT取反1个周期,总共需要4个时钟周期,肯定要用汇编了,中断入口里直接放OUT取反指令 我以前用STC8做过一个可重触发的单稳态触发器就是这样搞的,要求输入到输出的延时越短越好 nop 哈哈哈哈 youkebing 发表于 2020-9-25 12:42
这是比较器的图,你看红框里,理论上应该可以达到我的要求
前边还有个100ns的滤波呢。 modbus 发表于 2020-9-25 17:38
用STC8的中断应该可以,进中断3个周期,中断里把OUT取反1个周期,总共需要4个时钟周期,肯定要用汇编了,中 ...
这样不行,因为还有其它中断 wqsjob 发表于 2020-9-25 18:13
前边还有个100ns的滤波呢。
那个可以关闭的 youkebing 发表于 2020-9-25 18:26
这样不行,因为还有其它中断
把这个中断设置为最高优先级,如果其他中断也需要最高优先级,那你真是难为这单片机了 多个定时器可以并联可以串联,可以同步触发……总有一种组合可以实现你的梦想:) modbus 发表于 2020-9-25 18:52
把这个中断设置为最高优先级,如果其他中断也需要最高优先级,那你真是难为这单片机了 ...
我的倾向还是单片机里的硬件模块来实现 虽然硬件不足软件补,但感觉这种需求软件是没得补,节拍太短了软件又要做其他事根本处理不过来 使用定时器或PCA,就可以实现精确定时,你的晶振有多准,定时就有多准。比如我用一个温补有源晶振,额定0.1ppm,标定后1年误差在0.5ppm,以此频率做MCU的主时钟,通过PCA输出精确的秒脉冲做门控信号控制定时器对外计数,则就是频率计,其精度就是晶振的精度+-1字。如果用这个晶振做电子钟,则年误差不会超过16秒。 youkebing 发表于 2020-9-25 11:34
如果单片机只做这一件事情,是可以的,但是我还要做其他事情啊
中断优先级开得最高 小李非刀 发表于 2020-9-27 16:37
使用定时器或PCA,就可以实现精确定时,你的晶振有多准,定时就有多准。比如我用一个温补有源晶振,额定0.1 ...
我不是定时,我希望把信号延时
页:
[1]