2012年12月10日星期一

Word中链接Excel单元格数据

我的目标是在Word文档的特定位置插入Excel某单元格数据,并实现自动更新(即当Excel某单元格数据发生变化时Word的copy数据也相应变化)。

实现方法

1、打开Word和Excel。
2、在Excel里选择*单元格,并Ctrl+C。
3、在Word文档的特定位置单击,插入光标,选择“菜单栏(F10)-编辑(E)-选择性粘贴-带格式文本(RTF)-确定”,此时,Excel数据带格式地插入了,数据右下方出现“粘贴板图标”,点击该图标并选择“匹配目标格式并链接到Excel(L)”。
4、保存,关闭Word并重新打开。有窗口弹出说“该文档包含引用其他文件的链接。确实要用链接文件中的数据更新该文档吗?”,确定。(每次打开都会有这个现象,确定就好)
5、测试:修改Excel中*单元格的数据,保存,打开Word,看看数据是否变化了,同时,格式应该依旧是Word设定的那种。
6、完成步骤5后,如果你的回答是YES,恭喜你,大功告成了!如果是NO,请重新检查并实施步骤1-5。

注:如果你交互的数据很多,导入时间会挺长的哦。

2012年11月26日星期一

批量导入lightroom预设

先点下修该照片就能看到预设在左侧模板出现了
把预设存在这个文件夹里就可以了C:\Documents and Settings\Administrator\Application Data\Adobe\Lightroom\Develop Presets\

2012年11月16日星期五

To hide additional user accounts on Windows & Logon Use Regedit, also works for Vista & win 7


Tto hide additional user accounts on Windows & Logon Use Regedit, also works for Vista and win 7
Hide User Accounts in windows Vista and Windows 7
at Run type regedit
Once in regedit go to HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon
In the left panel, right click on Winlogon and click New and click Key.
Type SpecialAccounts and press Enter
In the left panel, right click on SpecialAccounts and click New and click Key.
Type UserList and press Enter.
In right panel of UserList, right click on a empty area and click New then click DWORD (32bit) Value.
Type in the name of the user account that you want to hide and press Enter.eg: Everyday Account.
In the right panel, right click on the user account name and click Modify.
To hide the user account – Type 0 and click OK. (number zero not the letter)
Whenever you want to use the account just unhide the it by typing 1 instead of zero.

2012年11月15日星期四

Speed Dial捷徑頁面設定檔位置

問題:
一般會使用chrome browser的人都會使用Speed Dail作為首頁, 將自己常用的網頁以圖片方式呈現在頁中, 方使操作及使用, 但這個好用的機制卻無法備份及轉移, 導致換電腦時, 又要將好不容易收集成的首頁又要重新在做一次, 若能將該機制的首頁採用備份及轉移方式那有多好.
做法:
只要將特定目錄下的檔案備份及還原即可, 其他置如下:
適用於XP
C:\Documents and Settings\**YOURACCOUNT**\Local Settings\Application Data\Google\Chrome\User Data\Default\Local Storage\chrome-extension_dgpdioedihjhncjafcpgbbjdpbbkikmi_0.localstorage
適用於Vista及WIN7
C:\Users\**YOURACCOUNT**\AppData\Local\Google\Chrome\User Data\Default\Local Storage\chrome-extension_dgpdioedihjhncjafcpgbbjdpbbkikmi_0.localstorage

2012年8月7日星期二

日语学习---邀请


今週の土曜日の夜はお暇ですか?
家に来ていただけませんか?

いつもご馳走になるばかりで,なんだか悪いですね.

時間どおりにまいります.
せっかくですが,今日は,ちょっと具合が悪くて...

次の機会にはぜひご一緒にさせてください.

今度の金曜日の夜は,何か予定がありますか?
ご招待,ありがとうございました.

残念ですが,実は先約がございまして,私自身はお伺いできませんが.

ぜひいらっしゃってください.

LightRoom导入预设

直接放入
C:\Documents and Settings\用户名\Application Data\Adobe\Lightroom\Develop Presets\User Presets
就可以了

2012年6月14日星期四

如何禁止键盘上的关机键(Win XP)

1、在屏幕空白处,单击鼠标右键,选择属性。
2、在〈显示 属性〉窗口中选择〈屏幕保护程序〉签。
3、在〈屏幕保护程序〉签中按下〈电源〉按钮。
4、在打开的〈电源选项 属性〉窗口中选择〈高级〉签。
5、在〈高级〉签中有个〈在按下计算机电源按钮时〉下拉框,默认为〈关机〉,将其改选成〈不采取任何措施〉,一路确定,完成设置。

2012年6月6日星期三

2012年5月29日星期二

关于latex的列举



在<一份不太简短的LATEX2" 介绍> Version 3.20, 09 August, 2001, 书中 2.11.1章节介绍了Itemize, Enumerate, and Description, in page 29. 这个在网上很容易就能下载到. 我不详细写了. 只是想想介绍一下我今天解决的一个小问题.

1, 关于 {itemize}里序号的形式 (这个在书里有介绍): latex默认生成的简单列表, 默认为一个小圆点,..... 而我们在写文章时可能想要一些不一样的列表符号, 比如 -, * 之类的. 我们可以这样写:

\begin{itemize}

\item[-] good morning...

\item[-] good morning....

\end{itemize}

生成的列表即为:

- good morning

- good morning

2, 关于{enumerate}, 这是用于带序号的列表. 默认生成 1,2,3..... 如果想要其他修饰, 如上面的(1) (2)... 或step-1, step2. 需要加载 \usepackage{enumerate} . 然后如下使用:

\begin{enumerate}[step 1]

\item good morning...

\item good morning....

\end{enumerate}

enumerate会自动识别 中括号里的数字标签, 生成的文件表示为

step 1 good morning

step 2 good morning

如果我们在中括号里输入[step i], 那么生成的列表是

step i good morning

step ii good morning

2012年5月24日星期四

运程命令行控制

Telnet 命令


未完待续~

2012年5月22日星期二

V12的烦恼1

V12做了很长时间了,从去年年底开始,定方案,小金做的上下电机固定部分,到板子设计,程序重写,拖拖拉拉已有半年时间了。说拖拖拉拉也不正确,期间还有其他的任务,实验等。到最近,基本上成型了,等联调试飞了。最近遇到的几个问题让我的郁闷很多,甚至开始吸烟。最大的问题就是PWM生成的那块,由于ATmega128最多只有6路PWM输出,为了带动12浆,需要12路的PWM,想到了个解决办法就是再加一个ATmega328的单片机用来产生PWM信号。做来做过,发现想要产生12路400Hz、高精度的PWM信号比较困难。因为此前花了很长时间设计,焊制电路,做到后来发现这个问题,着实很郁闷啊。没有办法还只能做下去,看看实际飞的结果再做定论吧。
后来想到以前做Futaba的接收机的PPM解码的时候的发现了。第一个接收机是Hirobo公司做的,只有5路的输出,后来自己定了一个7路的,以为PPM输出就可以变成7路了,实际做才发现,PPM还只是5路,加上来的两路是添加上来的一个芯片来产生的。对于做为一个有点完美主义强迫症的我来说,这样的解决办法多少有点心里不爽。后来想想也就通了,只要好用就可以了,不管是谁、做的什么东西都在不断的完善,况且完善也是需要时间的。

2012年5月16日星期三

Atmega128上电复位问题

还是V12的板子,Atmega128上电基本上不自动复位,而且手动复位几次后才可正常运行,由于手头上没有1608的10K电阻,就简单的加了一个104在reset脚上,另一端接地,再测试上电复位成功率大大提高。等入手1608的10K电阻后焊上再测试试看。

Atmel 的 熔丝位 BODLEVEL 设定为 0 (PROGRAMMED),可以提高复位成功率。

2012年5月15日星期二

注意Atmega128的103兼容模式

