打印
[电机及执行机构驱动]

谁帮帮忙啊 要疯了 憋了2星期了 真没思路

[复制链接]
2071|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
zhangmangui| | 2013-9-23 21:11 | 只看该作者
是代码啊  你说说什么问题   大家帮你分析  代码没时间去看

使用特权

评论回复
板凳
bylxy000|  楼主 | 2013-9-24 09:31 | 只看该作者
zhangmangui 发表于 2013-9-23 21:11
是代码啊  你说说什么问题   大家帮你分析  代码没时间去看

这个驱动用的C8051F380做的,流水线结构,不知道是不是这个问题影响了时序 ,整个程序完全无法运行 ,就像完全不能和LM629通信一样,LM629用的8M的晶振 是从C8051F380内部输出的,与LM629连接的CS WR RD PS 等引脚电平正常,因为现在没有光电码盘和电机,所以INDEX引脚为高电平(不用时必须高),该芯片是上升沿写入,时序完全是按照芯片手册写的 无论怎么对LM629进行“忙位检测”都没有结果输出,读取的结果一直都是I/O的本身状态。

使用特权

评论回复
地板
airwill| | 2013-9-24 10:34 | 只看该作者
uchar LM629_RD_Status()   是否这样改一下试试:

{       
        LM629_CS  =0;  //低电平2us    高电平2.4us
        LM629_WR  =1;  
        LM629_PS  =0;  //低电平1.4us  高电平3us                      //PS之后30ns  拉低RD
        _nop_();
                _nop_();
                _nop_();
                _nop_();
        LM629_RD  =0;  //低电平0.8us  高电平3.6us                    //180ns 之内装入数据
                _nop_();
                _nop_();
                _nop_();
        nop_();
        state     =P4;
        LM629_RD  =1;                                                //低到高到数据完全读出 最小0ns 最大180ns
        LM629_PS  =1;
        LM629_CS  =1;
        return state;
}                         

使用特权

评论回复
5
bylxy000|  楼主 | 2013-9-24 11:40 | 只看该作者
airwill 发表于 2013-9-24 10:34
uchar LM629_RD_Status()   是否这样改一下试试:

{       

uchar LM629_RD_Status()
{       
        volatile uchar state =0;
        LM629_CS  =0;
        LM629_WR  =1;  
        LM629_PS  =0;                                                                             
        DELAY_6US();
        NOP(4);
        LM629_RD  =0;                                                                                  
        NOP(5);
        state     =P4;       
        NOP(4);
        LM629_RD  =1;                                                                                            
        NOP(5);
        LM629_PS  =1;
        LM629_CS  =1;
        return state;
}         
我已经这样改了  还是不行

使用特权

评论回复
6
bylxy000|  楼主 | 2013-9-24 11:42 | 只看该作者
bylxy000 发表于 2013-9-24 11:40
uchar LM629_RD_Status()
{       
        volatile uchar state =0;

我现在都搞不清 到底是因为流水线取指多以时序不对 还是LM629根本就没工作了 我用了 2个LM629都不行

使用特权

评论回复
7
airwill| | 2013-9-24 12:39 | 只看该作者
        LM629_RD  =0;                                                                                 
        NOP(5);
        state     =P4;        
        NOP(4);
        LM629_RD  =1;                                                                                             

从时序的角度看,
        state     =P4;      
尽量靠近
       LM629_RD  =1;           
是最节省时间的. 最好用示波器等检测仪器实测一下时序, 如果手头没有这些仪器, 中间先尽量延长时间.   

使用特权

评论回复
8
bylxy000|  楼主 | 2013-9-24 16:25 | 只看该作者
airwill 发表于 2013-9-24 12:39
LM629_RD  =0;                                                                                ...

测过啦 时间LM629_RD  =0;                                                                                 
        state     =P4;        
        LM629_RD  =1;  只是这样 RD的低电平时间就是620ns 肯定可以了  但是因为这个单片机是流水线行执行指令的 所以才要加延迟,,,但是还不行

使用特权

评论回复
9
bylxy000|  楼主 | 2013-9-24 16:28 | 只看该作者
bylxy000 发表于 2013-9-24 16:25
测过啦 时间LM629_RD  =0;                                                                           ...

这个硬件结构上我还没有接电机 不知道是不是不能形成闭环 所以不好使 所以我们老大 让我去中发买先买一个电机和编码器回来用 我真心不愿意去啊 讨厌和别人砍价 诶

使用特权

评论回复
10
airwill| | 2013-9-25 09:18 | 只看该作者
我看还是一步步地来, 问题要一个个地解决.  RD的低电平时间就是620ns 的时间段里,  P4 的状态测过了吗?

使用特权

评论回复
11
bylxy000|  楼主 | 2013-9-27 11:41 | 只看该作者
airwill 发表于 2013-9-25 09:18
我看还是一步步地来, 问题要一个个地解决.  RD的低电平时间就是620ns 的时间段里,  P4 的状态测过了吗? ...

不对P4进行操作的话 就是FF 要是写入了 就是写入的值

使用特权

评论回复
12
bylxy000|  楼主 | 2013-9-28 14:59 | 只看该作者
时序图是大于他给定时间间隔就可以了吧  然后尽量短 以减少程序执行时间 是吧 蒙圈了

使用特权

评论回复
13
xxiao6130| | 2013-10-7 11:21 | 只看该作者
学习学习

使用特权

评论回复
14
bylxy000|  楼主 | 2013-10-14 11:47 | 只看该作者
木有人帮忙了啊

使用特权

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

本版积分规则

16

主题

83

帖子

1

粉丝