作者:崔显莉京_716 | 来源:互联网 | 2023-08-20 22:47
编码器测速例子
各位好,我现在要用
CPU226
通过编码器测电机转速,看了许多手册编的程序总是测不出来,
编码器用的是
A/B
两相的,那位能给发个简单的例子啊,
转自网上的回答,
我也正在学习这个哟,
刚找到的地方定义高速计数器无外乎下面几个步
骤:
1
、建一个初始化程序,用
SM0.1
控制;
2
、在初始化程序中,初始化高速计数器
2.1
设置控制寄存器(
HSC0
为
SMB37
)
,
不同的计数器对应不同的
DI
点,
HSC0
为
I0.0,HSC3
为
I0.1,HSC4
为
I0.2,HSC5
为
I0.3
(
222
不支持
HSC1
和
HSC2
)
2.2
执行
HDEF
指令,你可以用模式
0
2.3
置计数器初始值(
HSC0
为
SMD38
)
,如果从零启动就置零
2.4
置预置值
(
HSC0
为
SMD42
)
,
计数器计到这个值可以产生一个中断,
一般利用这个中断调
用相应的中断程序把当前值(
SMD38
)复零,否则计数器到头就不再计数了,当然你也可以置
一个大点的值,在其他程序中清除当前值(
SMD38
)
,确保永远到不了头就可以了。
2.5
指定中断程序(
ATCH
)
,中断事件是
12
,程序号看你程序了
2.6
打开中断(
ENI
)
,这条指令没有的话,
2.5
是不起作用的
2.7
启动高速计数器(
HSC
)
,按前面的初始化,你就要启动
HSC0
,即
N
为
0
3
、程序中读取高速计数器的值,对于
HSC0
,
HC0
单元中的内容就是当前的计数值,这个单元
只读不能写,你可以通过修改
SMD38
的内容改变当前的计数值。