首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教usb通讯,hc08jb16

顶一下吧!
不断学习,摸索中进步!

请教usb通讯,hc08jb16

我做usb设备与主机通讯,在仿真器的接收缓冲区可以接收到主机发送的数据,然后直接向仿真器的发送缓冲区写数据,运行程序主机没有接收到数据。
我的接收数据处理程序是端点2处理,向主机发送数据是在端点1,寄存器设置是正确的,请教各位指点,问题会出在那?[em06]


[此贴子已经被作者于2005-7-18 10:13:43编辑过]

不断学习,摸索中进步!
给你回信了。T1SEQ位必须通过异或来toggle其原来的状态。
重新设置了,UCR1 = ((UCR1^BM_T1SEQ) & BM_T1SEQ) + BM_TX1E + n;
用程序将发送数据写到TxBuffer中可以在仿真器中看见,我的中断判断是:
......
if(UIR1 & BM_TXD1F) {       
                handleIN1();
                }
.......
但是进步了中断程序
不断学习,摸索中进步!
中断是表明数据已经被发送出去。对于数据的发送建议不要在中断里面做,中断里面只进行标志位的设置和清除。
把数据发送放到主程序,运行还是不行,
不断学习,摸索中进步!
把程序打包发给我看看
建议你再仔细阅读一下些此芯片的Datasheet,再对照一下你的程序中的问题。
一、你的程序中是不是已经把数据送到发送端点的寄存器中?一般的数据缓冲区是双buffer,toggle标志置位了吗?
二、在你发送之前,也就是用端点2之前是不是已经把端点号置为2了呢?
三、你端点2的初始化设置正确吗?
四、你还可以把接收和发送的两个端点互换试试的!
五、在程序中你可以设置断点,在发送第一个数据包后设置断点,看一下状态。
六,在发送的时候,可以用BUS HOUND监控一下,是不是已经发送到总线上。
七,在发送之前还有一个检测Buffer的BUSY状态。你检测了吗?
Gulf
我的程序现在可以进入HandleIn1()的中断处理,
设置端点看见数据已经发送到端点寄存器,toggle异或设置了。 端点号是正确的。各个允许发送寄存器都设置了,但是还是没有在总线上看见数据。
不断学习,摸索中进步!
那你得看一下你的端点的初始化设置,如果你的端点设置有错也会出现这样的问题!
Gulf
检查了好久,发现我的程序烧到片子可以与主机通讯,但是直接在仿真其在线调试不行,
请教各位是硬件干扰造成的,还是软件的原因,
不断学习,摸索中进步!
仿真器的时钟频率选择是否正确?
海纳百川  有容乃大
我用的是08JBJG的仿真板,时钟选择外部OSC,在truetime窗口的都试过了,不行,
不断学习,摸索中进步!
如果目标板上用的是晶振,则仿真板不能选外部OSC,而要选内部。注意这个“内部”还“外部”指的是仿真板的内部和外部,而不是指芯片!
海纳百川  有容乃大
迷糊啦!麻烦版主看一下帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=38527&ID=38527
问题是我选择其它时钟设置运行提示硬件有问题,只能选择OSC
不断学习,摸索中进步!
返回列表