今天在做V12的S.Bus解码程序,这次用的Atmel128的片子,不是用的开发板,所以熔丝位是自己设定的。熔丝位也就改了用片外晶振。做Sbus的时候用的是Asynchronous Operation ; Even Parity ; 2-bit stop;8-bit 的串口。程序怎么也不对,通信错误非常多。但同样的程序在开发板上做一点问题没有。程序上找了很长时间的原因,都没有找到,只能又回到硬件上,也考虑过是不是晶振不稳定,是不是要把外壳接地,但网上又说加热晶振会有把晶振弄坏的可能,加上现在又没有大的干扰,故此方法放弃。想来想去也可能就只有熔丝位不同了,找出开发板,读其熔丝位,一位一位的比较,尝试。当改到Extended Fuse 的 Atmega 103 compatibility mode的时候,程序正常了。马上翻看说明书,在USART的UCSRnC的寄存器上发现一行字: Note that this register is not available in ATmega103 compatibility mode.而这个寄存器就是设定SBus的特殊通信方式的。至此问题解决。一共花了近10个小时。总结一下,这个单片机用了3年了,还是有不了解、遗漏的地方,遇到问题哪怕是一点点的问题还是得保持非得弄清楚的信念,不可把问题放过!

2012年4月20日星期五

旁路、退耦、耦合电容的选取

  高手和前辈们总是告诉我们这样的经验法则:“在电路板的电源接入端放置一个1~10μF的电容,滤除低频噪声;在电路板上的电源与地线之间放置一个0.01~0.1μF的电容,滤除高频噪声。”在书店里能够得到的大多数的高速PCB设计、高速数字电路设计的经典教程中也不厌其烦的引用该首选法则(老外俗称Rule of Thumb)。但是为什么要这样使用呢?各位看官,如果你是电路设计高手,你可以去干点别的更重要的事情了,因为以下的内容仅是针对我等入门级甚至是门外级菜鸟。
做电路的人都知道需要在芯片附近放一些小电容,至于放多大?放多少?怎么放?将该问题讲清楚的文章很多,只是比较零散的分布于一些前辈的大作中。鄙人试着采用拾人牙慧的方法将几个问题放在一起讨论,希望能加深对该问题的理解;如果很不幸,这些对你的学习和工作正好稍有帮助,那我不胜荣幸的屁颠屁颠的了。(以上有些话欠砍,在此申明以上不是我所写)
什么是旁路?
clip_image004
  旁路(Bypass),在电路中为了改变某条支路的频率特性,使得它在某些频段内存在适当的阻值,而在另一些频段内则处于近似短路的状态,于是便产生了旁路电容的概念。旁路电容之所以为旁路电容,是因为它旁边还存在着一条主路,而并不是某些电容天生就是用来做旁路电容的,也就是说什么种类的电容都可以用来做旁路电容,关键在于电容容值的大小合适与否。旁路电容并不是电解电容或是陶瓷电容的专利。之所以低频电路中多数旁路电容都采用电解电容原因在于陶瓷电容容值难以达到所需要的大小。
使用旁路电容的目的就是使旁路电容针对特定频率以上的信号相对于主路来说是短路的。如图形式:要求旁路电容需要取值的大小;
已知:1、旁路电容要将流经电阻R的频率高于f的交流信号近似短路。求旁路电容的大小?
:旁路电容C的目的就是在频率f以上将原本流经R的绝大多数电流短路;也即频率为f时,容抗远小于电阻值;
clip_image006clip_image008
当f=1khz,R=1k时,C应该远大于0.16uf。因此取47uf已近很足够了,当然再大一点也不为过,100uf都还算能接受,电容适当增大可以使得旁路更充分,而且在给定频率以上支路的品质因数更低,也就使得整个支路表现出来的容性更弱,支路对信号相位的影响更小,笔者认为旁路电容的值在上述计算值的100到1000倍都可以接受。不过如果要是大于上式计算出的值的5000倍就不太好了。不过再大也不会得到多少回报,甚至有可能带来不好的后果,因为实际的电容永远都不是一个纯粹的电容。电容越大带来的其分布电感也将更显著。
什么是耦合?
耦合,有联系的意思。单元电路级联时,中间如果采用的是电容来传递信号,能量通过电容从前级传至后级,则此电容即耦合电容,作为耦合电容就应当使得两级的直流信号无法串通,只有交流信号得以通过,正因为如此使得静态的设置不相互影响,那么耦合电容该如何设定呢?
clip_image010
已知:如图,Rs表征了前级的输出电阻,R表征了后级的输入电阻,级间传递的信号频率在f以上求C的大小。
:要求信号尽可能多的传到R则C的容抗应当远小于R即:
clip_image012
如果R=5000,需要传输的信号频率为1000hz以上,则C=0.032uf
因此3.2uf便可以了,当然适当大点会更好啊,一般的电路输入电阻求起来不是一下两下的是,因而笔者建议将输入电阻取个大概的较小的值然后估算出电容的值,稍微大一点,不会有问题。
由上式可知C的大小不受Rs的影响。那么Rs到底影响了什么呢?当Rs较大时,R便相对更小,前级信号传递到后级的电压值更小,也就是Rs太大,或是R太小,那么增加电容的值(即加深级间耦合的程度)也无法挽回大局,电压信号还是会降低很多。
什么是退耦?
退耦(Decouple),最早用于多级电路中,为保证前后级间传递信号而不互相影响各级静态工作点的而采取的措施。在电源中退耦表示,当芯片内部进行开关动作或输出发生变化时,需要瞬时从电源线上抽取较大电流,该瞬时的大电流可能导致电源线上电压的降低,从而引起对自身和其他器件的干扰。为了减少这种干扰,需要在芯片附近设置一个储电的“小水池”以提供这种瞬时的大电流能力。
clip_image014在电源电路中,旁路和退耦都是为了减少电源噪声。旁路主要是为了减少电源上的噪声对器件本身的干扰(自我保护);退耦是为了减少器件产生的噪声对电源的干扰(家丑不外扬)。有人说退耦是针对低频、旁路是针对高频,我认为这样说是不准确的,高速芯片内部开关操作可能高达上GHz,由此引起对电源线的干扰明显已经不属于低频的范围,为此目的的退耦电容同样需要有很好的高频特性。本文并不刻意区分退耦和旁路,认为都是为了滤除噪声,而不管该噪声的来源。
退耦电路的形式当然不只上面图示的那样,退耦电路就一个作用就是稳定电源的电压,使电源电压不发生动摇,如果电源电压都动摇了,那么整个电路的静态都在摇,势必使得输出的信号不理想。退耦,顾名思义就是减退耦合,使得电源与后级,后级的级与级之间没有交流信号的串扰,如此而已,而之所以用两个电容只是为了达到优势互补,达到较好的隔交流的作用。
如有错漏。就跟我说说,谢谢。


















2012年3月20日星期二

关于滤波电容、去耦电容、旁路电容作用及其原理

