买<圈圈教你学usb>这本书是在2009年的一个潮湿的夏天,以至于我每次拿起这本书的时候总会有一种水汽扑面的感觉!那个时候我三年级刚刚完,觉得自己算个大葱葱决定南下广州闯闯!我在广州花都我老哥家打住一个星期后终于等到了两个面试机会!面试第一个小设计公司是我老哥陪我去的,嘻嘻!头一次从家里出来广州搞事,难免有些不知所措!小公司2个面试技术的把我玩弄了三四个小时,从VC,VB,到DEPHILE,到几种常用单片机!幸好我早有准备每个开发环境都背了一个常用例程!演示完例程我就黔驴技穷乐拼命不让那他两再涉及上位机了,结果在单片机定时器捕获和中断里面参数传递及其自定义变量中断压栈问题小探讨了一下,最后他两到后面一个房间呆了十多分钟让我和一个中年人谈谈工资问题,我以为谈的这么开心工资会很高,坐地起价了个3200,那中年人先是来了段当地最低工工资才700多,我的期望太高,最多给我1800,我们像菜市场讨价还价最后决定税后2460元成交,包住外带二个保险套! 我看条件还可以,就装的很痛苦的答应了!毕竟试用期三个月,劳动局发的小册子上说可以随时辞职的!中年人让我一星期内到岗!
第二天我去了顺德美的,已经记不清当时面试的具体题目了,只是记得头几个脑筋急转弯,后面是些递推公式,然后就几个很弱智的人事问题!出来面试肯定是要背题库的!我下载了历年美的的面试题目,复习了一遍,又做了一套仕兰微(做收音机液晶驱动的,以前考试想做个作必器假装申请过ht1621邦定的样片)模拟面试卷,这年头,有实力都会被稀奇古怪的面试挂掉,何况我菜鸟一个!考试监考的是个文员,比较清纯,可能我打小就比较腼腆,学校活动的圈圈中全都是男生,所以没什么美丑概念!只要不是凤姐都是漂亮可爱的!
已经记不清当时面试的具体题目了,只是记得头几个脑筋急转弯,后面是些递推公式,然后就几个很弱智的人事问题!考试完,又和一个人事阿姨谈谈人生愿景,记忆里当时我奋斗目标是成为一名卓越的工程师,不怕苦不怕累!虽然现在我的理想还是没有变化,但是现在想想和人事阿姨谈理想人生比较幼稚可笑!到后来更觉得别扭:才知道他们需要的仅仅是一名普通质检员!所有面试只不过是一个走形式!所以想想当时面试时心里蛮紧张的颇为可笑!不过明白了个道理:凡是面试一个小时还不到专业知识,基本上就可以把公司淘汰了!
然后让我回家等通知!最后到第二天,文员按照我留的电话给我打来,说什么我手机一直关机打不通,他打了一天了,我懊恼:手机明明没关机这么会打不通!我也没客套,直接谈待遇问题!文员有含糊说了1000到5000!然后让我明天去上班!
我正浮想那1000到5000之间的工资是个什么意思!是1000元整还是4999元!最后我老哥给了个建议:职业生涯头三年到大厂做,出来后比较牛逼些!管他什么工资先到大厂混去!
然后我也没给第一次的公司打电话说去不了,后来到时间他们打过来时我编了个小理由委婉地拒绝了!
再后来我直接去了美的,工资低的有一比,试用期就1200元,和很多地方台狗皮膏药广告里面真人秀的第一句台词:抱着试一试的心情。。。我试一试就混混沌沌十来天,每天不知所云地检查端子插拔力啊,pcbA焊接问题啊!再后来班长给洗洗脑,告诉我好好干,他走了就是我的王道!我一度觉得人生这么会是这个样子,我应该出现在有创意,有挑战的设计人员的角色!日子一天天过!后来可能班长觉得我是个人才,其实人才就是在没事找事让你做需要个理由的时候最具有杀伤力的理由!这个理由可能让你心跳加速,兴奋,自我感觉良好!效率提高,其实在他们的意识形态中,人才只是随口说说罢了!或者在解雇你时,装的语重心长地说:你是个人才,应该往高处去,公司庙太小。。。
这个没事找事的活就是不给钱做个检查天马定时器良品率的工装!结果牺牲了我一块开发板!后来报销的事情不知所云!
然后就到了那个潮湿的,水煮白肉的下午。我比较不习惯粤菜,草草吃了个冰激凌,用班长的账号登到外网上聊聊QQ啊,看看猫扑啊,
废话这个多,都没进入主题,不好意思,我这人前奏比较长,对于看日韩欧美片喜欢直接快进到中间的朋友可能有点受不了!
其实很简单,不小心上21IC时看到这个书的,这年头观众看电视剧都习惯了中规中矩,需要点猛料来吸吸眼球!更何况是书呢!我对教材一般兴趣不大,一点感情也没有,对这种调侃类书籍比较有好感!看起来不觉得累!比看PDF强多了!比如《鸟哥的私房菜》啊,《鬼吹灯》啊,还有我即将入手的这本当当网订购的《圈圈教你玩usb》,我老哥帮我网银网银,然后书就到手了,很惊喜后面有个PCB送,后来觉得买零件焊接挺麻烦,就一口气读完了书,丢在一边了!再后来我结余到一个月的钱财,900多元去掉来回路费生活费结余200元,回到了南昌!
学校就是这么个鸟蛋蛋,乱搞什么毕业实习啊,毕业答辩啊,一堆便便!纯属收费!浪费我传道授业解惑的诸多时间,本来200多块钱加上我另外的结余可以带我女朋友去个庐山小玩玩,结果每个星期都要准时点到!再后来就晃一晃,到了课程设计,要做个炮弹打飞机的玩具!(我向来都把这种没有实用价值,没有技术含量的东西叫做玩具或者垃圾!)因为前些天本来想买个带串口并口的笔记本以后工作会方便些,去了趟东方电脑城,发现几乎没带串口的笔记本,只有联想E41但是配置比较垃圾,后来不知道哪条神经出故障被一个皮条客忽悠的买了个宏碁,回来还挺开心送了一大堆礼品,上网一看报价,电脑才3200,我竟然花了5000!那个比热血高校还热血高校啊!估计受骗的人都能够体会出来!我第二天一大早跑到银嘉这鸟公司要求补差价,从早上一直扛到下午下班,终于换到鸿基4740网上最低报价4850!感觉还是被忽悠了150块钱!又继续抗了2小时送了个包包,和清洁液!买回来一看居然上不了xp系统,那个郁闷!不过现在慢慢习惯了windows7 ,只是在usbasp的驱动安装上不是很好用,很多时候下载avr的时候总会中途提示flash已满!即使修改inf安装文件都不能解决根本问题!
搞来搞去我现在电脑上只有三个usb口可以用了!弥足珍贵啊!因为没有串口,我只能用usb做上位机和下位机的通讯接口了!想买块ch374方案的usb转串口,但是以前买过很多的这种转换器,效果不理想,每每传输真酣时,给你机器蓝屏!有了心理阴影!内心比较排斥这类转接期间!索性直接用USB做算了!于是下了个课设范本,修修改改,交了!
幸好,课设费用钱可以报销,但费用不能超过限额!我淘宝了一下,百八十块钱买了个摄像头的交流电机云台,在usb开发板上对比了下性价比,发现网上USB卖的开发板板比我单独买元件焊接还要便宜!于是便买了个,到手发现电路使用数据地址总线复用,而且电路还不一样,本来原来计划把圈爷光盘里的历程花几小时小改一下就算的!没想现在弄得比较麻烦了,想退回去还是使用232串口!但课设文章已经交上去了再拿回来修改比较麻烦!在人事上无用鼓捣可能花我更多时间!到板子上割线搭接飞线切换换到圈爷读写方式式,有点心疼板子,算了还是用硬着头皮往下做吧!毕竟割线是最后保身之举!
花了半小时看完了一遍pdf,英文不好时间有点长,不好意思!
看来来看去觉得更改底层驱动可行,于是便着手开始把圈爷底层驱动方式换为地址数据复用的方式:
在这里和大家分享一下,也算搬个小门小弄个小斧头:
手头上51核类的开发板已经在美的给浪费了,我又不想花太多精力到手上PIC16F877A上做(这块板子加上福州贝能科技的仿真器当时花了我千把块钱,打算进军汽车电子玩CAN总线时候买来的)翻翻床底,除掉一大堆臭袜子想看看还有什么开发板(我这人比较喜欢贪小便宜,只要有免费申请开发板子送的什么讲座啊,网络申请啊都搞搞) 终于在一个潮湿的内裤边上的破箱子里发现了当年宏晶做活动时送的串口烧写器,很庆幸上面座子上还趴着块STC90C52RC,写了个流水灯,看芯片还能跑起来,小开心一下下:能够多报销100块钱烧写器的钱,吃个周黑鸭,小唱个几小时的KTV之类的!
于是开始做了:
我做事情喜欢先理论理论再宏观宏观再到具体细节细节:比较讨厌一头扎到程序里面乱调一气,浪费不少精力结果还淹死在代码的海洋里!先睡个午觉,整理一下思绪:既然PDIUSBD12支持地址数据独立和复用两种,然后再看看芯片引脚定义:发现地址线只有一条:A0,于是便浮想浮想:以往见过的芯片地址一般从A0到A15,现在只有一个A0,是不是其他的地址线不需要就被屏蔽掉了,留下的只有2个地址:0x0000和0x0001,如果我用复用总线驱动是不可以直接读写这两个地址和拉高和置低A0效果一样,都怪PDIUSBD12.pdf上只演示了个地址数据独立独立的时序图!复用的事情一点都没提及,搞得我如此惆怅:
淡定后,开始做了,板子上有个串口,接上去串口好用的一笔,我翻阅了一下keil的帮助手册:找到了读写外部RAM的一点语法规定:在文件C51.PDF里面,184页,
语法:
XBYTE[偏移地址]
比如:XBYTE[0x0000]=m;******************************写八位数据
m=XBYTE[0x0000];******************************读八位数据
于是修改圈圈读取ID值的历程发现编译错误,老是定位在我修改的地方说没有定义,头一个反应就是没有包含定义头文件,那么多头文件让我包含哪一个呢,有点迷茫,懒得再熟悉lib.C帮助文档了,直接ctrl+f,发现有个ABSACC.H的文件被搜索到有定义,打开来看看,找到
#define CBYTE ((unsigned char volatile code *) 0)
这么一句宏定义,看来这个宏定义比较简单,为什么我就想不到指针寻址呢,看来自己和高手确实有差距,赶快笔记本记下这个寻址的指针方式,那么符号[]就是下标表示偏移的意思啦,翻开谭浩强的C语言,看看数组,又对语法更近一步,笔记记下来先!
我一直自我感觉对C语言和汇编比较精通的那种类型,看来只是停留在比较浅的应用上,很多编译器优化指令,还需要多多学习!
好了,加上去,出现几个警告!其实警告我很少理会的:无非就是你写了哪个子函数,但没有被调用啊,或者定义了变量没有在历程里用到啊啊,云云,匆忙生成HEX,忙烧写到芯片里等待激动人心的时刻!
但是读出来确是0xDDD2!怎么会这样!资料被和谐!我一直被假象!匆忙忙掏出虚拟逻辑分析器,接上总线端口,发现整个过程什么反应都没有!我以为单次捕捉可能捕捉不到数据,把读写子码写到while(1)里面重新测试了一遍:发现还是没有什么反应!看来问题出现在单片机上,下载了个stc90c52rd的pdf。
问题终于锁定:
很简单:读写外部RAM必须把内部扩展AUX-RAM关掉,宏晶为了兼容产品,设立了一个傻瓜功能:直接在下载面板上勾选禁止访问。
OK到位,下载,千呼万唤始出来!很到位的successful提示信息,和很到位读到的的ID码!既然是个小玩具,我就不过多在.SRC文件里面优化编译瞎鼓捣了!嘻嘻!接下来就是手动复制粘贴修改了,更龌龊的是,我把凡是涉及到圈圈信息的地方都改掉为我的个人信息,毕竟是个糊弄作业的东西,没啥商业用途!为了腾出时间陪女朋友不得已而为之,况且我已经买过圈爷的正版书籍了!这点龌龊之举希望圈爷谅解!
贴出一个转串口的修改部分:
1.Pdiusbd12.h包含
#include "UsbCore.h"
修改部分:
前面一大坨关于读写的定义都删除,贴上这么一段上去:
//PDIUSBD12芯片连接引脚
#define D12_INT P3_2
//读写数据
#define DATAUSB XBYTE[0X0000]
#define COMMUSB XBYTE[0X0001]
//获取中断引脚电平状态
#define D12GetIntPin() D12_INT
下面命令字不要改!
2.Pdiusbd12.c
修改三个基本函数:直接利用形参传递,看来做成模块化的程序比较好移植啊!感叹自己以前写的固件一坨屎!有时候写到哪里感觉云里雾里的!注释懒得写!不过现在改过来了!渐渐感觉脑子不好使,注释也越来越多了!
/********************************************************************
函数功能:D12写命令。
入口参数:Command:一字节命令。
返 回:无。
备 注:无。
********************************************************************/
void D12WriteCommand(uint8 Command)
{
COMMUSB=Command;
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:读一字节D12数据。
入口参数:无。
返 回:读回的一字节。
备 注:无。
********************************************************************/
uint8 D12ReadByte(void)
{
uint8 temp;
temp=DATAUSB;
return temp; //返回读到数据
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:写一字节D12数据。
入口参数:Value:要写的一字节数据。
返 回:无。
备 注:无。
********************************************************************/
void D12WriteByte(uint8 Value)
{
DATAUSB=Value;
}
////////////////////////End of function//////////////////////////////
其他部分,根据警告提示修改!
附上我的修改程序包包!希望大家指正!
终于疏通好了一个历程,留出几个IO接口,光耦隔离一下,用晶闸管控制交流电机正反转,我一直纳闷,这种云台的电机4条线,单相电源,为啥就可以正反转呢!看看说明书,原来就两组线圈绕接方向相反!同时绕在骨架上,接通一组就正传,另一组反转,和我以前鼓捣我的电风扇线圈装上去装反了,结果叶片是反向转动的!一个道理!
用LM324N搭接了个恒流源,驱动光敏电阻做的电桥!用个小灯泡当做飞机屁股的火焰!云台夹个3块钱激光玩具枪里面的半导体激光头做打飞机用的炮筒!再耗费一个光耦和一个s8550控制它!
上位机先控制大致瞄准个方向,接着启动光敏电桥桥判断四象限位置,大致计算下灯泡移动的速度,然后启动激光器炮弹,整个过程和labview的运动跟踪试验演示视频一个意思。灯泡糊成的飞机模拟尾喷管几乎有一个乒乓球大,外加距离在1米范围缓慢晃动,窗帘用布遮住,没有环境光干扰,射不中几乎是人品问题了!
就这么焊接焊接调试调试改改上位机程序吃吃喝喝一个星期终于搞定了!本来想把usb摄像头也做上去,想想自己VC就那两把刷子,做估计得花我一个多月!最后放弃了!
点到为止,见好就收!
拿出自我感觉对大家有用的一个小移植,和大家一起分享!
程序包包在附件里面!呵呵!
傻笑一下下,毕业跑到在扬州工作已经2个多月了,以前我176的身高但110的体重,昨天到仓库称重一下发现增肥了4斤,养点肉不容易啊!想想我以前大学时的小伙伴在苏州做车载雷达程序回来时兽骨嶙峋!好好的一个人憔悴到骷髅头一般!突然感觉很幸福!争取在下个月胖到120斤去!
现在每天上午玩玩uc/os,下午在新买的mini2440上写写小游戏!偶尔来个小项目画画pcb,写写小程序,做几个简单电控板子,感觉郁闷了再玩弄下新买的andniod系统手机, java写个鸟俄罗斯方块到上面玩玩!
我对linux啊ce啊之类系统的东西不是很感冒!一大坨人都跑去培训linux了!我有次去看了下下,当时讲的好像是槽的概念!听的下面一大群人热血澎湃!视乎恍乎间就成了底层驱动开发大师!我还是喜欢自己看看SDK,在VS上编译几个小程序,下到window-ce上跑跑!喜欢这个样子!哪天对程序框架不甚明了看看书,看着越来越不明了:问别个软件工程师也不甚了解!看来大家知其然不必太深究!程序这种东西能糊弄过去就糊弄过去,糊弄不过去再深究,结果看看别人网站:发现本身就有问题:别人已经提醒你绕开用另外方式代替了!看来这种黑盒子的东西确实不适合深究!
或许哪天发现自己不行了,脑子转不动了!我去培训一下下!但这都是后话了!
前几天去上网,碰见了我以前同乡的一个老哥,聊到技术和工作:很经典的一句话也令我再一次陷入了迷茫:工作就是一碗饭罢了,不必太在意!
我以前一直以为靠我那点技术可以发点小财!所以拼命努力!现在被一句话释然了!释然也好,包袱一下子便卸了下来!生命不能承受之轻!无所事事内心反而越是矛盾起来!
搞电气的大叔一直想把握忽悠到工地上去继承他的衣钵,后来去了一个星期:折了一个FX1S型号PLC,分解了几个电磁阀,玩来玩去,感觉对这种大块头的断路器,液压之类的东东没啥感觉!一直就纳闷咋工资和难度不成正比呢!
可能还是放不下这些年一直鼓捣的东西!
很无聊的一天!偶然又翻到箱底的这本书,写篇文章纪念一下关于这本书带给我的一些小故事!
2010-8-13沈锣坤.扬州
文章评论(0条评论)
登录后参与讨论