犯了一系列愚蠢的错误……
在个小 CPU 上写个读 EEPROM 的代码,每页 EEPROM 有 256 个字节,循环依次读出来,于是顺手一写:
{
read_eeprom();
...
执行之后却没有效果,debug 发现 read_eeprom() 这个函数根本就没有执行,for 循环根本没进去……
愣了半晌,顿悟。因为是一块 8 位的 CPU,所以 256 越界了,被当成 0 了,自然执行不了。
于是立刻顺手一改:
{
read_eeprom();
...
心想这下肯定没问题了~
结果发现写了 256 个数据之后还在写,循环跳不出去了。
愣了两个半晌才醒悟,这次是 i 越界了,8 位的无符号整数数自然永远小于等于 255,汗……
这样的话要咋办捏,难不成要写成:
{
read_eeprom();
if(i == 255)
break;
...
嗯,看上去很郁闷……
最后,终于彻底醒悟:
{
read_eeprom();
...
基础啊基础……
Update: 除了发现上面最后一条又写错之外,还是老老实实用 do_while 了:
read_eeprom();
i++;
}while(i);
终于搞了个热风枪
电路板上的贴片元件,往上焊,很简单,但往下拆,就不那么容易了。
尤其是那种 100 脚的 QFP……
几次向老大提出去买个热风枪,不过老大的观点是: 高手可以用电烙铁搞定一切。
可惜我们都不是高手,在目睹了老大几次花费一整天来用电烙铁拆 IC,最后不是把 IC 引脚搞断,就是把焊盘拔脱落之后,实在忍不住了,自己偷偷去搞了个热风枪。
这东西还真好用,四边引脚的 小 IC 吹两下就可以滑下来了。
不过有的两边 IC,竟然没吹下来,嗯嗯,晚上继续练习一下……
又一本不错的硬件入门书
那就是 《电子电气工程师必知必会》:
很薄的一本小册子。
如果你不是科班出身,只有一点电子学的基础知识,再摸过一阵硬件(比如我 :),那么非常推荐阅读此书。
作者会以诙谐的语言告诉你,其实那些看似枯燥的电子学知识 “并没有那么难”。
最可贵的是,和《嵌入式硬件设计》一样,其中穿插了作者在工作中各个方面的经验教训,这些东西教科书上可没有 。
刚刚读完此书,硬件的世界在我的眼前又明朗了一些~
最后再附上 《嵌入式硬件设计》 的封面:
两本硬件入门经典~
第一块板子出炉
新年新气象,09 年的第一天感觉不错,这个折腾了一个多星期,自己完成设计(在大牛的指导下)、布线的第一张电路板终于出炉了~ 特此纪念一下~
幸运的是虽然有些设计上的瑕疵,但是上电之后马上就欢快的跑起来了,当时那个感觉还真是相当得好~
至此,整个软硬件的选型、设计、布线、加工、焊接全部都熟悉了一遍,现在很有自己制作新硬件的冲动~
接下来继续写软件,内外开攻~
初窥硬件的世界
前阵子学习了不少嵌入式 Linux 的知识,不过可惜目前的项目完全用不到。
只用到一块 Luminary 的小处理器,最大 50MHz 的速度,64KB 的 RAM,来驱动 CCD 和计算数据,一下子变成单片机的活了~
原来见都没见过的示波器、万用表、烙铁,这次竟然全都摸了一遍~
对于专业人士来讲,这个项目是个非常简单的工作,不过对我这个硬件白痴来说,基本上都是新鲜的东西,庆幸当初最先把那本《数字电路》的书啃完,让我没有多少理论上的障碍。
一个星期下来,除了自己焊制电路板,其他的都玩熟练了,收获相当的大。
当初买了本《嵌入式硬件设计》,第一次看的时候,大部分内容不知所云。现在再看,里面的内容简直就像为我设计的~
目前还缺乏一些电子学的知识,除了欧姆定律之外就不知道了,继续啃书~
一直都有一种局限感,不管是拿 Rails 做网站,还是写桌面应用程序,乃至学习 Linux 驱动的时候,心里一直在嘀咕:写这些东西就是我今后所期望的生活吗。
这次初窥了下硬件的世界,这种感觉终于消失了……
原来局限感是来自于没有联系。
希望有一天,我能够自己制作一个有趣的硬件,再为他写一个 Linux 驱动程序,然后再通过 GUI 前端跑在桌面上~