****R单片机ATmega16L出厂时熔丝位的设置有两点是需要使用者注意的,一是它的时钟设置为CKSEL3=0、CKSEL2=0、CKSEL1=0,即使用内部1MHz的RC振荡器,因此当你要用外部晶振时,比如你要用串口,这时就需要重新配置熔丝位,才能正常使用串口。二是JTAGEN 熔丝位。缺省为编程状态。因此你如果要用PC2~PC5做一般I/O引脚用的话,也不能使用,必须在熔丝位配置窗口中把JTAGEN前面的那个√去掉,这样程序才能正常运行。我在使用该芯片时就遇到过这些问题,写出来提醒同行参考。
当然你在配置熔斯位时要小心从事,防止芯片锁死。有不少网友屡屡遭此不幸。其实你在熔丝位配置时,只要方法正确,一般是不会出错的。以我们常用的小马PonyProg2000下载软件为例,在Command菜单中选Security and Configuration Bits,(或者点Security and Configuration Bits按钮)在接着出现的熔丝位配置窗口的下面,有几个按钮,千万不要乱按。正确的方法是先按“Read”按钮,读出原来芯片中熔丝位的配置,然后再以此为基础,按你的需要进行局部修改,确定无误后再按“Write”按钮,就OK了。一般不会出现锁死的问题。如果万一由于操作不当,出现锁死也不必惊慌。除了用并行编程器恢复的方法以外,对于没有并行编程器的朋友,还可以用外接有源振荡器的方法解锁,方法是用一个1MHz的振荡信号接到ATmega16L的 13脚XTAL1,接通单片机的电源,正常的话你会看到原来单片机中的程序已经可以正常运行了。说明外接振荡器已经使单片机恢复工作了。这下来就好办了,仍然用PonyProg2000,点Security and Configuration Bits按钮,进入熔丝位配置窗口,这时你会看到所有的熔丝位都没打√,连灰色的SPIEN前面那个模糊不清的√也没了,不过没关系Don’t worry,你只要按照下图中ATmega16L出厂时熔丝位的设置打√,然后按“Write”按钮,如果屏幕轻轻的闪一下,OK,恭喜你已经好了,再按“Read”按钮,你会看到除了你打√的地方以外,SPIEN前面那个模糊不清的√也出来了。锁死的芯片已经解锁了。
要注意的是外接的信号幅度不可太大,以免损毁芯片,我开始用一个51单片机的震荡信号接过来,结果不行,可能是驱动能力不够。后来换了一个信号发生器输出的1MHz的信号,就成功了。也可以用NE555芯片搭个振荡器做信号源。