123
返回列表 发新帖
楼主: betty20006

[其他] 关于56F8300资料的问题(已解决)

[复制链接]

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-17 16:28:16 | 显示全部楼层

RE:关于56F8300资料的问题

楼主参考我们5楼DSC工程师的代码还是不行吗?
按照DSC工程师的建议,参考“用户手册的Decoder Control Register的配置,参看HIP,SWIP,XIP bits.” 看看配置是不是有问题,应该是程序没有配好。
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

54

帖子

0

注册会员

Rank: 2

积分
54
最后登录
1970-1-1
 楼主| 发表于 2014-6-18 12:52:30 | 显示全部楼层

回复:关于56F8300资料的问题

回复第 21 楼 于2014-06-17 16:28:16发表:
楼主参考我们5楼DSC工程师的代码还是不行吗?
按照DSC工程师的建议,参考“用户手册的Decoder Control Register的配置,参看HIP,SWIP,XIP bits.” 看看配置是不是有问题,应该是程序没有配好。
 
 
恩,不行。
 
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

54

帖子

0

注册会员

Rank: 2

积分
54
最后登录
1970-1-1
 楼主| 发表于 2014-6-19 10:14:08 | 显示全部楼层

回复:关于56F8300资料的问题

现在能读了,调试了半天,发现是硬件的电源还没有焊上去。。。对于您说的初值一般设置为0,那怎么去应付电机反转的情况呢?我初值是设置成分辨率了。比如1000线,初值就是1000*4。不知道对不对呢,再调试一下。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-19 11:21:16 | 显示全部楼层

回复:关于56F8300资料的问题

回复第 23 楼 于2014-06-19 10:14:08发表:
现在能读了,调试了半天,发现是硬件的电源还没有焊上去。。。对于您说的初值一般设置为0,那怎么去应付电机反转的情况呢?我初值是设置成分辨率了。比如1000线,初值就是1000*4。不知道对不对呢,再调试一下。 

反转,如果计数是从0减的话,那么下个应该是CNT的最大值,或者你设置的MOD值,由你的模式确定。
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

54

帖子

0

注册会员

Rank: 2

积分
54
最后登录
1970-1-1
 楼主| 发表于 2014-6-19 14:09:00 | 显示全部楼层

回复:关于56F8300资料的问题

恩,我设置了
setReg(DEC0_UIR,0x00);
setReg(DEC0_LIR,0x00);
setRegBits(DEC0_DECCR,0x0E40); 其中值为1的位为:
Software Triggered Initialization of Position Counters UPOS and LPOS (SWIP)—Bit 11;
Enable Reverse Direction Counting (REV)—Bit 10;
Enable Signal Phase Count Mode (PH1) —Bit 9;
Index Triggered Initialization of Position Counters UPOS and LPOS (XIP)—Bit 6;
 
 
在主程序中写:
PhaseA = QD1_GetPhaseA(0);
PhaseB = QD1_GetPhaseB(0);
Index = QD1_GetIndex(0);
      
            
 RelPos = QD1_GetPosition(&RelPos);
Rev = DEC0_REV; 
 
这样就可以读编码器了:包含一圈的相对值和圈数。
 
有两个问题:
1 Bit 10还不是很理解什么意思。
2 我现在读出数值(一圈的相对位置和圈数)之后,我如何知道是通过正转到达的还是反转的呢。涉及到如何转换成机械角度的问题。
 
 
感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

54

帖子

0

注册会员

Rank: 2

积分
54
最后登录
1970-1-1
 楼主| 发表于 2014-6-20 09:53:05 | 显示全部楼层

回复:关于56F8300资料的问题

回复第 24 楼 于2014-06-19 11:21:16发表:
回复第 23 楼 于2014-06-19 10:14:08发表:
现在能读了,调试了半天,发现是硬件的电源还没有焊上去。。。对于您说的初值一般设置为0,那怎么去应付电机反转的情况呢?我初值是设置成分辨率了。比如1000线,初值就是1000*4。不知道对不对呢,再调试一下。 

翻转,如果计数是从0减的话,那么下个应该是CNT的最大值,或者你设置的MOD值,由你的模式确定。
 
