[电机及执行机构驱动] 谁帮帮忙啊 要疯了 憋了2星期了 真没思路

[复制链接]
 楼主| bylxy000 发表于 2013-9-23 13:26 | 显示全部楼层 |阅读模式



帮帮忙吧 真不行了 诶 就是不知道哪不对啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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;
}                         
 楼主| 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;
}         
我已经这样改了  还是不行
 楼主| bylxy000 发表于 2013-9-24 11:42 | 显示全部楼层
bylxy000 发表于 2013-9-24 11:40
uchar LM629_RD_Status()
{       
        volatile uchar state =0;

我现在都搞不清 到底是因为流水线取指多以时序不对 还是LM629根本就没工作了 我用了 2个LM629都不行
airwill 发表于 2013-9-24 12:39 | 显示全部楼层
        LM629_RD  =0;                                                                                 
        NOP(5);
        state     =P4;        
        NOP(4);
        LM629_RD  =1;                                                                                             

从时序的角度看,
        state     =P4;      
尽量靠近
       LM629_RD  =1;           
是最节省时间的. 最好用示波器等检测仪器实测一下时序, 如果手头没有这些仪器, 中间先尽量延长时间.   
 楼主| 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 肯定可以了  但是因为这个单片机是流水线行执行指令的 所以才要加延迟,,,但是还不行
 楼主| bylxy000 发表于 2013-9-24 16:28 | 显示全部楼层
bylxy000 发表于 2013-9-24 16:25
测过啦 时间LM629_RD  =0;                                                                           ...

这个硬件结构上我还没有接电机 不知道是不是不能形成闭环 所以不好使 所以我们老大 让我去中发买先买一个电机和编码器回来用 我真心不愿意去啊 讨厌和别人砍价 诶
airwill 发表于 2013-9-25 09:18 | 显示全部楼层
我看还是一步步地来, 问题要一个个地解决.  RD的低电平时间就是620ns 的时间段里,  P4 的状态测过了吗?
 楼主| bylxy000 发表于 2013-9-27 11:41 | 显示全部楼层
airwill 发表于 2013-9-25 09:18
我看还是一步步地来, 问题要一个个地解决.  RD的低电平时间就是620ns 的时间段里,  P4 的状态测过了吗? ...

不对P4进行操作的话 就是FF 要是写入了 就是写入的值
 楼主| bylxy000 发表于 2013-9-28 14:59 | 显示全部楼层
时序图是大于他给定时间间隔就可以了吧  然后尽量短 以减少程序执行时间 是吧 蒙圈了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xxiao6130 发表于 2013-10-7 11:21 | 显示全部楼层
学习学习
 楼主| bylxy000 发表于 2013-10-14 11:47 | 显示全部楼层
木有人帮忙了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

83

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部