From: http://hi.baidu.com/fdppjwqd/blog/item/60f89af282ef05baa50f5294.html/cmtid/ca07bde57b1f8b21b83820a8
从电路来说,总是存在驱动的源和被驱动的负载。如果负载电容比较大,驱动电路要把电容充电、放电,才能完成信号的跳变,在上升沿比较陡峭的时候,电流比较大,这样驱动的电流就会吸收很大的电源电流,由于电路中的电感,电阻(特别是芯片管脚上的电感,会产生反弹),这种电流相对于正常情况来说实际上就是一种噪声,会影响前级的正常工作。这就是耦合。
去藕电容就是起到一个电池的作用,满足驱动电路电流的变化,避免相互间的耦合干扰。
旁路电容实际也是去藕合的,只是旁路电容一般是指高频旁路,也就是给高频的开关噪声提高一条低阻抗泄防途径。高频旁路电容一般比较小,根据谐振频率一般是0.1u,0.01u等,而去耦合电容一般比较大,是10u或者更大,依据电路中分布参数,以及驱动电流的变化大小来确定。
去耦和旁路都可以看作滤波。去耦电容相当于电池,避免由于电流的突变而使电压下降,相当于滤纹波。具体容值可以根据电流的大小、期望的纹波大小、作用时间的大小来计算。去耦电容一般都很大,对更高频率的噪声,基本无效。旁路电容就是针对高频来的,也就是利用了电容的频率阻抗特性。电容一般都可以看成一个RLC串联模型。在某个频率,会发生谐振,此时电容的阻抗就等于其ESR。如果看电容的频率阻抗曲线图,就会发现一般都是一个V形的曲线。具体曲线与电容的介质有关,所以选择旁路电容还要考虑电容的介质,一个比较保险的方法就是多并几个电容。
去耦电容在集成电路电源和地之间的有两个作用:一方面是本集成电路的蓄能电容,另一方面旁路掉该器件的高频噪声。数字电路中典型的去耦电容值是0.1μF。这个电容的分布电感的典型值是5μH。0.1μF的去耦电容有5μH的分布电感,它的并行共振频率大约在7MHz左右,也就是说,对于10MHz以下的噪声有较好的去耦效果,对40MHz以上的噪声几乎不起作用。1μF、10μF的电容,并行共振频率在20MHz以上,去除高频噪声的效果要好一些。每10片左右集成电路要加一片充放电电容,或1个蓄能电容,可选10μF左右。最好不用电解电容,电解电容是两层薄膜卷起来的,这种卷起来的结构在高频时表现为电感。要使用钽电容或聚碳酸酯电容。去耦电容的选用并不严格,可按C=1/F,即10MHz取0.1μF,100MHz取0.01μF。
退耦原理: (去耦即退耦)
高手和前辈们总是告诉我们这样的经验法则:“在电路板的电源接入端放置一个1~10μF的电容,滤除低频噪声;在电路板上每个器件的电源与地线之间放置一个0.01~0.1μF的电容,滤除高频噪声。”在书店里能够得到的大多数的高速PCB设计、高速数字电路设计的经典教程中也不厌其烦的引用该首选法则(老外俗称Rule of Thumb)。但是为什么要这样使用呢?
首先就我的理解介绍两个常用的简单概念。
什么是旁路?旁路(Bypass),是指给信号中的某些有害部分提供一条低阻抗的通路。电源中高频干扰是典型的无用成分,需要将其在进入目标芯片之前提前干掉,一般我们采用电容到达该目的。用于该目的的电容就是所谓的旁路电容(Bypass Capacitor),它利用了电容的频率阻抗特性(理想电容的频率特性随频率的升高,阻抗降低,这个地球人都知道),可以看出旁路电容主要针对高频干扰(高是相对的,一般认为20MHz以上为高频干扰,20MHz以下为低频纹波)。
什么是退耦?退耦(Decouple), 最早用于多级电路中,为保证前后级间传递信号而不互相影响各级静态工作点的而采取的措施。在电源中退耦表示,当芯片内部进行开关动作或输出发生变化时,需 要瞬时从电源在线抽取较大电流,该瞬时的大电流可能导致电源在线电压的降低,从而引起对自身和其他器件的干扰。为了减少这种干扰,需要在芯片附近设置一个 储电的“小水池”以提供这种瞬时的大电流能力。
在电源电路中,旁路和退耦都是为了减少电源噪声。旁路主要是为了减少电源上的噪声对器件本身的干扰(自我保护);退耦是为了减少器件产生的噪声对电源的干扰(家丑不外扬)。有人说退耦是针对低频、旁路是针对高频,我认为这样说是不准确的,高速芯片内部开关操作可能高达上GHz,由此引起对电源线的干扰明显已经不属于低频的范围,为此目的的退耦电容同样需要有很好的高频特性。本文以下讨论中并不刻意区分退耦和旁路,认为都是为了滤除噪声,而不管该噪声的来源。
简单说明了旁路和退耦之后,我们来看看芯片工作时是怎样在电源线上产生干扰的。我们建立一个简单的IO Buffer模型,输出采用图腾柱IO驱动电路,由两个互补MOS管组成的输出级驱动一个带有串联源端匹配电阻的传输线(传输线阻抗为Z0)。
设电源引脚和地引脚的封装电感和引线电感之和分别为:Lv和Lg。两个互补的MOS管(接地的NMOS和接电源的PMOS)简单作为开关使用。假设初始时刻传输在线各点的电压和电流均为零,在某一时刻器件将驱动传输线为高电平,这时候器件就需要从电源管脚吸收电流。在时间T1,使PMOS管导通,电流从PCB板上的VCC流入,流经封装电感Lv,跨越PMOS管,串联终端电阻,然后流入传输线,输出电流幅度为VCC/(2×Z0)。电流在传输线网络上持续一个完整的返回(Round-Trip)时间,在时间T2结束。之后整个传输线处于电荷充满状态,不需要额外流入电流来维持。当电流瞬间涌过封装电感Lv时,将在芯片内部的电源提供点产生电压被拉低的扰动。该扰动在电源中被称之为同步开关噪声(SSN,Simultaneous Switching Noise;SSO,Simultaneous Switching Output Noise)或Delta I噪声。
在时间T3,关闭PMOS管,这一动作不会导致脉冲噪声的产生,因为在此之前PMOS管一直处于打开状态且没有电流流过的。同时打开NMOS管,这时传输线、地平面、封装电感Lg以及NMOS管形成一回路,有瞬间电流流过开关B,这样在芯片内部的地结点处产生参考电平点被抬高的扰动。该扰动在电源系统中被称之为地弹噪声(Ground Bounce,我个人读着地tan)。
              实际电源系统中存在芯片引脚、PCB走线、电源层、底层等任何互联机都存在一定电感值,因此上面就IC级分析的SSN和地弹噪声在进行Board Level分析时,以同样的方式存在,而不仅仅局限于芯片内部。就整个电源分布系统来说(Power Distribute System)来说,这就是所谓的电源电压塌陷噪声。因为芯片输出的开关操作以及芯片内部的操作,需要瞬时的从电源抽取较大的电流,而电源特性来说不能快速响应该电流变化,高速开关电源开关频率也仅有MHz量级。为了保证芯片附近电源在线的电压不至于因为SSN和地弹噪声降低超过器件手册规定的容限,这就需要在芯片附近为高速电流需求提供一个储能电容,这就是我们所要的退耦电容。
所以电容重要分布参数的有三个:等效串联电阻ESR 等效串联电感ESL 、等效并联电阻EPR Rp 。其中最重要的是ESR、 ESL,实际在分析电容模型的时候一般只用RLC简化模型,即分析电容的C、ESR、ESL。因为寄生参数的影响,尤其是ESL的影响,实际电容的频率特性表现出阻抗和频率成“V”字形的曲线,低频时随频率的升高,电容阻抗降低;当到最低点时,电容阻抗等于ESR;之后随频率的升高,阻抗增加,表现出电感特性(归功于ESL)。因此对电容的选择需要考虑的不仅仅是容值,还需要综合考虑其他因素。
所有考虑的出发点都是为了降低电源地之间的感抗(满足电源最大容抗的条件下),在有瞬时大电流流过电源系统时,不至于产生大的噪声干扰芯片的电源地引脚。
电容的频率特性
  当频率很高时,电容不再被当做集总参数看待,寄生参数的影响不可忽略。寄生参数包括Rs,等效串联电阻(ESR)和Ls等效串联电感(ESL)。电容器实际等效电路如图1所示,其中C为静电容,1Rp为泄漏电阻,也称为绝缘电阻,值越大(通常在GΩ级以上),漏电越小,性能也就越可靠。因为Pp通常很大(GΩ级以上),所以在实际应用中可以忽略,Cda和Rda分别为介质吸收电容和介质吸收电阻。介质吸收是一种有滞后性质的内部电荷分布,它使快速放电后处于开路状态的电容器恢复一部分电荷。
  ESR和ESL对电容的高频特性影响最大,所以常用如图1(b)所示的串联RLC简化模型,可以计算出谐振频率和等效阻抗:
 
914faf21f9422c079922ed9e
 
图1 去耦电容模型图
 