是这样的,就是比如初值为0,然后反转的话,REV(圈数)就从最大值(65535)开始往下计数对吧,然后,再继续转,其中一会正转一会反转,然后到一个时刻了,我开始要计算位移了,也就是圈数+一圈里面的角度。但是对于圈数,比如停在10000这个值,如果是正转圈数,那我就+10000,如果是反转圈数,那我应该+(65535-10000),但是我如何判断它是正转到这里还是反转到这里的呢?感谢!
 
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

54

帖子

0

注册会员

Rank: 2

积分
54
最后登录
1970-1-1
 楼主| 发表于 2014-6-20 09:53:06 | 显示全部楼层

回复:关于56F8300资料的问题

回复第 24 楼 于2014-06-19 11:21:16发表:
回复第 23 楼 于2014-06-19 10:14:08发表:
现在能读了,调试了半天,发现是硬件的电源还没有焊上去。。。对于您说的初值一般设置为0,那怎么去应付电机反转的情况呢?我初值是设置成分辨率了。比如1000线,初值就是1000*4。不知道对不对呢,再调试一下。 

翻转,如果计数是从0减的话,那么下个应该是CNT的最大值,或者你设置的MOD值,由你的模式确定。
 
是这样的,就是比如初值为0,然后反转的话,REV(圈数)就从最大值(65535)开始往下计数对吧,然后,再继续转,其中一会正转一会反转,然后到一个时刻了,我开始要计算位移了,也就是圈数+一圈里面的角度。但是对于圈数,比如停在10000这个值,如果是正转圈数,那我就+10000,如果是反转圈数,那我应该+(65535-10000),但是我如何判断它是正转到这里还是反转到这里的呢?感谢!
 
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

54

帖子

0

注册会员

Rank: 2

积分
54
最后登录
1970-1-1
 楼主| 发表于 2014-6-20 09:52:51 | 显示全部楼层

回复:关于56F8300资料的问题

我又进行了一个测试,
setReg(DEC0_UIR,0x00);
setReg(DEC0_LIR,0x00);
setRegBits(DEC0_DECCR,0x00);(控制寄存器全是0)
这时仍然可以启动编码器计数。。。不解。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-6-23 10:04:50 | 显示全部楼层

回复:关于56F8300资料的问题

回复第 25 楼 于2014-06-19 14:09:00发表:
恩,我设置了
setReg(DEC0_UIR,0x00);
setReg(DEC0_LIR,0x00);
setRegBits(DEC0_DECCR,0x0E40); 其中值为1的位为:
Software Triggered Initialization of Position Counters UPOS and LPOS (SWIP)—Bit 11;
Enable Reverse Direction Counting (REV)—Bit 10;
Enable Signal Phase Count Mode (PH1) —Bit 9;
Index Triggered Initialization of Position Counters UPOS and LPOS (XIP)—Bit 6;
 
 
在主程序中写:
PhaseA = QD1_GetPhaseA(0);
PhaseB = QD1_GetPhaseB(0);
Index = QD1_GetIndex(0);
      
   
 RelPos = QD1_GetPosition(&RelPos);
Rev = DEC0_REV; 
 
这样就可以读编码器了:包含一圈的相对值和圈数。
 
有两个问题:
1 Bit 10还不是很理解什么意思。
2 我现在读出数值(一圈的相对位置和圈数)之后,我如何知道是通过正转到达的还是反转的呢。涉及到如何转换成机械角度的问题。
 
 
感谢!
 

你看看你们的手册,有没有一个方向寄存器呢?
一般会有一个寄存器表示是增了还是减了,这样就可以间接看到是正转还是反转。
其余问题,我会帮你转给我们的DSC工程师。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

43

帖子

0

注册会员

Rank: 2

积分
159
最后登录
1970-1-1
发表于 2014-6-23 13:23:17 | 显示全部楼层

RE:关于56F8300资料的问题

就像你说的,对于DSP56300系列,确实没有一个bit位反映转子的旋转方向,客户只能连续两次读取position register,计算差值,如果差值为正,则正传, 为负则反转。对MC56F84xxx family, 此Quadrature Decoder module作了改进,增加了ENC_CTRL2 register, 再此寄存器中,DIR bit用来反映旋转方向。
对于DECCR中的REV bit(bit 10), 当REV bit置0, PhaseA超前PhaseB则加计数,当REV bit置1,PhaseA超前PhaseB则减计数。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 07:43 , Processed in 0.100390 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表