AVR单片机如何在编写程序里就配置好熔丝位?

电子常识

2640人已加入

描述

  熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。

  在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0””。

  使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。如果要使用“all”选项,应先使用“read-》fuse bits”读取芯片中熔丝位实际状态后,再使用“all” 选项。

  以Mega8单片机为例,CKSEL位的设置通常会伴随CKOPT位一起进行。 下面是在网上搜索到的注释,供你参考:

  CKSEL3/0=0000:外部时钟,

  CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;

  CKOPT=1:禁止该电容

  ----------------

  CKSEL3/0=0001-0100:

  采用内部RC振荡作为时钟源,其具体震荡频率是:

  0001:1.0M

  0010:2.0M

  0011:4.0M

  0100:8.0M

  这里CKOPT只能设置为1

  ----------------

  CKSEL3/0=0101-1000:采用外部RC振荡作为时钟源,

  CKOPT=0:允许芯片内部XTAL1管脚对GND接一个36PF电容;

  CKOPT=1:禁止该电容 根据震荡频率范围,设置相应的熔丝位 0101:

  《0.9M 0110:

  0.9-3.0M 0111:

  3.0-8.0M 1000:

  8.0-12.0M

  ----------------

  CKSEL3/0=1001:

  采用外部时钟信号作为时钟源,

  CKOPT=0:允许芯片内部XTAL1/XTAL2管脚对GND各接一个36PF电容;

  CKOPT=1:禁止该电容

  ----------------

  CKSEL3/0=1010-1111:

  采用外部晶振,陶瓷振荡子作为时钟源,

  CKOPT=0:高幅度振荡输出(XTAL1引脚将输出一个大幅度的震荡信号,用于某些情况下供给其他处理器当做时钟源,以达到时钟同步);

  CKOPT=1:低幅度振荡输出(XTAL1引脚输出低幅度的震荡信号,用以省电、减少干扰); 并依据晶体的震荡频率范围,设置相应的熔丝位

  101X:0.4-0.9M

  110X:0.9-3.0M

  111X:3.0-8.0M

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分