您好,欢迎访问本站!
商品分类

AVR单片机烧录和熔丝位的操作初步

作者: 倪大德

AVR单片机由于接口丰富,功能齐全,性价比好,运用越来越广。一些朋友利用网上下载的程序烧录芯片时,由于对熔丝位的意义没搞清楚,而任意改动其设置,结果造成芯片被锁定,即不能用下载线对其读写了。(甚至会误认为芯片已坏)下面将以ATmega8(M8)为例,简单的介绍AVR单片机烧录相关知识和熔丝位的操作方法。
一。内部RC振荡器
    玩51单片机的朋友知道,晶振为CPU提供时钟源,单片机没有时钟源是不可能运行的。但AVR则不同,没有晶振单片机照样运行。原因是其内部有1M,2M,4Mt和8M四种频率的RC振荡器。新购入的芯片内部RC振荡器出厂默认值为1MHz。也就是只要将程序烧录到M8中,程序即可运行。当然此时单片机时钟源由内部1MHzRC振荡器提供。
    由于芯片工艺制作上的离散性,每个芯片内部RC振荡器频率有不同的误差。因此M8在只读存储器中存储了对内部RC振荡器进行校正的字节,每个芯片校正字节的参数是不同的。(当然在精度不高的场合,可以不作校正)
    校正方法是:接好下载线,插入芯片后从烧录软件PonyPr0g2000菜单“命令”下的“读振荡器校正字节”即可中读取。如读取的字节为0xaa;我们只要在程序的初始化中加入
       OSCCAL=0xaa;    //校正内部RC振荡器频率,不同的芯片参数有差异
    特别说明的是,使用内部RC振荡器出厂默认值为1MHz,硬件会自动将校正参数装入。只有系统在选用其它三个内部RC振荡器时,才需要将校正参数在程序中加入。
    因此AVR单片机和51单片机不同的是:根据需要除可选用外部晶振作为时钟源。当然也可选用内部RC振荡器作为时钟源。

    而如何设置是用内部时钟源还是用外部时钟源,AVR系列单片机是通过对熔丝位的操作来实现的。

二。熔丝位的操作  
  AVR的芯片的烧录和熔丝位的操作,是由ISP下载线配合软件进行的,ISP下载线,十分简单,可以自制,我目前使用的冯老师制作的BBMV并口下载线,软件虽大多用PonyPr0g,但我和老冯一样还是偏爱晓奇老师的。全中文界面,操作提示,使用十分方便,祥见:
https://www.yleee.com.cn/forum.php?mod=viewthread&tid=1
    熔丝位的操作主要为二个部分。熔丝位低字节(时钟及延时启动)和熔丝位高字节(引导),不能搞错,因为有些作品发布时不会附熔丝位设置图,往往只告知低字节和高字节是多少。请见下图,图中熔丝位低字节是oxe1,熔丝高字节是oxd9.有了这样二个数据,你可以方便地进行熔丝位的操作了。
    其实熔丝位的操作十分简单,因为绝大部分是采用的出厂默认值。下图为M8熔丝位的设置界面。图中已用红线将其对应的功能标出。如:BODLEVEL–对应的是监测电压。你如果在BODLEVEL前的小方框内打钩,对应的功能说明区内就会有相应的说明。可以对每项都试一下,以便对熔丝位的操作功能有一定的了解。(可以不接ISP下载线只要打开软件就能试)

熔丝位.JPG (62.76 KB, 下载次数: 79)下载附件  保存到相册2008-11-16 09:56 上传
    在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝位的状态为1(禁止);“Programmed” 表示熔丝位的状态为0(允许)。因此,配置 熔丝位的过程实际上是“配置熔丝位成为未编程状态1或成为已编程状态0”。  新的AVR芯片在使用前,应先查看它的熔丝位的配置情况,建议在没有高压并行编程器的情况下,最好将各个熔丝位的状态记录备案。再根据实际需要进行熔丝位的配置

更多内容请进去论坛讨论区 https://www.yleee.com.cn/thread-18-1-1.html

发表回复

登录后才能评论