打印

我上次发的那个“C4定时炸*”里有用C写的例子,可以参考

[复制链接]
楼主: lizengmao
手机看帖
扫描二维码
随时随地手机跟帖
61
:victory:

正好用到,学习了。

使用特权

评论回复
62
noahwj| | 2010-12-28 17:02 | 只看该作者
完全按顺序检测速度一快肯定出问题,没那么精确

使用特权

评论回复
63
weforgive| | 2011-12-2 14:31 | 只看该作者
我记得好像有带编码器接口的单片机

使用特权

评论回复
64
dengm| | 2011-12-2 16:52 | 只看该作者
我有一个中断方法,  A 接p3.2, B接P3.7, P3.2 电平方式中断, 并门控Timer0(mode 2)中断, 保证最快!

       A      B
       0      X
                     ; timer0中断:
                     ;      记下 x = p3.7      
       1      X
;-------------------------
       1      y
                    ;  int0中断: y=p3.7
                    ;  如果 x=1, y=0,  cnt = cnt+1
                    ;  如果 x=0, y=1,  cnt = cnt-1
                    ;  如果 x= y , cnt = cnt
       0      y

使用特权

评论回复
65
SeaSun| | 2011-12-3 09:36 | 只看该作者
越到后面发现越多高手... 呵呵

使用特权

评论回复
66
受不了了| | 2011-12-3 11:27 | 只看该作者
还好,我遇到的都不需要反转,没消抖,否则还真不知道怎么整
做过一个需要读两个编码的,需要读它们的AB相上升下降还有零位,还需要发同样频率的脉冲,合起来相当于近两百KHz,单片机忙得半死
不知道别人伺服驱动器里怎么读编码器的,增量式编码器那么快的速度也能判断当前位置

使用特权

评论回复
67
韦斯克拉| | 2013-10-29 17:15 | 只看该作者
记下,学习学习

使用特权

评论回复
68
trice| | 2014-8-12 16:17 | 只看该作者
本帖最后由 trice 于 2014-8-12 16:27 编辑

我现在正在做一个滑轮驱动,想请教一下前辈几个问题可以吗?
我先简单介绍一下我目前遇到的问题,我采用的MCU是TI的MSP430FR5738,现在想实现一个滑轮驱动(需要实现低功耗,也就是滑轮没有动作时,要休眠),我采用了两个引脚都是中断的办法,可是设断点观察的时候,中断标志位显示两个引脚同时发生了中断(滑轮滑动的快的时候,用示波器看见的间隔时间是5ms)这样就没有办法判断方向了。请请教一下前辈,这个问题要怎么解决呢?

使用特权

评论回复
69
trice| | 2014-8-12 16:23 | 只看该作者
有木有人在呀?

使用特权

评论回复
70
trice| | 2014-8-12 16:25 | 只看该作者
dengm 发表于 2011-12-2 16:52
我有一个中断方法,  A 接p3.2, B接P3.7, P3.2 电平方式中断, 并门控Timer0(mode 2)中断, 保证最快!

      ...

我想请问一下,我设定断点发现中断标志位两个引脚都是同时置位的,怎么办呢?而且我需要进入低功耗模式,需要关掉定时器,有没有别的办法呢?

使用特权

评论回复
71
trice| | 2014-8-12 16:27 | 只看该作者
受不了了 发表于 2011-12-3 11:27
还好,我遇到的都不需要反转,没消抖,否则还真不知道怎么整
做过一个需要读两个编码的,需要读它们的AB相 ...

您好,前辈,请问您在线么?

使用特权

评论回复
72
受不了了| | 2014-8-13 14:20 | 只看该作者
本帖最后由 受不了了 于 2014-8-13 14:21 编辑
trice 发表于 2014-8-12 16:27
您好,前辈,请问您在线么?


我也没弄过需要考虑编码器方向的情况,我做的都是单方向旋转,只是大概知道在AB相进来时都要判断另一相的电平,按道理你那个编码器脉冲频率够低的,肯定不是编码器问题。你不妨用单片机或者自身发更低频率给那口子,排查是哪里出问题了

使用特权

评论回复
73
景天飞雪| | 2014-12-16 13:41 | 只看该作者
要学习

使用特权

评论回复
74
cl234583745| | 2015-5-18 15:32 | 只看该作者
s99060 发表于 2007-12-17 21:40
static u8 encoder;encoder=encoder | (0x3 & GPIO_ReadInputData(GPIOD)&g ...

大神没有看明白你写的啊。
编码器是ab2个引脚,哪个先一个脉冲就是向那个方向旋转了一次。怎么检测的啊。我写的程序,旋转时候总会反复

使用特权

评论回复
75
xuyaqi| | 2015-5-18 16:36 | 只看该作者
用单片机IO口测编码器输出除非编码器转的非常慢否则单片机响应不过来,还是用硬件电路吧?

使用特权

评论回复
76
书生电子| | 2017-8-9 17:19 | 只看该作者
mark

使用特权

评论回复
77
lxa0| | 2018-1-15 14:14 | 只看该作者
最近在学习EC16-2B旋转编码器
看过大家的发言
很受启发
谢谢大家!

使用特权

评论回复
78
lxa0| | 2018-1-30 13:50 | 只看该作者
找了一个EC16-2A
说是增量型旋转编码器
于是接到单片机上做了下面的试验

使用特权

评论回复
79
lxa0| | 2018-1-30 13:50 | 只看该作者

使用特权

评论回复
80
lxa0| | 2018-1-30 13:52 | 只看该作者
实验很简单
下面是参考代码:


;这是一个旋转编码器的试验汇编代码2018-1-20
;最后试验修改2018-1-26,几乎没有了抖动
;at89s52,11.0592MHz,
;p32(int0)下降沿做中断判别A,p34(t0)做引脚B判别

ORG 0000H
LJMP mm
ORG 0003H
LJMP pd                ;中断判别A脚
         
;程序入口*********************************************************      
org 0100h
mm:nop
mov 17h,#0feh          ;循环显示p0口的led
mov 18h,#00h           ;4个做判别缓冲用
mov 19h,#00h
mov 1ah,#00h
mov 1bh,#05h
mov p0,17h
mov sp,#4fh            ;设堆栈入口50h
mov tcon,#01h          ;int0下降沿中断
setb ea                ;开总中断
setb ex0               ;开int0
mm0:nop
sjmp mm0

;int0中断代码*****************************************************
org 0300h
pd:nop
clr ea
push acc
push psw
push dph
push dpl
mov a,p3
anl a,#00010100b        ;保留p32和p34脚屏蔽其余引脚
mov 18h,a               ;暂存在r7
acall ys100             ;延时约1.5ms
mov a,p3
anl a,#00010100b
cjne a,18h,pd0          ;不是正转则判别是否反转
cjne a,#10h,pd0         ;A=L,B=H时右移           
mov a,17h
rl a
mov 17h,a
mov p0,a
sjmp pd00
pd0:mov a,p3
anl a,#00010100b
mov 19h,a
acall ys100             ;延时约1.5ms
mov a,p3
anl a,#00010100b
cjne a,19h,pd00         ;是干扰则返回
cjne a,#00h,pd00        ;A=B=L时左移
mov a,17h
rr a
mov 17h,a
mov p0,a
pd00:setb ea
pop dpl
pop dph
pop psw
pop acc
reti

ys100:nop               ;延时约1.5mS
ys0:djnz 1ah,$
djnz 1bh,ys0
mov 1ah,#00h
mov 1bh,#05h
ret


end

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则