b81c79506a97ce5b0df3e39e
 电容器串联RLC模型的频域阻抗图如图2所示,电容器在谐振频率以下表现为容性;在谐振频率以上时表现为感性,此时的电容器的去耦作用逐渐减弱。同时还发现,电容器的等效阻抗随着频率的增大先减小后增大,等效阻抗最小值为发生在串联谐振频率处的ESR。
 
29c99b0cf8466b9f7acbe19e
 
图2 电容器串联RLC模型的频域阻抗图
由谐振频率式(4-8)可得出,容值大小和ESL值的变化都会影响电容器的谐振频率,如图3所示。由于电容在谐振点的阻抗最低,所以设计时尽量选用fR和实际工作频率相近的电容。在工作频率变化范围很大的环境中,可以同时考虑一些fR较小的大电容与fR较大的小电容混合使用。
 
bd183ec88d7eb613f31fe79e
 
 
图3 容值和ESL的变化对电容器频率特性的影响v

































退耦电容的选择

From:http://hi.baidu.com/bigbigeasy/blog/item/25ca4d4a194f872208f7efb1.html

          高手和前辈们总是告诉我们这样的经验法则:“在电路板的电源接入端放置一个1~10μF的电容,滤除低频噪声;在电路板上每个器件的电源与地线之间放置一个0.01~0.1μF的电容,滤除高频噪声。”在书店里能够得到的大多数的高速PCB设计、高速数字电路设计的经典教程中也不厌其烦的引用该首选法则(老外俗称Rule of Thumb)。但是为什么要这样使用呢?各位看官,如果你是电路设计高手,你可以去干点别的更重要的事情了,因为以下的内容仅是针对我等入门级甚至是门外级菜鸟。
         做电路的人都知道需要在芯片附近放一些小电容,至于放多大?放多少?怎么放?将该问题讲清除的文章很多,只是比较零散的分布于一些前辈的大作中。鄙人试着采用拾人牙慧的方法将几个问题放在一起讨论,希望能加深对该问题的理解;如果很不幸,这些对你的学习和工作正好稍有帮助,那我不胜荣幸的屁颠屁颠的了。
          首先就我的理解介绍两个常用的简单概念。
          什么是旁路?旁路(Bypass),是指给信号中的某些有害部分提供一条低阻抗的通路。电源中高频干扰是典型的无用成分,需要将其在进入目标芯片之前提前干掉,一般我们采用电容到达该目的。用于该目的的电容就是所谓的旁路电容(Bypass Capacitor),它利用了电容的频率阻抗特性(理想电容的频率特性随频率的升高,阻抗降低,这个地球人都知道),可以看出旁路电容主要针对高频干扰(高是相对的,一般认为20MHz以上为高频干扰,20MHz以下为低频纹波)。
         什么是退耦?退耦(Decouple),最早用于多级电路中,为保证前后级间传递信号而不互相影响各级静态工作点的而采取的措施。在电源中退耦表示,当芯片内部进行开关动作或输出发生变化时,需要瞬时从电源线上抽取较大电流,该瞬时的大电流可能导致电源线上电压的降低,从而引起对自身和其他器件的干扰。为了减少这种干扰,需要在芯片附近设置一个储电的“小水池”以提供这种瞬时的大电流能力。
         在电源电路中,旁路和退耦都是为了减少电源噪声。旁路主要是为了减少电源上的噪声对器件本身的干扰(自我保护);退耦是为了减少器件产生的噪声对电源的干扰(家丑不外扬)。有人说退耦是针对低频、旁路是针对高频,我认为这样说是不准确的,高速芯片内部开关操作可能高达上GHz,由此引起对电源线的干扰明显已经不属于低频的范围,为此目的的退耦电容同样需要有很好的高频特性。本文以下讨论中并不刻意区分退耦和旁路,认为都是为了滤除噪声,而不管该噪声的来源。
         简单说明了旁路和退耦之后,我们来看看芯片工作时是怎样在电源线上产生干扰的。我们建立一个简单的IO Buffer模型,输出采用图腾柱IO驱动电路,由两个互补MOS管组成的输出级驱动一个带有串联源端匹配电阻的传输线(传输线阻抗为Z0)。
        为了做成纯文档的格式,尽量采用文字说明,不不采用图片,这样给理解带来一定的困难,看官们见笑了。设电源引脚和地引脚的封装电感和引线电感之和分别为:Lv和Lg。两个互补的MOS管(接地的NMOS和接电源的PMOS)简单作为开关使用。假设初始时 刻传输线上各点的电压和电流均为零,在某一时刻器件将驱动传输线为高电平,这时候器件就需要从电源管脚吸收电流。在时间T1,使PMOS管导通,电流从PCB板上的VCC流入,流经封装电感Lv,跨越PMOS管,串联终端电阻,然后流入传输线,输出电流幅度为VCC/(2×Z0)。电流在传输线网络上持续一个完整的返回(Round-Trip)时间,在时间T2结束。之后整个传输线处于电荷充满状态,不需要额外流入电流来维持。当电流瞬间涌过封装电感Lv时,将在芯片内部的电源提供点产生电压被拉低的扰动。该扰动在电源中被称之为同步开关噪声(SSN,Simultaneous Switching Noise;SSO,Simultaneous Switching Output Noise)或Delta I噪声。
          在时间T3,关闭PMOS管,这一动作不会导致脉冲噪声的产生,因为在此之前PMOS管一直处于打开状态且没有电流流过的。同时打开NMOS管,这时传输线、地平面、封装电感Lg以及NMOS管形成一回路,有瞬间电流流过开关B,这样在芯片内部的地结点处产生参考电平点被抬高的扰动。该扰动在电源系统中被称之为地弹噪声(Ground Bounce,我个人读着地tan)。
实际电源系统中存在芯片引脚、PCB走线、电源层、底层等任何互连线都存在一定电感值,因此上面就IC级分析的SSN和地弹噪声在进行Board Level分析时,以同样的方式存在,而不仅仅局限于芯片内部。就整个电源分布系统来说(Power Distribute System)来说,这就是所谓的电源电压塌陷噪声。因为芯片输出的开关操作以及芯片内部的操作,需要瞬时的从电源抽取较大的电流,而电源特性来说不能快速响应该电流变化,高速开关电源开关频率也仅有MHz量级。为了保证芯片附近电源线上的电压不至于因为SSN和地弹噪声降低超过器件手册规定的容限,这就需要在芯片附近为高速电流需求提供一个储能电容,这就是我们所要的退耦电容。
         如果电容是理想的电容,选用越大的电容当然越好了,因为越大电容越大,瞬时提供电量的能力越强,由此引起的电源轨道塌陷的值越低,电压值越稳定。但是,实际的电容并不是理想器件,因为材料、封装等方面的影响,具备有电感、电阻等附加特性;尤其是在高频环境中更表现的更像电感的电气特性。我们都知道实际电容的模型简单的以电容、电阻和电感建立。除电容的容量C以外,还包括以下寄生参数:
         1、等效串联电阻ESR(Resr):电容器的等效串联电阻是由电容器的引脚电阻与电容器两个极板的等效电阻相串联构成的。当有大的交流电流通过电容器,Resr使电容器消耗能量(从而产生损耗),由此电容中常用用损耗因子表示该参数。
         2、等效串联电感ESL(Lesl):电容器的等效串联电感是由电容器的引脚电感与电容器两个极板的等效电感串联构成的。
         3、等效并联电阻EPR Rp :就是我们通常所说的电容器泄漏电阻,在交流耦合应用、存储应用(例如模拟积分器和采样保持器)以及当电容器用于高阻抗电路时,Rp是一项重要参数,理想电容器中的电荷应该只随外部电流变化。然而实际电容器中的Rp使电荷以RC时间常数决定的速度缓慢泄放。
          还是两个参数RDA、CDA 也是电容的分布参数,但在实际的应该中影响比较小,这就省了吧。所以电容重要分布参数的有三个:ESR、ESL、EPR。其中最重要的是ESR、 ESL,实际在分析电容模型的时候一般只用RLC简化模型,即分析电容的C、ESR、ESL。因为寄生参数的影响,尤其是ESL的影响,实际电容的频率特性表现出阻抗和频率成“V”字形的曲线,低频时随频率的升高,电容阻抗降低;当到最低点时,电容阻抗等于ESR;之后随频率的升高,阻抗增加,表现出电感特性(归功于ESL)。因此对电容的选择需要考虑的不仅仅是容值,还需要综合考虑其他因素。包括:
