[圈圈教你玩USB] 《圈圈教你玩USB》书中勘误专区

[复制链接]
 楼主| computer00 发表于 2009-3-20 10:30 | 显示全部楼层 |阅读模式
USB, ov, ni, os, pc
<br />第40页第1行,“自己修改一下toos.ini文件”应该是“tools.ini”<br />第46页第12行,“由代码可知,它生成了‘CLR&nbsp;A’和‘MOVE&nbsp;P2,A’两条指令”这里MOVE不应该有E,改为“MOV&nbsp;P2,A”<br /><br />随书赠送PCB的原理图下载:<a href="https://bbs.21ic.com/club/bbs/list.asp?boardid=67&t=3270004&tp=%5B" target=_blank>https://bbs.21ic.com/club/bbs/list.asp?boardid=67&t=3270004&tp=%5B</a><br />&nbsp;<br />《圈圈教你玩USB》勘误(更新日期2009&nbsp;年06月29日)下载地址1:<img src="http://group.**/images/download.gif"><br />下载地址2:&nbsp;勘误.pdf<br /><br /><br />同时欢迎读者积极指出书中的错误。<br />
xiaorunyi 发表于 2009-3-20 10:53 | 显示全部楼层

板凳

沙发
三块石头 发表于 2009-3-21 17:55 | 显示全部楼层

勘误-续

第114页第23行,USB鼠标例子的报告描述符<br />“//这是一个局部条目,说明用途的最小值为3。实际上是鼠标中键”<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^<br />这里“最小值”应该为“最大值”,因为最小值上面一行已经定义了,而且后面的注释也是USAGE_MAXIMUM<br /><br /><br />同样,第131页第12行(含空行),USB键盘例子的报告描述符<br />“//这是一个局部条目,说明用途的最小值为0xe7。实际上是键盘右GUI(WIN)键”<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^<br />同样也应该改为“最大值”<br /><br /><br />看来圈圈写程序和写书都是复制粘贴呦~~~~~这种事儿谁都容易忘改点小地方~~
 楼主| computer00 发表于 2009-3-21 18:02 | 显示全部楼层

谢谢指出~~~同样的注释错误在代码中不少啊...汗...

  
xiaorunyi 发表于 2009-3-26 11:53 | 显示全部楼层

D12的

管脚英文的注释有两个相同了
芯行天下 发表于 2009-3-26 17:07 | 显示全部楼层

错误之处

第84页,第18行(含页起始处大括号单独一行和中间一个空行)<br />SetUsbPortOut();<br /><br />没有这个函数,应该改成D12SetPortOut();<br /><br />源程序中没有这个错误,在PDIUSBD12.c中第229行,是D12SetPortOut();是正确的。
 楼主| computer00 发表于 2009-3-26 17:21 | 显示全部楼层

修正第六章中USB转串口的一个软件小bug(非印刷错误)

在原来的程序中,虽然对端点的双缓冲区清除中断时有判断,但是还是存在着刚好读回时,双缓冲没满,但是写入时双缓冲区满的情况。这样的话就会丢失中断,导致一些数据在缓冲区拿不出来,要等下一次接收到数据时才能拿出来。<br /><br />将原来程序中的void&nbsp;UsbEp2Out(void)函数中的<font color=#FF0000><br />//读最后接收状态,这将清除端点2输出的中断标志位。<br />//注意端点2有个双缓冲机制,在清除中断之前,先检查是否两个缓冲区<br />//是否全满了,如果两个缓冲区全满的话,就不用清除中断标志。只有当<br />//两个缓冲区不全满的时候才需要清除中断标志。<br />if((D12ReadEndpointStatus(4)&0x60)!=0x60)<br />{<br />D12ReadEndpointLastStatus(4);&nbsp;<br />}</font><br />部分删除,在函数最后增加如下代码:<br /><font color=#FF0000><br />if(!(D12ReadEndpointStatus(4)&0x60))&nbsp;//如果任何一个缓冲区又有数据,则不要清除中断<br />{<br />D12ReadEndpointLastStatus(4);&nbsp;//清除端点中断<br />}<br /></font><br />然后重新编译之。<br />
 楼主| computer00 发表于 2009-3-27 14:40 | 显示全部楼层

勘误

第84页的24行中,<br /><br />D12WriteByte(*(Buf+i));&nbsp;&nbsp;//将数据放到数据线上<br /><br />应改为<br /><br />D12SetData(*(Buf+i));&nbsp;//将数据放到数据线上<br /><br /><br />光盘中代码是正确的,书稿在提交给出版社后,被他们与上面的写一字节“统一”掉了……
xiaorunyi 发表于 2009-3-27 19:53 | 显示全部楼层

33也1行

mx232-&gt&nbsp;max232
 楼主| computer00 发表于 2009-3-29 22:53 | 显示全部楼层

谢谢楼上指出。

第98页第二行“端点描述符的长度为5字节”应改为“端点描述符的长度为7字节”。<br /><br />第98页第十二行“wMaxPacketSize&nbsp;大小为1字节”改为“wMaxPacketSize&nbsp;大小为2字节”。<br /><br />第33页第一行的“MCU和MX232”漏掉一个字母A,应为“MCU和MAX232”。<br />
三块石头 发表于 2009-3-30 17:47 | 显示全部楼层

LS

手头没书,没看出第一句话什么意思……俩一样啊
 楼主| computer00 发表于 2009-3-30 19:14 | 显示全部楼层

晕倒……又写错了,书中写的是5字节……俺赶紧改过来。

表格中是对的,但是文字描述符错了。
程序匠人 发表于 2009-3-31 09:05 | 显示全部楼层

圈圈,你还是学匠人的样,做一个表格,转成PDF,这样会比

方便大家下载
xwj 发表于 2009-3-31 09:32 | 显示全部楼层

唉... 来人,拉出去,重打100大板!

  
 楼主| computer00 发表于 2009-3-31 09:49 | 显示全部楼层

问题是现在才刚开始啊,等发现得差不多时,才整个表格出

不然每天要更新表格,难道不烦么?
icesongjie 发表于 2009-4-1 09:29 | 显示全部楼层

书都出了

书都出了,还怕麻烦?<br />怕麻烦就不应该出书
 楼主| computer00 发表于 2009-4-1 10:04 | 显示全部楼层

无语……那太没效率了。俺宁愿看场电影,也不愿做这么没

俺当初写书只花了2个多月的时间。
xiaorunyi 发表于 2009-4-4 15:56 | 显示全部楼层

匠人头上那个“真”字代表什么?

  
 楼主| computer00 发表于 2009-4-8 19:49 | 显示全部楼层

增加

77页表3.5.3第五行第二列“GEG_INTERFACE”应改为“GET_INTERFACE”。<br />97页表3.9.3最后一项“端口的查询时间”应改为“端点的查询时间”。<br />125页4.2节第一行,“iProduct”应改为“idProduct”<br />234页8.1节第四行“SCSI通明命令集”改为“SCSI透明命令集”。
 楼主| computer00 发表于 2009-4-10 00:04 | 显示全部楼层

新增勘误

242页表8.8.2第三行第二列的“RAM”应改为“RMB”,<br /><br />242页倒数第二行“如果设置为不为可移除的”改为“如果设置为不可移除的”<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

247

主题

14712

帖子

212

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