PIC 单片机烧写程序时提示Fuse error 0x2007错误
该错误的原因主要是因为配置位的错误
没有详细的去研究,大概做个判断 一应该是编译器或者编程软件的错误,有两个位不能读出来,也可能是置代码保护的原因。
当把代码保护的配置位关闭后,该错误消失。
所以目前的解决方法是:在code中关闭代码保护功能。
//********************************************知识补充***********************************************//
在PIC系列单片机里,其芯片内部大都有设置一个特殊的程序存储单元,地址为2007,由单片机的用户自由配置,用来定义一些单片机功能电路单元的性能选项。我们把这个单元叫做器件配置字(Configuration Bits)。这种设计给单片机开发工程师带来了很大的灵活性,但是也给初学者带来了一些麻烦。
在编译器里怎么样对配置位编程
PIC单片机正常运行时,是无法对配置位进行存取的,只能在编程模式下存取。可以通过对配置位编程( 读为”0”) 或不编程( 读为”1”) 来选择不同的器件配置。对配置位编程后,是否能够更改其设置取决于器件的存储工艺和封装形式。对于只读存储器(ROM) 器件,这些配置位在ROM 代码提交时即被确定,且一旦器件掩膜完成,即无法更改( 若要更改,则需新的掩膜代码)。对一次可编程 (OTP) 器件,一旦这些位被编程 ( 为”0”),就无法更改了,而FLASH的单片机在每次编程下载的时候是可以更改的。
编译器一般都可以采用菜单方式设置,在编译程序时将设置字一并完成,烧写芯片同时完成CONFIG的烧入。用PIC官方编译工具MPLAB IDE7.30设在编译器里对配置位编程 。点击菜单栏Configure下的Configuration Bits出现的对话框)。设置的时候直接点击相应Setting下面菜单会出现下拉菜单
然而,这样设置后,有的编译器编译的HEX文件并不包含CONFIG,因此,在程序代码中直接包含CONFIG设置是一种好习惯(这样编译的HEX就会包含CONFIG设置)。
下面是在MPLAB IDE7.30汇编语言设置配置位的情形:
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF &
_MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT 注意:CONFIG前面是2个下划线“_”,中间没有空格,而且不能在行的第一列位置,至少空一格。项目的定义可以在头文件中找到(*.inc)。每种芯片具体设置不完全一样。
下面是在PICC的C语言编译器配置位的设置情形
__CONFIG(INTIO & WDTDIS & MCLRDIS & BORDIS & UNPROTECT & PWRTEN);项目的定义可以在头文件中可以在安装PICC文件下的include文件夹找到。要注意,在语句的最后要加上“;”,定义的内容还要用括号括起来。
上面是CONFIG的一种写法,它的好处就是意义比较明显,如汇编的WDT_OFF和C语言的WDTDIS都是不使用PIC单片机看门狗的意思。
如果你对如何采用上述方法设置CONFIG还是觉得麻烦,还有一个好方法:在开发工具软件(比如MPLAB-IDE)的CONFIG设置菜单里先选择好项目,确认设置正确。这时会有一个定义字(16进制,随着设置不同而改变),在图2的VALUE的下面,复制后,再粘贴到__CONFIG后,比如:汇编代码可以这样写“__CONFIG 3FFFH”,至于C语言可以这样“__CONFIG (0x3FFF);”。
在编程器下载软件里设置
一般的编程器都会有配置位的选项,根据需要进行选择。
//********************************************知识补充***********************************************//
由于以上原因,编译器设置位可能会失效,所以在代码中写配置位是一种好习惯。由于又想配置代码保护功能,
故对于可批量的程序,可以采用修改hex文件实现(就不用在code中写配置位,直接编程器中配置好了保存hex后批量写入)。
如果每个程序都需要修改的话,就不能每一个每一个的修改hex了。就需要在code中配置,例如__CONFIG (0x3FFF);
烧写的时候就仅需要配置一个代码保护就可以了。没有以前那么多的配置信息,方便了许多。
PIC单片机烧写程序erro 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)