lzhpsky
工控小菜鸟
级别: 论坛先锋
精华主题: 0
发帖数量: 1045 个
工控威望: 1151 点
下载积分: 2796 分
在线时间: 767(小时)
注册时间: 2009-08-02
最后登录: 2024-12-21
查看lzhpsky的 主题 / 回贴
楼主  发表于: 2011-05-27 13:59



1.我用HSC0的10模式,来计数AB相脉冲,我用状态表监控HSC0的数值不断变化,可是SMD38当前计数值怎么没变化?

2.当前的计数值在哪个寄存器里?怎么取出来?

3.设定值是6000,计数值到6000后产生中断,这个没问题,但是编码器转动时,HSC0还会计数。怎么写程序就可以实现计数到6000后,在中断里HSC0里面的当前值马上清零,旋转编码器旋转时,还不会计数。等再启动时才开始计数,就是说到6000后怎么清掉HSC0的值。
lzhpsky
工控小菜鸟
级别: 论坛先锋
精华主题: 0
发帖数量: 1045 个
工控威望: 1151 点
下载积分: 2796 分
在线时间: 767(小时)
注册时间: 2009-08-02
最后登录: 2024-12-21
查看lzhpsky的 主题 / 回贴
1楼  发表于: 2011-05-27 16:04
lzhpsky
工控小菜鸟
级别: 论坛先锋
精华主题: 0
发帖数量: 1045 个
工控威望: 1151 点
下载积分: 2796 分
在线时间: 767(小时)
注册时间: 2009-08-02
最后登录: 2024-12-21
查看lzhpsky的 主题 / 回贴
2楼  发表于: 2011-05-27 18:44
大家没知道的吗?
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 158993 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-22
查看sjm213的 主题 / 回贴
3楼  发表于: 2011-05-27 19:45
引用
1.我用HSC0的10模式,来计数AB相脉冲,我用状态表监控HSC0的数值不断变化,可是SMD38当前计数值怎么没变化?

HSC0中记录的才是你理解的“当前计数值”。SMD38中的当前值是指执行一定的指令时将HC0的当前值改为SMD38中的值。
引用
2.当前的计数值在哪个寄存器里?怎么取出来?

当前的计数值就在HC0中,直接MOVE到某个寄存器中就可使用,或者直接使用HC0;
引用
3.设定值是6000,计数值到6000后产生中断,这个没问题,但是编码器转动时,HSC0还会计数。怎么写程序就可以实现计数到6000后,在中断里HSC0里面的当前值马上清零,旋转编码器旋转时,还不会计数。等再启动时才开始计数,就是说到6000后怎么清掉HSC0的值。


本帖最近评分记录:
  • 下载积分:+2(wsir123) 非常详细!
  • 下载积分:+2(guochunyi) 热心助人
  • 下载积分:+1(wslok) 感谢分享
    回忆依然最美
    一不小心混进社会, 浪子回头已经白费... ...
    级别: 工控侠客
    精华主题: 0
    发帖数量: 1240 个
    工控威望: 2873 点
    下载积分: 21638 分
    在线时间: 1322(小时)
    注册时间: 2008-06-16
    最后登录: 2024-11-14
    查看回忆依然最美的 主题 / 回贴
    4楼  发表于: 2011-05-27 19:46
    1.不能直接监视SMD38的值;
    2.想要读取HSC0的当前值可以在程序里直接双字寻址HC0,也可以用MOV_DW指令传送到一个双字寄存器地址;
    3.可能是在中端程序里设置的HSC0参数不正确,或者设置玩参数并将当前值清零后没有再次调用HSC指令启用高速计数器,请楼主查查看!
    本帖最近评分记录:
  • 下载积分:+1(guochunyi) 热心助人
    liuhuaxing
    LIUHUAXING
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 965 个
    工控威望: 1172 点
    下载积分: 3446 分
    在线时间: 624(小时)
    注册时间: 2011-03-26
    最后登录: 2024-06-26
    查看liuhuaxing的 主题 / 回贴
    5楼  发表于: 2011-05-27 20:43
    今天是个特别的日子,版主、高手大聚会,要是天天这样,我该请假来这儿向老师们学习学习。
    woaqqdfq
    级别: 略有小成
    精华主题: 0
    发帖数量: 54 个
    工控威望: 208 点
    下载积分: 490 分
    在线时间: 18(小时)
    注册时间: 2009-09-08
    最后登录: 2016-04-15
    查看woaqqdfq的 主题 / 回贴
    6楼  发表于: 2011-05-27 21:07
    1.不能直接监视SMD38的值;
    2.想要读取HSC0的当前值可以在程序里直接双字寻址HC0,也可以用MOV_DW指令传送到一个双字寄存器地址;
    3.可能是在中端程序里设置的HSC0参数不正确,或者设置玩参数并将当前值清零后没有再次调用HSC指令启用高速计数器,请楼主查查看!
    lzhpsky
    工控小菜鸟
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 1045 个
    工控威望: 1151 点
    下载积分: 2796 分
    在线时间: 767(小时)
    注册时间: 2009-08-02
    最后登录: 2024-12-21
    查看lzhpsky的 主题 / 回贴
    7楼  发表于: 2011-05-28 08:50
    谢谢大家的解答。
    lzhpsky
    工控小菜鸟
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 1045 个
    工控威望: 1151 点
    下载积分: 2796 分
    在线时间: 767(小时)
    注册时间: 2009-08-02
    最后登录: 2024-12-21
    查看lzhpsky的 主题 / 回贴
    8楼  发表于: 2011-05-28 20:20



    问题已解决,中断程序这样写,可以马上清除当前计数值,关闭HSC1,即使旋转编码器动作也不计数。OK。谢谢大家