1、电容容值;2、电介质材料;3、电容的几何尺寸和放置位置。
          所有考虑的出发点都是为了降低电源地之间的感抗(满足电源最大容抗的条件下),在有瞬时大电流流过电源系统时,不至于产生大的噪声干扰芯片的电源地引脚。选用常见的有两种方法计算所需的电容:
简单方法:由输出驱动的变化计算所需退耦电容的大小;
复杂方法:由电源系统所允许的最大的感抗计算退耦电容的大小。
         我们假设一个模型,在一个Vcc=3.3V的SRAM系统中,有36根输出数据线,单根数据线的负载为Cload=30pF(相当的大了),输出驱动需要在Tr=2ns(上升时间)内将负载从0V驱动到3.3V,该芯片资料里规定的电源电压要求是3.3V+0.3V/-0.165V。
         可以看出在SRAM的输出同时从0V上升到3.3V时,从电源系统抽取的电流最大,我们选择此时计算所需的退耦电容量。我们采用第一种计算方法进行计算,单根数据线所需要的电流大小为:
         I=Cload×(dV/dt)=30pF×(3V/2ns)=45mA;
        36根数据线同时翻转时的电流大小为Itot=45mA×36=1.62A。芯片允许的供电电压降为0.165V,假设我们允许该芯片在电源线上因为SSN引入的噪声为50mV,那么所需要的电容退耦电容为:
       C=I×(dt/dV)=1.62A×(2ns/50mV)=64nF;
         从标准容值表中选用两个34nF的电容进行并联以完成该值,正如上面提到的退耦电容的选择在实际中并不是越大越好,因为越大的电容具有更大的封装,而更大的封装可能引入更大的ESL,ESL的存在会引起在IC引脚处的电压抖动(Glitching),这个可以通过V=L×(di/dt)公式来说明,常见贴片电容的L大约是1.5nH,那么V=1.5nH×(1.62A/2ns)=1.2V,考虑整个Bypass回路的等效电感之后,实际电路中glitch会小于该值。通过前人做的一些仿真的和经验的数据来看,退耦电容上的Glitch与同时驱动的总线数量有很大关系。
         因为ESL在高频时觉得了电源线上的电流提供能力,我们采用第二种方法再次计算所需的退耦电容量。这中方法是从Board Level考虑单板,即从Bypass Loop的总的感抗角度进行电容的计算和选择,因此更具有现实意义,当然需要考虑的因素也就越多,实际问题的解决总是这样,需要一些折中,需要一点妥协。
        同样使用上面的假设,电源系统的总的感抗最大:
         Xmax=(dV/dI)=0.05/1.62=31m欧;
         在此,需要说明我们引入的去耦电容是为了去除比电源的去耦电容没有滤除的更高频率的噪声,例如在电路板级参数中串联电感约为Lserial=5nH,那么电源的退耦频率:
         Fbypass=Xmax/(2pi×Lserial)=982KHz,这就是电源本身的滤波频率,当频率高于此频率时,电源电路的退耦电路不起作用,需要引入芯片的退耦电容进行滤波。另外引入另外一个参数——转折点频率Fknee,该频率决定了数字电路中主要的能量分布,高于该频率的分量认为对数字电路的上升沿和下降沿变化没有贡献。在High-Speed Digital Design:A Hand Book of Black Magic这本书的第一章就详细的讨论了该问题,在此不进行详细说明。只是引入其中推倒的公式:
      Fknee=(1/2×Tr)=250MHz,其中Tr=2ns;
可见Fknee远远大于Fbypass,5nH的串联电感肯定是不行了。那么计算:
      Ltot=Xmax/(2pi×Fknee)=(Xmax×Tr/pi)=19.7pH;
如前面提到的常见的贴片电容的串联电感在1.5nH左右,所需要的电容个数是:
       N=(Lserial/Ltot)=76个,另外当频率降到Fbypass的时候,也应该满足板级容抗需要即:
Carray=(1/(2pi×Fbypass×Xmax))=5.23uF;
Celement=Carray/N=69nF;
          哇噻,真不是一个小数目啊,这么多啊!如果单板上还有其他器件同时动作,那么需要更多的电容呢!如果布不下,只能选择其他具有更小电感值的电容了。
      电容选择上都采用的MLCC的电容进行退耦,常见的MLCC的电容因为介质的不同可以进行不同的分类,可以分成NPO的第一类介质,X7R和Z5V等的第二、三类介质。EIA对第二、三类介质使用三个字母,按照电容值和温度之间关系详细分类为:
第一个数字表示下限类别温度:
X:-55度;Y:-30度;Z:+10度
第二个数字表示上限温度:
4:+65度;5:+85度;6:105度;7:125度;8:150度;
第三个数字表示25度容量误差:
P:+10%/-10%;R:+15%/-15%;S:+22%/-22%;
T:+22%/-33%;U:+22%/-56%;V:+22%/-82%
        例如我们常见的Z5V,表示工作温度是10度~85度,标称容量偏差+22%/-82%,就这玩意儿我们还大用特用啊。
          介质性能好的电容容量做不大,容量大的介质常量不好,生活啊,你怎么总是这么矛盾啊!尤其重要的一点是MLCC电容提供的电容值都是指静电容量,表示电容在很低的电压下测试得到的电容量,当电容的两端的直流电压在不超过电容耐压下加大时电容量将急剧下降,例如在某耐压16V 的MLCC电容的测试数据中有:
0V-->100%,8V——>86%,12V——>68%,16V——55%。
       我就因为没有注意该特性在某电路设计中出现了惨痛的教训。
         最后关于电容放置的位置,还得引用前辈们的口头禅:“The rule of thumb is to place the capacitor as close as possible to the IC.”
          本来以为自己可以写出藏之名山,传世不朽的大作的,写着写着就不想写了,关键还是肚子里没货,就不污染大家的眼睛了,也不误导看客了。



两种系鞋带的方法-不容易松开的运动鞋鞋带系法

方法(一)

9A13225147


2E13225402
运动鞋鞋带系法比较结实,不容易松开
方法(2)

1313226711

这种运动鞋鞋带系法,系上的鞋带结非常牢固!!!

2012年3月2日星期五

折紙盒

1

2

3
4
5
6
7
8

9

10

2012年2月21日星期二

怎样提高指弹吉他的演奏水平


