看完的美剧
下面的都看了。只写了部分全季都看完了的……
knightrider 2008 ALL
24 -S07
PB -S04 ALL
CSI LV -S09
Dr.House S01
HEROES -S03
Numb3rs S1 ALL
etc…
不想升级的火腿不是好火腿~~~
下面的都看了。只写了部分全季都看完了的……
knightrider 2008 ALL
24 -S07
PB -S04 ALL
CSI LV -S09
Dr.House S01
HEROES -S03
Numb3rs S1 ALL
etc…
又要到过年的时候了,每年过年,神州大地都有一股巨大的力量,把各种各样、形形色色的人推回到家这样一个地方。
昨天半夜我也去领略了一次回家的艰辛(前奏而已)。从11点排队,直到2点半才买到一张无座的票。这次回家要在车上受煎熬了~~
上次已经成功的在DEBIAN下驱动了施乐的Xerox WorkCentre 415/Pro,这次又有一台HP的Deskjet 1180C,这下办公室里黑白彩色,打印复印统统齐备了。呵呵
上网找了下相关的东西,找到一篇文章虽然是在GENTOO环境下的,但是,LINUX都是大同小异的。依样画葫芦,开始了:
PUTTY登录到服务器上,先看看机器是不是开了相关的服务:
lsmod 看看有没有usbcore 和usblp两个模块,发现没有,使用下面的命令加载:#modprobe usbcore
#modprobe usblp
然后在aptitude里把上次没有装的foomatic装上,在 tasks server printer server 下面。
安装好了,就可以连接打印机了,然后看看系统是不是找到了打印机:#tail /var/log/message
然后本机访问一下CUPS的管理页面lynx 127.0.0.1:631
在管理打印机部分添加新的打印机,很好添加,CUPS对HP的支持是很好的。
最后打印一下测试页,OK,搞定。呵呵
文/赵玮
我喜欢《都市夜归人》,一个很重要的原因就是惊讶于张艺在节目里不经意间说出来的话,吓死人的精彩。几年前上大学的时候,我听节目有个习惯,就是一边听,一边拿枝笔,记下她在节目里说出精彩的话语,几年下来,我的那些书、笔记本的扉页上都密密麻麻的记满了“张艺的至理名言”。可惜,工作以后渐渐地就没了这个习惯,几天前当我无意间再次打开当年的书和笔记时,曾经熟悉的东西从记忆中遗忘的角落再现,心中满是温情,仿又回到了那段单纯的听《都市夜归人》的青葱岁月。以下便是我整理出来的我大学四年听节目时记下的张艺的话(基本上都出自于2001年以前的《都市夜归人》),现在看来依旧直指人心。估计很多老朋友看完后都依稀会有些印象,包括张艺本人。
1:如果一首歌曲有一个人记得,哪怕只记得一百年,也比一首歌有上千人记得,只记得十年,要来得有成就很多。
2:当你真正爱上一个人时,其实你已经失去你自己了。
3:喜欢音乐的人,大都是清净散人。
4:过日子和一天天活是不一样的。
5:所谓大人就是那种即便下雨天穿着雨鞋,也要绕着水走路的人。
6:听歌有许多原因,但目的只有一个,就是填满自己的生活。
7:其实节日或者是生日最能够体现的仅仅是一件事情——爱与被爱。
8:经过许多波折以后,你会发现最初的总会让位给真正的。
9:在父母眼里长大了,那就是真的长大了。
10:有许多东西在你需要的时候会失踪,在你忽视它的时候,它会倏忽地跳出来。
11:对于自己不了解的事情,永远不要妄下断语。
12:无论是什么,无论你多喜爱,无论你再亲近,你总有不曾了解到的它的另外一面。
13:世界上的事还是朦胧一点好。
14:常常就会这样,越是柔软的,看起来会越坚硬,因为它需要那层外壳。
15:山顶的路永远只是下山路。
16:风过可以不留痕,时间过了什么都能够留下,惟独留不下你的青春。
17:童年最美好,最珍贵的就是在于童年什么都不懂。很多故事,因为不懂才会显得它的珍贵。
18:没有玫瑰的爱情依然是爱情,而没有爱情的玫瑰仅仅是玫瑰。
19:最容易被我们忽略的常常是最打动我们的。
20:由喜宝的话想到了:大多数女子都需要爱,若没有爱就需要一些东西来弥补,如朋友,若还是没有,就要健康,只要生命存在,希望还在。
21:残缺的美丽才更吸引人。
22:当你不能改变一件事的时候,你唯一能做的就是不要忘记它。
23:我认为真正好的唱片不是让你听的,而是让你听得到心里去不敢再听。
24:当你喜欢一个人,撇开男女之间那种狭隘的感情,第一,你想成为这样的人;第二,你就是这样的人。
25:如果结局是好的,何必在意等待;如果过程是美的,又何必在意结局。
26:谎言说了一千遍就会成为真理。
27:以入世的状态生活,以出世的方式做人。
28:一个人记住一件事情原因有两个,一是因为这件事与众不同,一是因为它的发生符合自己喜欢的状态。
29:一件事情当你说不清楚的时候,一是因为它非常的重要,另一个是因为它根本不重要。
30:如果你忘记了你十七岁的样子,民歌记得你曾经的样子。
31:陪你一起笑的人,你可能会忘记,但是陪你一起哭的人你永远记得。
32:总会迟到的人一定是不会为别人着想的人,遇到这种人应浅尝即止,千万不要深交。
33:所有的无可奈何不一定是真正的无可奈何,只不过是自己不愿意接受。
34:在一个人最坚强的时候,其实是他最需要坚强的时候;一个人最积极的时候,其实是他最需要积极的时候。
35:生病的时候,你身体的某个部位的疼痛就是在提醒你它们的存在,它们与你的身体一样都有生命。
36:女子首先要学会在经济上独立,然后再在思想上独立,这样才不会被别人欺负,不会看别人脸色做人。
37:一个人倒霉的时候会一个接着一个。
38:所有的人、物都会结束,它结束是因为它存在过。
39:人唯一能控制的是想象,人可以在幻觉的世界里驰骋。
40:一个人喜欢另一个人、另一个东西,其中最重要的原因是他/她/它和自己很像。
41:凡事都有结果,无论是好的还是坏的,你必须接受。
42:青春其实是让人来怀念的。
43:激情退尽后,都会回到原点。
44:要想永远的快乐很难,要想永远的忧伤其实更不容易。如果节日那天不开心,就当那天不是节日,当作普通的一天就是了。
45:再远的地方总能走到,难以企及的是心灵的疆界。
46:人与人之间的交往,其实是一种较量。两个人因为缘分,从相识到相知,无论是恋人还是朋友,都在不停地磨合,像用一把锯子,磨平,希望磨到鹅卵石洁净的程度。
47:永远想不通的其实是最简单的道理。
48:人一旦过了二十岁,日子就过得飞快。
49:沉默使人更美丽。有时候沉默,或者是淡淡的叙述才有直指人心的力量。
50:不相信爱情的人比一般人更不容易快乐。
51:虽然它不是最好,但是它最真,所以它最美。
52:你永远都不是最时尚的,那你永远都不会被遗忘。
53:所有的美丽都不会永恒,就像所有的年轻都会化为人老珠黄一样。
54:听收音机最大的好处就是你永远不知道下一首会是什么歌,凡事有个悬念会比较好。
55:其实每个人都会蜕变,只要你愿意努力改变,人的改变可能是在瞬间完成的。
56:人往往记住的都是让自己伤痛的事情。
57:永远不要相信一种轻易的说法,应该自己试着看看行得通行不通。
58:世上本没有快乐,快乐等着你去发现。
59:有些事情忘了就忘了,可能永生永世都不会想起来。
60:好的唱片,好的情感犹如拍照片一样,最精彩的在生命中有的只有一次,就那么一刹那。
61:许多事情都是没有答案的,真的那么较真,只会让自己徒增烦恼。
62:只要有机缘,即便千山万水都会重逢。
63:我们的记忆往往喜欢定格在我们最喜爱和最快乐的时候。
64:最真正的欺骗是骗自己,因为自己的事自己最清楚,对自己的欺骗是何等的失意和苦楚。
65:当这一切成为过往,才会笑谈。
66:所有的感情走入到最后,都是平平淡淡,这才是最好的,当感情真正转变为亲情的时候,它才是无坚不摧的。
67:爱一个人,不一定要和那个人联系,只要在心里拥有就可以了。
68:理想真的实现了,也觉得不过如此;理想如果实现不了,也会永远向往下去。生命不能太满足,也不能总是一无所获。
69:能做到执迷不悟的人不一定能做到执迷不悔。
70:可爱对于成年人是难得的。
71:人的一生在二十岁之前就已经决定了。
72:最好的表达就是不用表达,你需要的就是记住它。
73:人的一生下来究竟留了什么,其实都是那些回忆而已。人不可以走回从前,但回忆可以弥补这个缺憾,可以重新走一遍。
74:自己选择的路,必须逼着自己走下去。
75:快乐不需要理由,而忧伤反而需要去寻找理由。
76:所谓走到哪里都觉得是家,这种感觉特别好。
77:千万不要想太多,因为想得太多,就不会去做了。
78:好的歌曲背后一定有一些故事。
77:世上没有永远的好,也没有永远的坏,只在于你自己的认知。
78:心境平和不一定有价值,它不一定符合世界上共有的标准,但它却是最宝贵的东西。
79:凡事不必强求,凡是你的一定会回来。
80:属于你的只能接受,而接受就意味着承担。
81:常常我们最纵容的就是自己,人角色的变化常常来自于人的内心。
82:人生最大的不公平就是,没有人问过你就把你生下来,生命不是你自己带来的,却需要你终生看护它。
83:真正的全然的并且永恒不变的拥有,是放在心中。
84:没有人能够伤你,除非你自己愿意被伤害。
85:懂了的苦才是真的苦。
86:我始终觉得誓言不是说给对方听的,而是给自己的一种约束。
87:婚姻不是爱情的唯一目的,而爱情不是婚姻的必经阶段。
88:年轻的时候,可以做一切你想做的事情,并且有很多你合适的理由。
89:很多事情,千万不要懂,懂了的时候就已经晚了。
90:有些歌是给你听的,有些歌是给你唱的,有些歌是给你想的;给你听的歌曲中,又分给你听几天的,听几年的,还有一种是安安静静地听上一生的。
91:即使再令人满意的,也常常会令人失望,即便常常会令你失望的,有时候也会带给你惊喜,世间的事情从来都不是一成不变。
92:随着岁月的变迁,我们一定会改变什么,但一定还会保留什么,无论怎么变,我们都是前无古人,后无来者的唯一。
93:永恒的是日月星辰,还有我们的记忆。
94:其实一个人总能够认清自己,只是大部分时候,他宁愿选择执迷不悟而已。
95:飞蛾在扑火的时候,它一定是很快乐的。
96:写歌的人,给歌一条命;听歌的人,给它一颗心。
97:上帝总是公平的,当他赋予你一项不同于其他人的能力的同时,一定会拿走你一点什么。
98:一个东西自己喜欢,别人也喜欢,那种快乐胜过只有自己拥有并且喜爱这样东西,所谓“快乐是需要与别人分享”说的就是这个道理。
99:所有的焰火都是一样的,放焰火时,最快乐的并不一定是看见焰火的人,而是放焰火的人。
100:所有的离开常常都是这样,走的时候说“一定会回来”,走了之后再也不可能回来。
现在,有很多C/C++程序员总是自命不凡,看不起其他开发人员。其实,或许别人更看不起他呢!
>> 有偏见的永远只是个体,而不是群体。作者加了后面那句,无疑证明有偏见的不是C/C++程序员,而正是他自己。
学生时代,我也曾醉心于C/C++,但时至今日,始终无法写出无懈可击的C++代码,所以我始终认为我不会C/C++。这些年,我一直在寻找编写C++代码的最佳模式。但是,老实说,我还没有见到过哪个称得上高手的C++程序员,也没有见到过写得Very good的C/C++代码。C/C++代码总是丑陋不堪,BUG丛生!
>> 这段话更加荒谬了。没见过优秀的C/C++代码? C++标准库(STL)如此优雅。况且,有那么多经典的C/C++开源作品,以及无意之中泄漏的Windows NT核心源码,哪一样不是绝世之作?我为作者浅陋感到难过。
我用C语言编程已经超过20年了。我写过C语言的编译器、C语言的调试器、用C开发的其他语言、游戏、客户端程序和服务器程序,你说吧!还有什么是我没写过的。还有我的书架上充斥着折了角的K&R和Steele的书。我太了解C语言了,但是,我讨厌他。十分讨厌!
当我读到一篇博客,题目是"为什么每个程序员都应该学习C语言?"时,我真是鸡皮疙瘩满地。如果你真的是个专业的程序员的话,你肯定觉得这是个天大的笑话,尽管作者的本意也许不是这样的。这篇反驳的文章有点意思,但是还是没有抓住本质。所以我展开了说一下。有以下5个原因来说明,为什么那些会C语言,并且使用C语言的程序员,现在不但应该去用别的语言,而且应该忘记他们学习C语言过程中的那些烦人的东西。
1、内存分配
仅仅关于这一点我就能写整整一篇文章了,也许能写一本书,甚至还有可能写出能够塞满图书馆技术书籍那块,那么多的内容。内存分配和存储单元分配的存在确确实实是个大麻烦。你要不就是分配太少的内存不够用,要不就是分配了太多内存浪费掉。这里的问题就是:怎么把它初始化为零呢?还是干脆就不初始化它。但最挠头的步骤还是释放内存。所有已有的工具包都会帮助你确认,你是否已经释放了之前分配的每一位的内存,在释放完之后是否永远不使用它,并且会阻止你,永远不要释放它第两次。更严重的是,分配内存和释放内存在C语言中都是很慢的,非常慢。使用内存分配时,要考虑的各种特殊情况,我真是连想都不愿意去想,只要问题(对象)的大小合适,我更愿意使用栈空间或者事先分配的结构空间。如果这么做的话,我就有更值得烦恼的事了。话说回来,发明垃圾处理器那人真应该得诺贝尔奖。
>> 内存管理是程序设计中最经典的话题。GC无疑是内存管理一个伟大的变革,但是我只是把它看作内存管理的一个解决方案,而认为不是唯一的解决方案。比GC更加优雅的方案不见得没有。我比较倾向于在特定的情况下选择合适的内存管理方案,而不是没有任何选择的余地,而这正是C/C++的伟大之处。 所有那些GC语言(如Java、C#等)均把这个解决方案强加给程序员,这一定程度上来说减轻了程序员的负担,但是也同时约束了程序员的主观能动性。"分配内存和释放内存在C语言中都是很慢的"?不知道作者从哪里获得的结论。
2、多线程
我过去是喜欢C语言的,真的。直到我开始用C开发并维护多线程的服务器。在为连接相冲突的线程保护数据方面,C语言没有为程序员提供那怕一点点的帮助。你在使用单线程的日子里获得的每一个直觉、经验,用在多线程的时候都是错误的。至少JAVA有表示同步的关键字和备有证明文件(但是是个很奇怪的文件)的记忆体,但即使是这样,除非你使用新的javax.concurrent,否则也只能在那些巨大的平行摆放的机器们面前崩溃。回到C语言上:在模拟生产的环境下,坚持一个星期在数据中心调试一个死锁(这事真的发生过)。而JAVA却只需要Ctrl+Break!天哪!!!
>> C/C++语言本身确实没有太多MultiThead的支持,这种情况在C++0x出来后可望改变。但是,请记住C/C++永远倾向于你使用成熟的库来解决问题。
3、指针
指针太难以控制了,太阴险了;我甚至没有委婉一点的方式去形容它。我生命中每年都有几个月被用来调试那些奇怪的指针问题。我过去常常努力获取所有的诀窍,比方说难以理解的构成符、联合体和偏移量,以及重用最后两位做标记,还有所有其他的诀窍。但我发现这么做根本不值得。其他语言的静态引用就可以解决了。
>> 指针是C/C++过于灵活的体现。使用指针的代码可以写得很丑陋,但一样可以很优雅。——这一点上用何种语言不会有区别。我相信,可以写出优雅的Java代码,那么也一定可以写出同样优雅的C/C++代码。而反之则未必(因为有些C++某些范式是Java所不能支持的)。C/C++语言中的选择太多,这的确是令人困惑的,但不见得是劣势。我对C/C++程序员的建议是,多了解和使用C++标准库,而不是过于纠缠指针相关的细节。
4、过早的优化
说到诀窍,你是否曾经浪费脑细胞去研究究竟*p++是不是比p[i]快?你是否曾经花时间去试着做点变化来代替乘法,或者去尝试使循环中的倒置运行更快的方法?还在为传递一个参数的速度和反对添加结构,并且传递它的速度一样而苦恼不已?停吧!算法是速度的关键,程序员的水平决定了他会使用那些算法。知道这一点能让你的程序更好,更快一点并且让你的脑袋少扭几个筋。好吧,有一些例子也许可以这样做的……不,你就别那么做就行了!
>> 算法优化是程序设计的关键。但是通常情况下,所有语言(包括C/C++)的程序员研究的是关键路径的优化。研究*p++是不是比p[i]快?我相信这是标准库的实现者要考虑的事情。所不同的是,C/C++程序员也可以和标准库的作者一样去考虑这些细节,而其他语言的程序员被剥夺了这个权利。
说到优化,话题就多了。我曾经向C#的Dictionary中插入了1亿条整数(从1万多个文本文件中读入),结果发现程序运行了整整一个下午仍然没有完成。而我改用C++的std::map,20分钟就搞定了。再试试对50万条自定义的结构体数据进行排序,我相信你和我一样,会深深喜欢上C++的的高效而优雅。
5、测试
你最喜欢的C的单元测试的工具是哪个?嗯…一个也想不到?单元测试一定是一点也不重要,是吧?或者是太麻烦了,很难跟上进度,浪费时间。你可以把这个时间用到更加有用的事情上,让它只占用工作时间的1%,那还比较合适。或者在数据中心,通过优化的没有标记的图形来调试这个仅仅由100个同时在线使用者引起的问题。
>> C++的测试工具,作者居然一个都想不到,我只能猜想可能他是比较喜欢自己制造轮子的那一类。和JUnit对应的CppUnit,难道也想不到?提起CppUnit,我以前用它进行单元测试,但从实现架构上说,我认为它继承了Java代码的臃肿。我在WINX中提供了一个Mini版本的CppUnit,代码量大概只有几百行,功能绝不比CppUnit弱。(要了解WINX,请看这里)。
我本来应该继续再说一些原因的,但是5个现在就足够了;说完这些,现在感觉好点了。C以前是非常棒的…那是在1984年的时候。直到今天,那些用C写的新代码都让我感到惊喜…如果你让我比较的话,我觉得C++只是比C稍微好点。如果你想要学些老一点的语言,不妨尝试Forth,List,或者APL。这些老式的语言起码能教会你,用不同的而且优雅的方式去思考你的程序。
>> 新生的语言,必然会在吸收旧的语言上基础上进行改进。看一个语言的生命力,并不在于看它某些地方存在的不足。事物会发展,并趋于完善。相信C++0x出来后,C/C++语言又将获得新的生命力。单看Java、C#等几个新一代的语言,其中有如此多的C++烙印,就证明了C/C++的影响是巨大的。动不动说一门语言死了,是一种浅薄。
英文原帖在
http://blogs.zdnet.com/Burnette/?p=208 Ed Burnette
中文翻译帖在
http://developer.51cto.com/art/200612/36506.htm 李安民
驳斥帖在
http://blog.csdn.net/xushiweizh/archive/2007/01/07/1476422.aspx 许式伟
该帖后面有不少评论,可以看看
Q:
用GCC/WinAVR如何将数据放到一个指定的地址上呢?如0x400
A:#define CODECONST __attribute__ ((section (".const")))
Const unsigned char CODE[4] CODECONST ={'a','b,'c','d');
然后在project options中的memory setting里添加FLASH .const 0x400
这样上面的CODE数组就从0x400开始了
并行编程,最早的编程方法,功能最强大,但需要连接较多的引脚,通常需要12V~24V的高压,以示区别,下面称为 高压并行编程。
ISP(In System Programmability) 在系统编程,简称为 串行下载
IAP(In Application Programing) 在应用编程,BootLoader也是类似的意思
1 ISP虽然利用了SPI接口(例外:M64/M128为UASRT0接口,Tiny13等没有SPI接口)的引脚,但只在复位时起作用,而且下载完成后合格的下载器会自动断开端口的连接,对正常工作时没有影响的( 在产品应用中,下载器一定是不会一直粘在上面的)。
2 虽然高压并行下载能修复任何熔丝位,但对于贴片封装来说是很不现实的,所以ISP接口是最常用的下载方式了
3 虽然IAP是一种新的升级方法,但IAP程序本身也是要先用高压并行下载或ISP来烧进芯片里面才行
4 Tiny13等少管脚AVR芯片因为管脚实在太少了,有ISP,但没有[高压并行编程]而特制了[高压串行编程]
所以,产品上一般都留有ISP接口插座,或更省位置的----留6个焊盘就行了
ISP的工作前提
1 芯片没有物理损坏
2 芯片的SPIEN熔丝位=0 使能ISP功能
3 芯片的RSTDISBL熔丝位=1 RESET引脚有效 (假如芯片有这个熔丝位)
4 线路正常---------接错线? 短路?
5 下载器正常-------特别要考虑 连线的接触不良问题
6 电源
运行时钟 ISP时钟(必须低于运行时钟的1/4)
4096Hz <1024Hz //很变态的用法,外接32.768KHz晶体+CKDIV8 ,不过AVRISP还是提供了603Hz这个速度了
//另一简易解决办法是 下载时在32.768KHz晶体并联一个1MHz晶体,双龙的下载线就配有一个8MHz的石英晶体
32768Hz <8192Hz
128KHz < 32KHz //内部RC128KHz
1.0MHz <250KHz //默认值(包括8MHz+CKDIV8),所以AVRISP的ISP速度多为230KHz
8.0MHz <2000KHz
16.0MHz <4000KHz
运行时钟不等于震荡器的频率,因为部分AVR芯片有系统时钟预分频器,可以对震荡器进行1~256分频
CKDIV8熔丝位决定CLKPS位的初始值。
若CKDIV8未编程,CLKPS位复位为“0000”;若CKDIV8 已编程,CLKPS 位复位为“0011”,给出启动时分频因子为8
AVRISP可提供的ISP时钟 921.6KHz,230.4KHz, 57.6KHz,28.8KHz,4.0KHz, 603Hz
STK500可提供的ISP时钟 1.845MHz,460.8KHz,115.2KHz,57.6KHz,4.0KHz,1206Hz
时钟设定 ISP方案
内部RC 选择合适的ISP速度
外部RC 接上合适的电阻和电容,选择合适的ISP速度。------补救: 外部时钟源接到XTAL1
外部RC 根本就没有什么意义,频率精度/稳定度不高,成本也没有降低,所以新的AVR芯片已经没有这个选项了。
各位网友要注意的是错误设定后补救方法
外部晶体 接上合适的晶体,选择合适的ISP速度。 ------补救: 外部时钟源接到XTAL1
外部时钟 接上合适的时钟源,选择合适的ISP速度。 ------补救: 外部时钟源接到XTAL1
外部时钟源可以是 外部(4MHz)有源晶体输出,其他MCU的XTAL2脚,各种方波振荡电路(NE555)输出等
大部分AVR芯片的ISP端口是 SCK,MOSI,MISO,RESET
而M64/M128的ISP端口是 SCK, PDI, PDO,RESET
而且M64/M128出厂默认兼容M103----熔丝位M103C=0,很多新特性不能使用,程序也可能不能正常运行
----因为C编译器通常默认自动把SP指向SRAM的末端,M103=0x0FFFH, M64/M128=0x10FFH,必然出错!
AVR的所有熔丝位均是:
1 未编程,多为不起作用的意思。
0 编程,多为 起作用的意思。
基于可编程工艺的都是这样:
PROM/EEPROM/FLASH都是出厂时和擦除后变为全1(0xFF)的,要编程才能变成0。
反过来就是了,跟CE/OE/INT都是[低电平有效]一样,都是很常见。
在ISP模式下永远不能访问(修改)SPIEN位,这是AVR芯片的硬件保护
有独立RESET脚的M16/M32/M64/M128等,在ISP模式下根本就就不会令ISP无效,无论如何修改熔丝位,都能恢复正常。
M8/M48/M88/M168/Tiny系列有RSTDISBL熔丝位可以令导致RESET失效而令ISP无法工作外,其他情况都能恢复正常。
一般来说,只要满足ISP的工作前提,再把XTAL1接到一个4MHz有源晶体的输出,基本是万试万灵的。
不要忘记,并行高压编程的时钟信号也是从XTAL1导入方波信号的。
如果有源晶振的方法不行(除了ISPEN=0,RSTDISBL=0情况外),恐怕高压编程也未必能奏效。
JTAG的影响(M16,M32,M128等):
JTAG能访问 SPIEN 和 JTAGEN,要是不小心同时改成SPIEN=1,JTAGEN=1,将会导致MCU锁死,需要高压并行编程才能恢复。
DebugWIRE的影响:(M48,M88,M168,T2313等,数据手册里面的资料不是很详细)
由于DebugWIRE使用RESET脚来通讯,所以跟ISP有所冲突
可以通过ISP或并行高压编程来使能DebugWIRE功能[即DWEN=0],使能DebugWIRE功能后,ISP功能失效。
可以通过DebugWIRE来关闭DebugWIRE功能[即DWEN=1],关闭DebugWIRE功能后,如果RSTDISBL=1,SPIEN=0,ISP功能有效。
比较特殊的是 DebugWIRE调试中,断点的使用会降低Flash 数据记忆时间 DebugWIRE调试用的器件不能发给最终客户。
JTAG MKII同时具备JTAG/DeubgWIRE/ISP三种功能,可以轻松实现DebugWIRE/ISP的切换。
(软件需要升级到1.09版以后 即对应AVRstudio 4.12以后版本)
最新版本 JTAG MK2使用说明中文pdf(20051125)
设计使用debugWIRE 的系统时,必须进行下面的检查:
• dW/(RESET) 的上拉电阻不得小于10kΩ。debugWIRE 并不需要上拉电阻
• 将 RESET 引脚与 VCC 直接连接将无法工作
• 使用debugWIRE 时必须断开与RESET 引脚连接的电容
• 必须断开所有的外部复位源