请教:脉冲过窄,IO方式无法正确读取的处理方法
使用HCTL-2016对正交脉冲进行计数,在计数器溢出的时候,HCTL2016会给出溢出信号和U/D(上/下溢出)信号。溢出信号已经接入外部中断,想要在外部中断时判断U/D的状态,确定溢出方向。实际使用时如果是上溢出,超过65535变为0时,脉冲极短,无法使用IO方式正确读取,请问如何处理。
谢谢! 你已经接入外部中断,那就在中断程序中处理啊,怎么会存在用IO方式正确读取的问题?能否表述的更详细或上代码? 你是说,溢出脉冲太宰? 使用NE555做个脉宽扩展 施密特触发器? >>脉冲极短,无法使用IO方式正确读取,请问如何处理。
不可以,溢出脉冲太短。
但由於 U/D 讯号在溢出脉冲出现前已经有效,所以能够使用4013锁存。把U/D 讯号接至4013的D输入,CNTcas 接至 4013 的 CLK及MCU中断,中断内使用IO方式读取4013的Q输出就可以了。 可以测量周期呀 上升或下降沿触发中断,在中断里读口线电平. 领袖 是要锁存的 谢谢各位的回复。6楼应该用过这个芯片吧?确实您所说的,用4013作锁存是个好方法。
也给各位说下,HCTL2016是个对双脉冲计数的芯片,内部为16位计数器,数据可以通过8bit总线分两次读取。
在计数到65535再加一个脉冲或者0再少一个脉冲的时候,发出溢出信号,此时可以通过判断U/D脚的电平确定是上溢出还是下溢出。
我也是使用溢出信号作为中断输入使用,在中断程序中读取U/D的电平,但是问题在于,U/D信号的高电平持续时间过短,造成永远读取到低电平。
6楼的方法无疑是正确的。
实际上我现在是在中断程序中读取HCTL2016的数值,小于500(可按照要求设置)为上溢出,大于65000为下溢出,在低速下没问题。 snowy 发表于 2014-9-8 18:32
施密特触发器?
6楼把您的说仔细了,谢谢 ground 发表于 2014-9-8 19:08
上升或下降沿触发中断,在中断里读口线电平.
高电平持续实现太短,在中断程序里面读都来不及,6楼的方法不错 marshallemon 发表于 2014-9-8 18:06
使用NE555做个脉宽扩展
有没有原理图?我想把舵机用的信号扩展成调速pwm,谢谢 请使用单稳态触发器!!! yigang 发表于 2014-9-9 08:53
请使用单稳态触发器!!!
图里面的R C值怎么确定 本帖最后由 yigang 于 2014-9-9 09:58 编辑
TAO=RC;你希望的 溢出脉冲宽度时间。。。
主要是拖宽你的溢出脉冲后沿。。。 溢出脉冲出现後,U/D 讯号便立刻改变,所以任何拖宽溢出脉冲的建议,都没作用。 huangxiaolpbany 发表于 2014-9-8 20:52
高电平持续实现太短,在中断程序里面读都来不及,6楼的方法不错
看看74HC123的资料就知道了, 要不就要换一个快一些的MCU 本帖最后由 yigang 于 2014-9-9 12:32 编辑
试试这个方法,INT1,INT2分别进两个中断源,不用判断了。。。
后级RS触发器可以不要。。。 yigang 发表于 2014-9-9 12:30
试试这个方法,INT1,INT2分别进两个中断源,不用判断了。。。
后级RS触发器可以不要。。。 ...
谢谢,非常感谢,这样上溢出和下溢出进不同的中断了。
真是很方便的做法。 alias 发表于 2014-9-8 18:58
>>脉冲极短,无法使用IO方式正确读取,请问如何处理。
不可以,溢出脉冲太短。
您好!
问下HCTL2020会不会出现丢脉冲的问题?也就是说比如编码器出0脉冲的时候,HCTL2020计数1000,多次旋转编码器,出现上下溢出,最后上下溢出相等的时候,编码器也到0脉冲,但是计数值却不是1000了?
谢谢! 我不能回答你,我以上给你的建议都只是看了元件资料文档後作出的,我从未使用这芯片。 timer mark
页:
[1]