首先:指弹吉他是一种演奏方式!比较准确地说,Fingerstyle是一种technique(技巧。更多地指向身体上的[physical]动作而非感觉。


指弹技巧是一种独立使用右手的每根手指按:有人用左手弹琴,所以这个多伦多指弹吉他协会的定义也不是那么准确,同时弹出通常一个乐队多个角色分工下的多个部分,包括贝斯、伴奏、旋律、以及打击乐。

如果你花一点时间来思考、理解下面这些建议,并按照它们去做,相信会帮助你提高指弹吉他技艺,成为一个更好的吉他手。












在每一次移动手指时,要思考你的下一个动作。

每当你练习的时候,要注意你的全身是否协调。

追究每一个错误的细节,在头脑中清楚明确地知道发生了什么。是哪个音少弹了或没弹准?应该用哪个手指去按弦?在按弦之前手指应该停留在哪个位置,作什么准备?

尽量多在他人面前演奏。每一次都要清楚地意识到自己的感觉如何,弹奏如何,身体上是否有紧张感?情感上是否投入了?在心理上是紧张、焦虑,还是感到了演奏音乐的快乐?这些分析有助于你了解自己,看在哪些地方需要提高,成为一个成熟的演奏者
每天都坚持给自己的弹奏录音。仔细听自己的弹奏,从中找出你最不满意的部分,想想如何能把它弹得更好。

将你的手指看作是不同的人,你可以假想它们有自己的名字,他们在一起是一个乐队,互相配合。每当你用一个手指按弦时,你要想象自己就是那个手指人。这种想象可以让你在弹奏中更细腻地体验手指的感觉。缺乏对手指的感觉是引起各种演奏上技术难度的根源。

练习时前面放块镜子,对照镜子看自己的身体、手臂和手指。仔细体会并发现自己身上、手上是否有肌肉紧张、不顺畅的地方。确保你的坐姿和持琴的姿势没有给你带来任何不舒服

争取让错误只出现一次。在练琴的过程中出错是难免的,但不要盲目地重复你所弹错的地方,先停下来思考一下导致错误的原因,发现它并改进它,让你的手按你的意志弹出正确的结果。把每一个错误都看成是一次学习的机会,找原因并改进

在你的面前除了曲谱之外,还要放着一个记录本,每当你发现了自己的弱点,或最需要改进的地方,或需要加强练习的地方,都要把它们写下来,还要再写出你决定如何改进。把它经常放在你面前,或打印出来钉在某个地方让自己能经常看到。经过这种反复的提醒,在下一次练习时你会下意识地注意。

使用节拍器,把它当作你提高技术不可缺的工具。弹奏速度是慢慢建立起来的,比如,先从60BPM开始,一个音弹奏4拍(这是一个慢得很痛苦的速度),在这个速度上发现自己手指和身体的肌肉紧张感,放松并消除紧张感。然后到80BPM,100BPM。回过头来再重新用60BPM这次一个音弹奏2拍,接着再上到80BPM,100BPM。按照这样的循环再练习一个音1拍,1/8音符,最后是1/16音符,慢慢再由100BPM上升到你能达到的极限

google chrome无法显示pdf


最近的开发版是集成PDF浏览的。在插件管理里打开即可
地址栏输入chrome://plugins/ 回车就能看到PDF的项目

2012年2月18日星期六

指针类型转换


    当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋
值号的右边是一个指针表达式。在我们前面所举的例子中,绝大多数情况下,指
针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向
的类型是一样的。 
例十四: 
          1。  float f=12.3; 
          2。  float *fptr=&f; 
          3。  int *p; 
    在上面的例子中,假如我们想让指针p指向实数f,应该怎么搞?是用下面的
语句吗? 
          p=&f; 
    不对。因为指针p的类型是int*,它指向的类型是int。表达式&f的结果是一
个指针,指针的类型是float*,它指向的类型是float。两者不一致,直接赋值的
方法是不行的。至少在我的MSVC++6.0上,对指针的赋值语句要求赋值号两边的类
型一致,所指向的类型也一致,其它的编译器上我没试过,大家可以试试。为了
实现我们的目的,需要进行“强制类型转换”: 
          p=(int*)&f; 
    如果有一个指针p,我们需要把它的类型和所指向的类型改为TYEP*和TYPE,
那么语法格式是: 
          (TYPE*)p; 
    这样强制类型转换的结果是一个新指针,该新指针的类型是TYPE*,它指向的
类型是TYPE,它指向的地址就是原指针指向的地址。而原来的指针p的一切属性都
没有被修改。 


    一个函数如果使用了指针作为形参,那么在函数调用语句的实参和形参的结
合过程中,也会发生指针类型的转换。 
例十五: 
          void fun(char*); 
          int a=125,b; 
          fun((char*)&a); 
           ... 
           ... 
          void fun(char*s) 
          { 
              char c; 
              c=*(s+3);*(s+3)=*(s+0);*(s+0)=c; 
              c=*(s+2);*(s+2)=*(s+1);*(s+1)=c; 
          } 
    注意这是一个32位程序,故int类型占了四个字节,char类型占一个字节。函
数fun的作用是把一个整数的四个字节的顺序来个颠倒。注意到了吗?在函数调用
语句中,实参&a的结果是一个指针,它的类型是int *,它指向的类型是int。形
参这个指针的类型是char*,它指向的类型是char。这样,在实参和形参的结合过
程中,我们必须进行一次从int*类型到char*类型的转换。结合这个例子,我们可
以这样来想象编译器进行转换的过程:编译器先构造一个临时指针 char*temp,
然后执行temp=(char*)&a,最后再把temp的值传递给s。所以最后的结果是:s的
类型是char*,它指向的类型是char,它指向的地址就是a的首地址。 


    我们已经知道,指针的值就是指针指向的地址,在32位程序中,指针的值其
实是一个32位整数。那可不可以把一个整数当作指针的值直接赋给指针呢?就象
下面的语句: 
         unsigned int a; 
         TYPE *ptr;//TYPE是int,char或结构类型等等类型。 
          ... 
          ... 
         a=20345686; 
         ptr=20345686;//我们的目的是要使指针ptr指向地址20345686(十进制
) 
         ptr=a;//我们的目的是要使指针ptr指向地址20345686(十进制) 
    编译一下吧。结果发现后面两条语句全是错的。那么我们的目的就不能达到
了吗?不,还有办法: 
         unsigned int a; 
         TYPE *ptr;//TYPE是int,char或结构类型等等类型。 
          ... 
          ... 
         a=某个数,这个数必须代表一个合法的地址; 
         ptr=(TYPE*)a;//呵呵,这就可以了。 
    严格说来这里的(TYPE*)和指针类型转换中的(TYPE*)还不一样。这里的(TYP
E*)的意思是把无符号整数a的值当作一个地址来看待。 
    上面强调了a的值必须代表一个合法的地址,否则的话,在你使用ptr的时候
,就会出现非法操作错误。 


    想想能不能反过来,把指针指向的地址即指针的值当作一个整数取出来。完
全可以。下面的例子演示了把一个指针的值当作一个整数取出来,然后再把这个
整数当作一个地址赋给一个指针: 
例十六: 
         int a=123,b; 
         int *ptr=&a; 
         char *str; 
         b=(int)ptr;//把指针ptr的值当作一个整数取出来。 
         str=(char*)b;//把这个整数的值当作一个地址赋给指针str。 


    好了,现在我们已经知道了,可以把指针的值当作一个整数取出来,也可以
把一个整数值当作地址赋给一个指针。

2012年2月14日星期二

Android Softbankメールのバックアップ・復元

先日HTC DesireHDを初期化したんですが、Softbankメールのバックアップファイルがどこにあるのかわからなかったので調べてみた内容をメモしておきます。

Softbankメールのバックアップ

現在Softbankメールのバージョンは2.41、先日やっとメールのバックアップ・復元の機能が追加されました。

※相変わらずユーザから不満がおおく、評価が悪いですね・・・

さて、バックアップ・復元は設定画面から行えます。

image

 

一般タブ内にある「バックアップする」をタップすると、データの抽出・保存が開始されます。

 

image

 

バックアップデータの場所

もし、パソコンにバックアップデータを保存したい場合は、SDカードの下記パスに保存されていますのでコピーしてください。

パス:\private\SBMAIL\MBK

ファイル名:yyyymmddhhmmss.mbk

 

image

 

Softbankメールの復元

SDカード上にデータが残っていれば簡単に復元ができます。

ですが、SDカード上にバックアップデータがなければ、パソコンにバックアップしたデータを同じ場所にコピーしてください。

当然ですが、フォルダ名も同じにしてください。

2012年2月8日星期三

小鸡炖蘑菇



1、东北榛蘑用清水泡水,摘去根部,清洗干净,粉条用清水泡软备用;   
2、整鸡斩大件,葱、姜、蒜切段备用;   
3、鸡肉块用开水焯一下;   
4、锅中油热后,放入花椒、大料、葱、姜炒香,放入鸡块翻炒均匀,炒至鸡肉变白,烹入料酒,加老抽调色;   
5、加适量热水没过鸡肉;   
6、放入榛蘑、粉条煮二十分钟左右,撒少许盐调味即可。

2012年2月4日星期六

蘑菇萝卜肉碎饭

1269476583223

材料:

