liwenxin201
驱动牛犊
驱动牛犊
  • 注册日期2002-11-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望23点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1915回复:15

D12 复位后!?

楼主#
更多 发布于:2003-02-28 13:56
请各位仁兄帮忙:
  D12 复位后我读取中断寄存器的值如下:
  第一次中断: 0xc0;
  第二次. .: 0x40;
  第三次. .: 0x40;
  第四次. .:0x80;
  之后就没有中断产生.请教各位仁兄我上述中断过程中该如何处理,亦即接下来该如何做呢?!!!急.......


drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-03 11:26
我的和你的一样,希望那位大虾能伸出友谊之手,谢谢!
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-03 12:01
你固件有问题,我收到80.c0(顺序不是固定的)之后就收到01了..你如果没有收到01,(主机发送过来的命令),也许就是你初始化有问题了.
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-03 15:29
dacongtou :
   帮忙看一下,这是我的电路图和固件初始化,哪儿会有问题呢?
都已经3个星期了,没有任何进展。谢谢!
附件名称/大小 下载次数 最后更新
2003-03-03_PD12.zip (57KB)  6
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
liwenxin201
驱动牛犊
驱动牛犊
  • 注册日期2002-11-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望23点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-04 12:15
这是我在你的主程序基础上改过的你在试一下.
void main()
{
    EA=0;  
    init_port();
    init_timer0();
IT0 = 0;
EX0 = 1;
    init_serial();
    XmtBuff.out = 0x00;
    XmtBuff.in = 0x01;

reconnect_USB();
    while(1)
    {      
        if(!D12_int_n)
        {   //LED7=0;
   
            D12_COMMAND(0xf4);// 读中断寄存器
            D12_DATAIN();
            XmtBuff.b[0] = data2;

if(XmtBuff.b[0] & 0x40)   //usb_reset
            {  
LED6=0;  
            }
            
        if(XmtBuff.b[0] & 0x80)
            {
              if(D12_suspend == 1)
              {
   LED7=0;
                  D12_suspend=0;//处理挂起事务
                  D12_COMMAND (0xf6);//发送恢复命令                
                  D12_suspend = 1;
              }
            }              
            if(XmtBuff.b[0] & 0x01)
            { D12_COMMAND(0x40);//读 ep0 OUT 最后状态
              D12_DATAIN();
 XmtBuff.b[1]=data2;
  if(XmtBuff.b[1] & 0x20)
  {SETUP_read();
  HandleSetup();
  }
}

if(XmtBuff.b[0] & 0x02)
            { D12_COMMAND(0x41);//读 ep0 IN 最后状态
              D12_DATAIN();
 USB_submit();
}

if(XmtBuff.b[0] & 0x04)
            { D12_COMMAND(0x421);//读 ep0 IN 最后状态
              D12_DATAIN();
 //此处加处理程序。
}
if(XmtBuff.b[0] & 0x10)
            { D12_COMMAND(0x43);//读 ep0 IN 最后状态
              D12_DATAIN();
 //此处加处理程序。
}
if(XmtBuff.b[0] & 0x20)
            { D12_COMMAND(0x44);//读 ep0 IN 最后状态
              D12_DATAIN();
 //此处加处理程序。
}
if(XmtBuff.b[0] & 0x40)
            { D12_COMMAND(0x45);//读 ep0 IN 最后状态
              D12_DATAIN();
 //此处加处理程序。
}



/*else              
            {
              if(XmtBuff.b[0] & 0x15)// 收到 OUT 包
              {  
   
                  //if(ii[0]==12)
                  //ii[0]=ii[0];
                  if(XmtBuff.b[0] & 0x01)
                  {   LED4=0;
                      D12_COMMAND(0x40);//读 ep0 OUT 最后状态
                      D12_DATAIN();
 XmtBuff.b[1]=data2;
                     if(XmtBuff.b[1] & 0x20)// 收到 SETUP 包
                      {  SETUP_read(); HandleSetup();}
                  }
               else if(XmtBuff.b[0] & 0x04)
                  {  
                      D12_COMMAND ( 0x42);//读ep1  OUT 最后状态
                      D12_DATAIN();
                      XmtBuff.b[0] = data2;
                      ep_read(0x02);
                    

                  }
               else if(XmtBuff.b[0] & 0x10)
                  {
                      
                      D12_COMMAND( 0x44);//读ep2 OUT 最后状态
                      D12_DATAIN();
                  }
              }
           else if(XmtBuff.b[0] & 0x2a)// 收到 IN 包
                { LED3=0;
                  if(ii[1]==18)
                  ii[0]=ii[0];
                  if(XmtBuff.b[0] & 0x02) XmtBuff.in = 1;
                  else if(XmtBuff.b[0] & 0x08) XmtBuff.in = 3;
                  else if(XmtBuff.b[0] & 0x20) XmtBuff.in = 5;
                      D12_COMMAND(XmtBuff.in | 0x40);// 读 IN 最后状态
                  D12_DATAIN();
                  XmtBuff.b[1] = data2;
                 }
           }
        }
    } //2*/
}
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-04 15:09
还是不行,帮忙看一下,读写控制信号是否有问题,
难道读写数据必须用指针方式吗?
void D12_DATAOUT(unsigned char data1)
{

    D12_A0 = 0;
    WR1=0;
    RD1=1;
    P0 = data1 ;
    RD1=1;
    WR1=1;    
}

void D12_COMMAND (unsigned char command )
{


    D12_A0 = 1;
    WR1=0;
    RD1=1;
    P0 = command ;
    RD1=1;
    WR1=1;
  
}


unsigned char  D12_DATAIN(void)
{
    D12_A0 = 0;
    WR1=1;
    RD1=0;
    data2=P0;
    WR1=1;
    RD1=1;
return data2;

}
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
liwenxin201
驱动牛犊
驱动牛犊
  • 注册日期2002-11-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望23点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-04 20:15
我觉得最好用读写内存的指令就不用处理WR,RD信号而还简洁一些!?
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-05 08:54
问题是我必须控制rd wr信号,否则不能正常读写。也不知道是什么问题?
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
liwenxin201
驱动牛犊
驱动牛犊
  • 注册日期2002-11-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望23点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-05 11:32
不满你说我就是在你的程序的基础上改成的现在枚举已经成功?
我的RD,WR 用的是内存寻址指令。我用的是80c196kc MCU。
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-03-05 12:16
想问一下,是不是只能用内存寻址指令才能成功,用控制rd wr方式不行吗?
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-03-05 12:18
能否将你的源代码发给我看一下呢?
email:  dillhu@mxic.com.cn
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
flyfree
驱动牛犊
驱动牛犊
  • 注册日期2002-12-26
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-03-07 17:06
可以用WR,RD方式访问。
试一下下面的代码:(  若还不行,则可能是一些数据你未送给HOST,送数据前面的条件判断有问题,导致该送的数据未送,端点使能了吗? )

#include   <intrins.h>

static void Delay(void)
{
    _nop_();    
    _nop_();
    _nop_();
}


void D12_DATAOUT(unsigned char data1)
{
D12_A0 = 0;
P0 = data1 ;
Delay();
WR1=0;
Delay();
WR1=1;
}

void D12_COMMAND (unsigned char command )
{
D12_A0 = 1;
P0 = command ;
Delay();
WR1=0;
Delay();
WR1=1;
}


unsigned char D12_DATAIN(void)
{
D12_A0 = 0;
RD1=0;
Delay();
data2=P0;
RD1=1;
return data2;

}


 

drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-03-08 14:12
谢谢楼上的仁兄,我在试试看。
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-03-10 10:12
还是不行,惨了
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
majingsong
驱动牛犊
驱动牛犊
  • 注册日期2002-04-02
  • 最后登录2007-05-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-03-10 22:13
D12上电后延时至少3毫秒芯片才能完成复位,至少3毫秒后才能操作D12芯片,在程序开始处加一点延时试一下,祝你好运
drivermaster
驱动中牛
驱动中牛
  • 注册日期2003-02-26
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-03-11 17:13
还不行,我只能等样板到了,在回过来解决吧!
菩提本无树,明镜亦非台, 本来无一物,何处染尘埃? 身似菩提树,心如明镜台, 愿将勤拂拭,勿使染尘埃。
游客

返回顶部