白萝卜,新鲜香菇,猪碎肉,葱,姜,蒜,花椒,八角,盐,料酒,糖,老抽,生抽,生粉,蚝油

做法:

1.- 萝卜切丁,香菇切丁(不要太小了),葱姜蒜切成末
2.- 热锅倒油,放葱姜蒜进去爆香,然后放入碎肉进去炒,放料酒,生抽,糖
3.- 碎肉炒至八九成熟,放蘑菇丁,然后再放萝卜丁翻炒。放少许糖,老抽上色,然后倒入热水,要淹没过锅里的菜
4.- 盖上锅盖大约中火煮20分钟,加入蚝油少许,一个八角,花椒几粒,喜欢吃辣的可以加点干辣椒。觉得颜色不够可以再添加老抽
5.- 汁被吸收的差不多,还剩余一些的时候开大火,放盐,胡椒调味,然后倒入生粉水勾芡,就完成了。浇在热腾腾的米饭上吃吧~

 

把萝卜改成土豆以这个做法试试看!!!

2012年1月27日星期五

在 Altium designer 09 中显示/隐藏飞线 可指定飞线

平时我在用AD09画板子的时候经常会出现连接网络的飞线莫名的就不见了,今天在画板子的时候又让我遇上,弄了半天也不知道如何设置,火了。拿起资料书找了起来,这次总算是把这个问题给根治了。把它写在这里方便下次来看两种方法:
一种是在PCB编辑界面按“N”,弹出的菜单中选show Connections,再选“All” 即可 。(这个简单)
还有一种是在PCB编辑界面按“L”弹出“Board Layers And Colors”配置对话框,再将“Default Color For New Nets”勾选上,若已经勾上或没有作用可多设置几次,就好了。

画PCB技巧:在PCB设计中鼠标指针一般有栅格捕获效果,可以把鼠标指针自动对齐到栅格位置上,对元器件的对齐和画线的美观很有帮助。但是这种功能并不总是有用,要临时关闭捕获功能,只要按住CTRL键就可以了。

Photoshop制作磨砂玻璃的文字说明

本教程主要使用Photoshop制作磨砂玻璃的文字说明,在这个快速的教程里,我们将会展示如何创建类似于磨砂玻璃的文字说明来提高你的图片或者设计的外观。下面让我们一起来学习。
来源:飞鱼的声纳
最终效果:

 

02251QY2-0

 

第一步
在Photoshop中打开一张图片。我使用了一张秋天的图片。你可以使用一张你喜欢的类似的图片。或者,任何图片都行。在背景图层上双击对背景层解除锁定,将其命名为”Leaves”。

 02251S636-1

 

 

第二步
在树叶的图层上方创建一个新图层(Ctrl+N),命名为”Frosted Bar”。选择”Frosted Bar”图层,使用矩形选区工具(M)拖出一个选区,确保选区的两边一直要触及到图片的两边。选区的位置取决于你,在这个例子中我将它放置在了图片的底部,如下图所示:

 

 02251R035-2

第三步
使用油漆桶工具(G)将选区填充为白色(#FFFFFF),取消选区。(Ctrl+D)

 

 02251Q2b-3

 

 

第四步
给”Frosted Bar”图层应用如下图层样式:(混合选项:自定义–在高级混合选项中将填充不透明度设置为20%)

  02251TU3-4

 

 

描边:使用白色(#FFFFFF),大小为2个像素,位置为外部,不透明度为50%。

  02251Qa4-5

 

 

第五步
我们将要编辑我们原始的图片,因此我们最好将它复制一遍,这样我们可以随时撤销编辑。因此选择树叶图层复制(Ctrl+J)。选择复制好的树叶图层,按住Ctrl键,在图层面板中点击”Frosted Bar”图层图标选取选区。应用高斯模糊(滤镜>模糊>高斯模糊),半径设置为20点击确定。

 02251S0W-6

 

  02251W0D-7

 

 

第六步
基础的毛玻璃效果已经做好了,接下来我们应用高光。在毛玻璃横条图层的上方创建一个新的图层(Ctrl+Shift+N),命名为”Highlights”。再次载入毛玻璃条的选区,选择画笔工具(B)。使用大一些的柔软的画笔(500像素,没有硬度,颜色为白色#FFFFFF)在横条的中间部分上下都画出高光(如下图),最后将图层的不透明度更改为60%。

 02251Rc9-8

02251QY7-9

第七步
最后一步是添加文字。使用文字工具(T)在横条中间添加你想要的文字,选择合适的文字大小(在这个例子中文字大小为100像素)。将文字图层的不透明度降低为40%,图层混合模式更改为叠加,完成。
最终效果
希望你能喜欢这个教程!

  02251S221-10

2012年1月25日星期三

关于没root的recovery后卡在红三角的退出方法

新入手的机器,想看看自己的G7 是否root,网上找了一下说是音量减+开机键然后recovery看,有红三角的就是没ROOT,确实没ROOT,可问题来了,不会退出卡在那了,我又在网上找了一下,都说要拔电池,因为新入手的,不舍得就那么硬生生的给拔了!!于是我接着搜,N长时间后也不知道在哪个角落里翻到了一个组合键居然返回了菜单,然后我就选择了reboot,G7就又活了!!!嘿嘿有想知道是啥组合键吗?

那就是..........................(音量加+开机键)(想不到啊想不到!),希望这个帖子对和我一样的小白有帮助,大家过年好~!

2012年1月24日星期二

Android获得Root权限后文件系统仍然报Read-Only的问题

获得了Root权限后,adb shell进入文件系统,有时仍然不能对系统文件夹进行写操作,典型的如删除/system/app下的Apk,

例如系统报:rm failed for xxx.apk, Read-only file system

只要执行命令:mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system 即可。

2012年1月23日星期一

*#*#4636#*#*

2012年1月6日星期五

28个不得不看的经典编程算法!!

前十个是来自圣经的十大算法:
发起人的描述:《来自圣经的证明》收集了数十个简洁而优雅的数学证明,迅速赢得了大批数学爱好者的追捧。如果还有一本《来自圣经的算法》,哪些算法会列入其中呢?

第一名:Union-find
严格地说,并查集是一种数据结构,它专门用来处理集合的合并操作和查询操作。并查集巧妙地借用了树结构,使得编程复杂度降低到了令人难以置信的地步;用上一些递归技巧后,各种操作几乎都能用两行代码搞定。而路径压缩的好主意,更是整个数据结构的画龙点睛之笔。并查集的效率极高,单次操作的时间复杂度几乎可以看作是常数级别;但由于数据结构的实际行为难以预测,精确的时间复杂度分析需要用到不少高深的技巧。


第二名:Knuth-Morris-Pratt字符串匹配算法
关于此算法的介绍,请参考此文:六、教你从头到尾彻底理解KMP算法。KMP算法曾经落选于二十世纪最伟大的十大算法,但人们显然不能接受,如此漂亮、高效的KMP算法竟然会落选。所以,此次最终投票产出生,KMP算法排到了第二名。

第三名:BFPRT 算法
1973 年,Blum、Floyd、Pratt、Rivest、Tarjan集体出动,合写了一篇题为 “Time bounds for selection” 的论文,给出了一种在数组中选出第 k 大元素的算法,俗称"中位数之中位数算法"。依靠一种精心设计的 pivot 选取方法,该算法从理论上保证了最坏情形下的线性时间复杂度,打败了平均线性、最坏 O(n^2) 复杂度的传统算法。一群大牛把递归算法的复杂度分析玩弄于骨掌股掌之间,构造出了一个当之无愧的来自圣经的算法。

我在这里简单介绍下在数组中选出第k大元素的时间复杂度为O(N)的算法:
类似快排中的分割算法:

每次分割后都能返回枢纽点在数组中的位置s,然后比较s与k的大小
若大的话,则再次递归划分array[s..n],
小的话,就递归array[left...s-1] //s为中间枢纽点元素。
否则返回array[s],就是partition中返回的值。 //就是要找到这个s。

找到符合要求的s值后,再遍历输出比s小的那一边的元素。

各位可参考在:算法导论上,第九章中,以期望线性时间做选择,一节中,
我找到了这个 寻找数组中第k小的元素的,平均时间复杂度为O(N)的证明:上述程序的期望运行时间,最后证明可得O(n),且假定元素是不同的。

第四名:Quicksort(快速排序)
快速排序算法几乎涵盖了所有经典算法的所有榜单。它曾获选二十世纪最伟大的十大算法(参考这:细数二十世纪最伟大的10大算法)。关于快速排序算法的具体介绍,请参考我写的这篇文章:一之续、快速排序算法的深入分析,及十二、快速排序算法之所有版本的c/c++实现。

第五名:Floyd-Warshall all-pairs最短路径算法
关于此算法的介绍,可参考我写的此文:几个最短路径算法比较(http://blog.csdn.net/v_JULY_v/archive/2011/02/12/6181485.aspx)。
d[]: 二维数组. d[i,j]最小花费、或最短路径的邻边。

for k from 1 to n:
for i from 1 to n:
for j from 1 to n:
d[i,j] = min(d[i,j], d[i,k] + d[k,j])

第六名:Gentry's Fully Homomorphic Encryption Scheme(绅士完全同态加密机制)算法。
此算法很漂亮,它允许第三方执行任意加密数据运算得不到私钥(不是很了解)。

第七名:Depth First Search、Breadth First Search(深度、广度优先搜索)
它们是许多其他算法的基础。关于深度、广度优先搜索算法的具体介绍,请参考此文:教你通透彻底理解:BFS和DFS优先搜索算法。

第八名:Miller-Rabin作的类似的试验测试
这个想法是利用素数的性质(如使用费马大定理)的小概率寻找见证不数素数。如果没有证据是足够的随机检验后发现,这一数字为素数。

第九名:Binary Search (二分查找)
在一个有序的集合中查找元素,可以使用二分查找算法,也叫二分搜索。二分查找算法先比较位于集合中间位置的元素与键的大小,有三种情况(假设集合是从小到大排列的):
1.键小于中间位置的元素,则匹配元素必在左边(如果有的话),于是对左边的区域应用二分搜索。
2.键等于中间位置的元素,所以元素找到。
3.键大于中间位置的元素,则匹配元素必在右边(如果有的话),于是对右边的区域应用二分搜索。
另外,当集合为空,则代表找不到。

第十名:Huffman coding(霍夫曼编码)
霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。1952年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于《一种构建极小多余编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文。

十一、Cooley-Tukey FFT算法。快速傅里叶变换算法。关于傅里叶变换算法的介绍,请参考此文:十、从头到尾彻底理解傅里叶变换算法、上,及十、从头到尾彻底理解傅里叶变换算法、下。

十二、linear programming,线性规划。
十三、Dijkstra 算法。与上第五一样,又一种最短路径算法。具体介绍,请参考:二之续、彻底理解Dijkstra算法,和二(再续)、Dijkstra 算法+fibonacci堆的逐步c实现。

十四、Merge Sort。归并排序。
十五、Ford–Fulkerson算法。网络最大流算法。
十六、辗转相除法。
在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法,即求两个正整数之最大公因子的算法。此算法作为TAOCP第一个算法被阐述,足见此算法被重视的程度。它是已知最古老的算法, 其可追溯至3000年前。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。扩展的辗转相除法则构造性地证明了,对任意整数a和b ,存在一对x、y使得 ax + by = gcd(a, b) 。

十七、RSA加密演算法。一种加密算法,日后再做详细介绍。
十八、遗传算法。可参考本人写的关于GA 算法的这篇文章:七、遗传算法 透析GA本质。

十九、最大期望(EM)算法。
此算法入选数据挖掘领域十大经典算法。在统计计算中,最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。

二十、数据压缩
数据压缩是通过减少计算机中所存储数据或者通信传播中数据的冗余度,达到增大数据密度,最终使数据的存储空间减少的技术。数据压缩在文件存储和分布式系统领域有着十分广泛的应用。数据压缩也代表着尺寸媒介容量的增大和网络带宽的扩展。

二十一、Hash函数
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。关于hash表的详细阐述,请参考此篇文章:十一、从头到尾彻底解析Hash表算法。

二十二、Dynamic Programming(动态规划)。关于动态规划的粗略介绍,请参考此文:三、dynamic programming。

二十三、堆排序算法。
堆排序算法作为一种快速稳定的算法,其平均时间复杂度(最坏也为)O(n*lgn)。当然,在实际应用中,一个实现的好的快速排序算法仍然要优于堆排序算法。不过,堆数据结构还可以作为高效的优先级队列。对堆排序算法作简单了解,可参考这:堆排序算法。

二十四、递归与回溯算法。此俩个算法,相信各位比较熟悉,在此不做赘述。

二十五、最长公共子序列
最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个数列 S ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。
动态规划的一个计算最长公共子序列的方法如下:
以两个序列 X、Y 为例子:
设有二维数组 f[j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有:

f[1][1] = same(1,1)
f[j] = max{f[i-1][j-1]+same(i,j),f[i-1][j],f[j-1]}

其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。
此时,f[j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。

该算法的空间、时间复杂度均为O(n2),经过优化后,空间复杂度可为O(n),时间复杂度为O(nlogn)。更多详情,参见之前写的一篇拙文(不过,鉴于写的糟,日后会重写):三、dynamic programming。

二十六、红黑树的算法与实现
关于红黑树,linux内核中有实现,本BLOG内也已经写了4篇红黑树系列的文章。详情,请参考:五(续)、教你透彻了解红黑树。

二十七、A*搜寻算法。
相对于BFS、Dijkstra 等算法,A*搜寻算法作为一种高效的最短路径搜索算法,如今,已得到日益广泛的应用。初步了解A*搜寻算法的高效及与其它最短路径算法的比较,请参考此文:一(续)、A*,Dijkstra,BFS算法性能比较及A*算法的应用。

二十八、图像特征提取与匹配之SIFT算法
sift,尺度不变特征转换,是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由 David Lowe 在1999年所发表,2004年完善总结。关于此算法,请参考如下,粗略介绍:九、图像特征提取与匹配之SIFT算法,利用第三方库编译过程:九(续)、sift算法的编译与实现,c语言一步一步实现sift算法:九之再续:一步一步用c语言实现sift算法、上,及九之再续:教你一步一步用c语言实现sift算法、下。

2012年1月5日星期四

USB转串口完全手册

对那些需要为基于串行端口的老项目提出快速解决方案的设计工程师来说,最先有吸引力的策略是采用一种补丁系统。这可通过在嵌入式控制器串行接口与PC机USB连接器之间增加一个定制的USB-UART转换器来实现。

该方法意味着仅仅需要重新设计嵌入式应用电路板以腾出空间容纳新的元件,但它不用改变固件和PC应用程序。

劣势是却失去了采用USB所带来的大部分好处。实际上,USB能够更快地传输数据,传输速度可达到典型串行端口的100倍(12 Mbps与115 kbps),续使用UART,就会成为主要的设计瓶颈。另外,由于大部分USB-UART接口器件缺乏灵活性,无法实现灵活的电源管理,而这在许多嵌入式设计中是一个关键特性。

此类IC,市场上主要有以下:

未来科技(future technology)

USB-UART的型号如下:

FT232BM/BL/BQ: USB口和串口(UART)的转换。

FT245BM/BL/BQ: 实现USB口和并口(FIFO)的转换

FT2232D: 可以支持USB转两个串口或并口

FT245R: 实现USB口和并口(FIFO)的转换

FT232R: USB口和串口(UART)的转换,同步,异步BIT-BANG接口模式

台湾玖旺科技(prolific)

PL-2303: 低成本USB-UART,USB1.0(1)

PL-2303HX: USB-UART,支持sub 2.0full-speed

PL-2313 USB:USB转双路UART

Silicon Laboratories:

CP2102:USB-UART转换器,实现USB2.0到UART

南京沁恒:

CH432: 双USB-UART

CH341: USB 总线的转接芯片,USB-UART,PARP,同步串行接口。