搜索
bottom↓
回复: 46

AVR可不可以像PIC一样把熔丝配置写进代码里?

[复制链接]

出0入0汤圆

发表于 2009-4-11 10:56:25 | 显示全部楼层 |阅读模式
感觉PIC的熔丝配置实在是很方便,在代码里就可以写入了,编译成HEX文件后包含了熔丝配置字,AVR可不可做到像PIC那样写熔丝配置字?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2009-4-12 08:09:04 | 显示全部楼层
没有人知道吗?估计是不能吧。

出0入0汤圆

发表于 2009-4-12 11:51:43 | 显示全部楼层
应该不行,我一直不喜欢AVR的这个功能呢,不过是人家开发的,你不用不行,我一直觉得MSP430的很好,在运行中可以改运行频率,很有用哦

出0入0汤圆

发表于 2009-4-12 13:50:57 | 显示全部楼层
AVR好象也能吧

修改: 在此我没有把问题说清楚,使人认为是熔丝位可以修改了  我是针对上楼的说法  而说的,在上楼 说是时钟不可以在程序中修改  因为我记得我做过修改时钟的 程序 所以有以上的说法。
正如以下马老师说的 “AVR的系统时钟频率在运行中也是可以改变的,里面有专门的控制寄存器”

出0入0汤圆

发表于 2009-4-12 15:04:26 | 显示全部楼层
如果对一片芯片不了解的话,请先认真学习和了解一下。如果你自己的水平不到位的话,更不要随便发表评论,这样会给人误导,尤其是对新手和初学者。

使用熔丝位设置配制器件的性能和功能在许多新品种的MCU中经常采用。它可以充分发挥芯片的最佳性能,以及适合不同情况下使用。

但在一般情况下,不提倡用户程序在系统运行过程中去修改熔丝位设置,这会带来非常大的隐患。因为一旦用户程序中有BUG,或受到干扰时,对熔丝位进行了误操作,那么系统就彻底完结了。严重的就是重新上电系统也不会工作。

因此,MCU的熔丝位,尤其是重要的熔丝位是不允许用户程序改动的。对于允许用户程序改动的熔丝位,也会采取各种方式做保证,同时还有一定的限制的。

lz位提出的问题并没有讲清楚。下面是2种配置熔丝位的方式,请大家在使用不同芯片的过程中注意和做比较。

1。决大部分的熔丝位不允许用户程序改动,只有个别的允许(目前AVR就是这样的)。因此熔丝位的配置必须单独进行(不包含在HEX中,HEX是纯用户的代码)。但大部分的AVR编程下载软件都支持一揽子操作:即在编程环境中设置好熔丝位的配置,在HEX下载的过程中,按操作顺序同时也把熔丝位设置了。比如使用双龙的COPYA,你可以将熔丝的配置以及HEX内容通过PC放入COPYA中。然后就不需要PC,仅使用COPYA对新的芯片下载HEX,此时熔丝位也自动配置好了。
   
    另外,AVR的系统时钟频率在运行中也是可以改变的,里面有专门的控制寄存器。但系统时钟频率的改变是有限制的,不易随便改动。比如,频率变化太大,太突然的话,会造成系统混乱,指令执行不正常。

2。熔丝位的配置和用户代码都在一个HEX文件中,但它们是独立的2部分。编程下载的协议规定了先将HEX中用户代码部分写入FLASH,然后根据HEX中的熔丝配置改动芯片中的熔丝。这样的方式,看上去熔丝的配置在HEX中,但实际上用户代码还是不能改动熔丝位的。比如PSoC的加密位。

因此你必须清楚的了解:
1。哪些熔丝位允许用户代码直接修改(也就是用户的程序在运行中可以修改熔丝位),那些不允许。
2。允许用户代码直接修改的熔丝位,其限制条件如何,用户修改会产生什么不好的后果。
3。对于那些不允许用户代码修改的熔丝位,肯定就是一次性的配置了。那么是如何进行配置的?是通过芯片中的专用代码(如BOOTLOAD);还是通过编程器的写入(AVR)。

要知道,这些东西,很多芯片的代理和支持工程师自己都说不清楚的。

以上提供大家参考,希望各位不要被假象所迷惑,踏踏实实、认认真真的去学习和掌握才能真正的提高自己。

出0入0汤圆

发表于 2009-4-12 15:22:13 | 显示全部楼层
可以。
WinAVR2008 以上才可以(WinAVR20071221好像也让可以)。

    #include <avr/io.h>

    FUSES =
    {
        .low = LFUSE_DEFAULT,
        .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
        .extended = EFUSE_DEFAULT,
    };

    int main(void)
    {
        return 0;
    }


编译后生成ELF文件,包含flash,eeprom,fuse,lock等。
直接用AVR_STUDIO下载ELF文件,下载flash,eeprom,fuse,lock,一步到位。

出0入0汤圆

 楼主| 发表于 2009-4-12 16:17:58 | 显示全部楼层
谢谢5楼,就是需要这样的功能,也许有人问为什么要这个功能呢?实际上是为了生产方便,特别是大规模的生产,很多在车间的工人根本不熟悉单片机,你要教会他们在编程器上配置复杂的熔丝位,那不知道要花多少功夫。PIC可以把熔丝配置写进HEX文件,这个功能对大规模生产是非常方便的。

出0入0汤圆

发表于 2009-4-12 16:57:11 | 显示全部楼层
嗯.没错.

出0入70汤圆

发表于 2009-4-12 17:29:30 | 显示全部楼层
MARk

出0入0汤圆

发表于 2009-4-12 19:21:58 | 显示全部楼层
FUSES =  
    {
        .low = LFUSE_DEFAULT,
        .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
        .extended = EFUSE_DEFAULT,
    };

不是用户真正的代码,都是伪指令,是给编译器。不是所有的AVR C编译器都支持。ELF是一个打包的文件。这就是我说的第一种情况。

LZ,我已经告诉你最方便的,在大规模生产中使用AVR的办法了,比你说的PIC还方便,连PC都不要的。

到双龙网站找一下COPYA这个小东西,了解一下,就是为了大规模生产设计的。技术人员只要写一遍,然后就把那个“香烟盒”给个小学生也能下载代码,配置熔丝了。

出0入0汤圆

发表于 2009-4-12 19:33:10 | 显示全部楼层
以后会用到。。。。。。。

出0入0汤圆

 楼主| 发表于 2009-4-12 19:57:11 | 显示全部楼层
谢谢马老师,正在了解你所说的COPYA!

出0入0汤圆

发表于 2009-4-12 20:27:47 | 显示全部楼层
FUSES =   
    {  
        .low = LFUSE_DEFAULT,  
        .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),  
        .extended = EFUSE_DEFAULT,  
    };  

不是用户真正的代码,都是伪指令,是给编译器。不是所有的AVR C编译器都支持。ELF是一个打包的文件。这就是我说的第一种情况。

说是伪指令并不准确。
这段代码确实是一段C语言代码,展开来就是:
typedef struct
{
    unsigned char low;
    unsigned char high;
    unsigned char extended;
} __fuse_t;

__fuse_t __fuse __attribute__((section (".fuse"))) =
{
     .low = LFUSE_DEFAULT,
     .high = (FUSE_BOOTSZ0 & FUSE_BOOTSZ1 & FUSE_EESAVE & FUSE_SPIEN & FUSE_JTAGEN),
     .extended = EFUSE_DEFAULT,
};

上面的代码是定义一个结构体变量,初始化,并存放到段".fuse"。

GCC是把fuse单独作为一个地址段。
比如说,定义一个eeprom变量,这个变量会存放到eeprom段。
定义一个flash变量,这个变量会存放到flash段,且不能改变。
定义fuse变量,会存放到fuse段,不能改变。

GCC编译后,生成ELF文件,包含所有段信息,包括FLASH,EEPROM,FUSE,LOCK等等,可以用命令把flash,eeprom提取出来,
生成hex文件。这就是我们通常用到的flash.hex,eeprom.hex。
生成的flash.hex,eeprom.hex可以对单片机编程。

实际上,fuse也可以生成hex文件。如果有软件支持hex格式的fuse,那么就可以像编程eeprom那样编程fuse。
不过目前好像没有软件支持hex格式的熔丝位。生成fuse.hex也没什么用处。

一般并不需要生成HEX,而是直接使用ELF文件。
ELF文件已经包含了所有段信息,一次编程就可以把FLASH,EEPROM,FUSE,LOCK全部写到单片机里。

LOCK也是一样。

出0入0汤圆

发表于 2009-4-12 20:45:02 | 显示全部楼层
12楼说的不正确。

1。“这段代码确实是一段C语言代码”

准确的说,是一段非标准的C代码。在其它的C中不认识。

2。这段代码不产生执行代码(用户运行代码),是让编译器去做某种处理的,所以就是伪指令。因此你根本不能把这段代码的AVR汇编给出。

3。“ELF文件已经包含了所有段信息,一次编程就可以把FLASH,EEPROM,FUSE,LOCK全部写到单片机里”

是的,但它不是说用户执行代码可以在运行中配置熔丝位。这是两个完全不同的概念。

4。HEX只是一种描述二进制数据的文件,里面的内容可以自己定义的。不同的器件采用了不同的方法。PSoC就把用户执行的程序和加密配置数据都放在一个HEX文件中的。

对于AVR也完全可以这样处理,只要自己定义HEX中的内容,把FLASH、EEPROM和FUSE等都放在里面,自己编写严格编程软件就可以了。只是ATMEL没有采用这样的办法。

分开有分开的方便,合在一起也有合在一起的好处。关键是自己是否真正的明白。

出0入0汤圆

发表于 2009-4-12 21:04:03 | 显示全部楼层
“这段代码确实是一段C语言代码”
准确的说,是一段非标准的C代码。在其它的C中不认识。

的却,不和标准C,不过这里不能强求符合标准C。
可以说AVR C编译器定义eeprom变量,都是不和标准C的,这种非标准C大家一样在用,
不能强求定义eeprom也符合标准C。
同样,定义fuse变量也不能强求符合标准C。


“ELF文件已经包含了所有段信息,一次编程就可以把FLASH,EEPROM,FUSE,LOCK全部写到单片机里”
是的,但它不是说用户执行代码可以在运行中配置熔丝位。这是两个完全不同的概念。

我和马老师对“在代码里就可以写入(熔丝)”理解不一样。(“在代码里就可以写入(熔丝)”有歧义?“)
马老师的意思是,用指令写入熔丝是不行的。
我说的是,在C语言中,用C语言代码配置熔丝是可行的。(C语言并不是一定要编译出指令,才是代码)

出0入0汤圆

发表于 2009-4-12 21:50:19 | 显示全部楼层
有好多软件与下载器,编程器都可以完成这个功能,比如我的progisp就可以用工程的方式来解决此问题。一次设置好所有的参数一键操作即可。
    我们的zf-007脱机下载器也可以完成这种所有的功能,pc配置完参数,也是一键操作,配置好后交给生产,即使傻子也会按一个键,完成写入工作。

出0入0汤圆

发表于 2009-4-12 23:11:45 | 显示全部楼层
to: void_c void *c

不必饶圈子,最根本的问题就是:在AVR的指令集中有没有修改熔丝位的指令!我想你是清楚的。

我说的用户执行代码,是指最后能落实在汇编(也就是机器码)的,AVR可执行的代码。而不是C代码。

在C里面,不能直接生成运行代码的语句,都是伪指令或定义语句。比如 char a;就是标准C,但决不会生成具体的操作指令代码,只是告诉编译器分配内存地址。

====================================================
我和马老师对“在代码里就可以写入(熔丝)”理解不一样。(“在代码里就可以写入(熔丝)”有歧义?“)
马老师的意思是,用指令写入熔丝是不行的。
我说的是,在C语言中,用C语言代码配置熔丝是可行的。(C语言并不是一定要编译出指令,才是代码)

至于这点,并不能作为通用的方法,就是对AVR来说,就有GCC、IAR、CVAVR、ICC等4个C编译器,你的这个说法也仅适合于GCC。因此,就是这样说的话,也需要加上限定语句:“在GCC的C语言中”,用C语言代码配置熔丝是可行的。

但就是这样解释,也有点偷梁换柱的感觉,容易引起误解。 这也是很多FAE和代理常用的手段。

出0入0汤圆

发表于 2009-4-13 08:38:05 | 显示全部楼层
【16楼】 machao
讲的很好,确实avr无法在指令中修改熔丝。但通过编程器可以很好的解决此问题。说句心里话,avr和pic16f系列相比avr的优势还是很突出的。正因为avr熔丝的特殊性,在应用中给用户带来了麻烦。比如不熟悉的使用者,熔丝配置不好,就会在使用中出问题,因此很多人认为不稳定。做产品的稳定不稳定还有许多其他的因素,比如最直接的就是你的电源,电源可是致命的。还有,就是你的pcb设计的如何,往往这里有隐患。许多人认为低频板emc不突出不重要,采用自动布线,岂不知这因为如此埋下了隐患。
    呵呵!胡乱说一通。

出0入0汤圆

发表于 2009-4-13 11:16:32 | 显示全部楼层
【18楼】 zhifeng
我知道你非常熟悉8位的系统,对AVR也是非常了解的,并且推出了自己设计的AVR编程工具。因此你上面关于熔丝的情况说的不错。

但我不赞成你的说法:“因为avr熔丝的特殊性,在应用中给用户带来了麻烦”。

现在的产品要求是多样化的,要求性能也越来越高,所以对MCU也提出了更高的要求,要能最好的适合各种工作环境和条件。因此采用熔丝位进行配置也是新的器件所采用的方法。

其实这个技术并不是AVR的“专利”,大家使用的PC电脑早就采用了这样的技术:就是开机后可以进入BIOS的设置,如密码设置,是否使用主板上的某个口,显示缓存的大小等。

如果会设置PC的BIOS,就能更好的发挥电脑的性能,但是不懂的话,只能说明使用者水平比较差,不能说是“给用户带来了麻烦”。换句话讲,烈马只有好的骑手才能够驾御的,骑不了烈马只能说明骑手的骑术还不到家。性能越好的芯片,要求使用者的水平也是越高的。

基础知识不牢固,知识面窄,不注重技术上的不断学习和提高,不从自己本身的角度去找问题,不懂装懂而且还要去懵更不懂的,这种现象在国内电子行业中非常普遍。

出0入0汤圆

发表于 2009-4-13 11:49:11 | 显示全部楼层
“因为avr熔丝的特殊性,在应用中给用户带来了麻烦”。

除AVR外,也用过一些其他MCU,没发现有类似AVR的熔丝情况。(只发现MSP430有个JTAG熔丝,一旦编程,不可恢复,与AVR也熔丝也有较大差别)

或许是我孤陋寡闻,不过一定程度反映AVR的熔丝确实有点特殊。

在应用中给用户带来了麻烦肯定存在,这里的用户不一定就是非常熟悉AVR的工程师。


“换句话讲,烈马只有好的骑手才能够驾御的,骑不了烈马只能说明骑手的骑术还不到家。性能越好的芯片,要求使用者的水平也是越高的。”
有时侯,宁愿选择温顺的马来骑,未必硬要选烈马。
(比如AVR C编译器,IAR编译性能摇摇领先其他C编译器,但很多人却未必选择用IAR,而是用相对容易,方便的ICC和CVAVR。)
芯片(MCU)性能好坏,与熔丝并无啥关系。

出0入0汤圆

发表于 2009-4-13 12:15:29 | 显示全部楼层
实际上,好多MCU都有类似AVR熔丝的情况,STC可以配置外部晶体或内部RC,可以配置满幅振荡等可以看做是熔丝的变种。
你想骑温顺的马也未必不可,默认的熔丝就可以让单片机跑起来,只不过熔丝配置可以让用户更好的配置自己的系统发挥更好的性能

出0入0汤圆

发表于 2009-4-13 12:21:01 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-4-13 13:14:48 | 显示全部楼层
孤陋寡闻了,没用过STC。

个人还是喜欢用程序(马老师所说的伪指令)配置熔丝,
下载程序的时候,就不必去单独配置熔丝位。

可惜,只有WinAVR支持直接在程序中配置熔丝位。IAR不行,而我大多数情况用IAR。
不过,可以借助AVR_Studio,将HEX文件反过来转换成ELF文件,包含EEPROM,FUSE,LOCK,下载程序就可一部到位。

不过我个人对直接下载ELF文件并不满意。ELF文件并未包含其他说明,比如是什么项目,用什么CPU(ELF可以包含signature信息,不过不是很直观说明是什么CPU),要注意些什么,程序是测试文件还是发布文件等等。

个人更倾向于把flash.hex,eeprom.hex和一个XML文件打包成zip,由XML文件记录所有其他配置,包括CPU,FUSE,LOCK,和其他所有说明。下载程序的时候,先解压,读取XML配置,通过AVRDUDE对单片机编程。
(个人对上位机编程水平有限,还只是一个想法。目前碰到难题是是如何解压,打包zip文件)

出0入0汤圆

发表于 2009-4-13 15:55:00 | 显示全部楼层
骑术高的骑手,就可以随心所欲,根据实际情况选择不同的马。

骑术不高的骑手,就只能骑温顺的马。这也没什么。就怕为了掩盖自己骑术不高,把烈马说成连温顺的马也不如。

=====================================================================================================================
个人更倾向于把flash.hex,eeprom.hex和一个XML文件打包成zip,由XML文件记录所有其他配置,包括CPU,FUSE,LOCK,和其他所有说明。下载程序的时候,先解压,读取XML配置,通过AVRDUDE对单片机编程。

类似这样的东西是有的,我说到的双龙的COPYA,和【18楼】zhifeng推出的AVR编程工具都是可以脱离PC,适合大批量生产的工具。

另外例如PSoC,就是把FLASH、配置、加密等都定义在HEX中,实现一次完成所有的操作。

在最根本的器件编程协议中,FLASH、EEPROM、熔丝是分开的,可以单独操作。只是做系统时,把三个部分和在一起了。这只是软件的圈套,需要的话,自己可以编写的。

=====================================================================================================================
所谓的“包含EEPROM,FUSE,LOCK,下载程序就可一部到位”,是适合在产品调试完成,批量生产的情况下使用的。

在系统调试过程中,经常是单独的修改。比如改变一个配置,只要点一下相映的配置,然后改熔丝。或直接改EEPROM中的某个数据,进行调试。如果是“一部到位”的,就需要打开编译环境,打开C,改代码,编译,再下载,反而不方便。

===================================================================================================================
“或许是我孤陋寡闻,不过一定程度反映AVR的熔丝确实有点特殊。
在应用中给用户带来了麻烦肯定存在,这里的用户不一定就是非常熟悉AVR的工程师。”

如果是有经验的硬件工程师,就会发现AVR的熔丝位都是根据实际各种不同需要,面向各种实际情况和不同应用的,并没有什么特殊。
假如买一个使用AVR做的产品,而销售人员说,设计这个产品的工程师“不非常熟悉AVR”,这样的产品你要吗?
作为一个工程师,使用AVR开发产品,自己“不非常熟悉AVR”,已经是不负责任了。可是自己不去努力的熟悉AVR,反而说“AVR的熔丝确实有点特殊”,就更可怕了。

假如你是公司的老板,这样的工程师你要吗?

出0入0汤圆

发表于 2009-4-13 18:47:38 | 显示全部楼层
我觉得马超老师说的太绝对了,MSP430的设计思想肯定比AVR好,比如,它自己会判断用户选定的晶振选项是否启动成功,若一定时间内失败,它自己有个内部晶振启动的,不会出现像AVR那样会锁死MCU的情况,错误,谁都可能犯,但MCU应该有机制来避免

出0入0汤圆

发表于 2009-4-13 18:48:42 | 显示全部楼层
对不起,上面打错了,是马潮老师,拼音就这个不好!

出0入0汤圆

发表于 2009-4-14 02:26:06 | 显示全部楼层
【25楼】 mikezfq
是什么说的绝对了?我并没有去比较AVR和MSP430谁好谁不好。不明白你到底是指的什么。

另外,你说的MSP430的特点,我到不认为是优点。如果用户选定的晶振选项没有启动成功,那么系统就不应该工作。尤其是在工业控制系统中,如果频率不对,定时、测量都会产生问题。此时如果系统还工作,就会造成假象,引起事故的发生。

“错误,谁都可能犯,但MCU应该有机制来避免”好象MCU目前还没有那么聪明,能避免用户的错误。

“用户选定的晶振选项没有启动成功,则采用自己内部的时钟”不是“避免”了错误,反而可能“掩盖”了错误。比如当你发现时钟不正确,可能不会首先是想到系统时钟不正确,而去拼命在自己的代码中找原因。

出0入0汤圆

发表于 2009-4-14 09:11:50 | 显示全部楼层
想大规模量产就用脱机烧写器,工人们不用了解细节,也不用pc,速度也快

出0入0汤圆

发表于 2009-4-17 21:10:21 | 显示全部楼层
【27楼】 machao  老师。我觉得你的说法也不全对,你说的:
“用户选定的晶振选项没有启动成功,则采用自己内部的时钟”不是“避免”了错误,反而可能“掩盖”了错误。比如当你发现时钟不正确,可能不会首先是想到系统时钟不正确,而去拼命在自己的代码中找原因
其实,出问题后,在430中,你可以知道是什么地方出问题了,你可以运行一些代码,比如错误提示一类的

出0入0汤圆

发表于 2009-4-17 21:24:04 | 显示全部楼层
【6楼】 hexenzhou
积分:402
派别:
等级:------
来自:
谢谢5楼,就是需要这样的功能,也许有人问为什么要这个功能呢?实际上是为了生产方便,特别是大规模的生产,很多在车间的工人根本不熟悉单片机,你要教会他们在编程器上配置复杂的熔丝位,那不知道要花多少功夫。PIC可以把熔丝配置写进HEX文件,这个功能对大规模生产是非常方便的。  
-----------------------------------------------------------
    晕哦,LZ仅仅就为这个,大家搞得这么麻烦,做个配置文件,生产要做的就是打开配置文件,点击下载就OK啦。

    “avr无法在指令中修改熔丝”对这点持保留态度,在BootLoader中,可以通过SPM指令修改熔丝位的,只是这样太危险,不建议使用。

出0入0汤圆

发表于 2009-4-17 23:28:05 | 显示全部楼层
自己做个脱机下载器就行了,论坛上好多人做过,包括我,呵呵,搜下就一堆

出0入0汤圆

发表于 2009-4-17 23:32:19 | 显示全部楼层
Mark

出0入0汤圆

发表于 2009-4-18 00:27:57 | 显示全部楼层
好,不错,学习不少东西,谢谢几位。

出0入0汤圆

发表于 2009-4-25 20:00:56 | 显示全部楼层
我在这里提出个新问题,如果我想做到在程序里读某一熔丝位行不行呢?举例:读出外部振荡还是内部振荡,如果是外部就正常运行程序,如果是内部振荡就进入另一段警告程序,这样行不行?

出0入0汤圆

发表于 2009-4-29 16:18:41 | 显示全部楼层
太精彩了,学到了,这就好好看数据手册去

出0入0汤圆

发表于 2009-8-6 11:21:35 | 显示全部楼层
标记

出0入0汤圆

发表于 2009-8-6 11:50:55 | 显示全部楼层
与时俱进,与时俱进!

请马老师与上官不要在社会主义与非社会主义的问题上纠缠了,能抓住耗子的就是好猫.

符不符合C语言的规范,在单片机上不是多重要的问题,因为...我做的51与AVR程序,从来没有不加修改就能直接移植的.

AVR的熔丝,时间一长,就是编程者本人都记不住,还得在程序中加以注释,如果在程序中有fuse段可以用,何乐而不为呢?

我不能准确记得马老师执教的学校名称,您的学生应是第一批录取的大学生吧? 经常看到有人认为现在的大学生毕业笨得要死的说法,但当您面对连高中都未好好读的生产线工人时,您就会认同让"标准的C代码"一边去吧的想法了.

个人看法,不对之处,请砖之.

出0入0汤圆

发表于 2009-8-6 17:49:01 | 显示全部楼层
评论要客观,各有各的好处,不然他们早就淘汰了

出0入0汤圆

发表于 2009-8-7 11:52:48 | 显示全部楼层
小白学习

出0入0汤圆

发表于 2011-10-7 19:34:19 | 显示全部楼层
等用的时候再来慢慢看

出0入0汤圆

发表于 2011-10-7 19:44:06 | 显示全部楼层
只用过PIC的熔丝通过代码直接编写,想不到AVR也可以,学习了。

出0入0汤圆

发表于 2011-10-7 19:58:21 | 显示全部楼层
"在AVR的指令集中有没有修改熔丝位的指令!"

most older mcus (pic or avr for example) have no native instructions to change fuse: because fuse settings are essentially flash memory and there is no need to have separate instructions to change them - some pic went as far to put fuse settings outside of flash memory accessible by the mcu.

so the question itself makes zero sense.

the criticism of avr on this front stands. it is much easier and far more fool-proof to have fuse settings to be generated in the hex code so you don't need to worry about fuse settings during burning. and winavr is doing the right thing in my view.

出0入0汤圆

发表于 2011-10-7 20:07:47 | 显示全部楼层
"不过这里不能强求符合标准C。 "

agree. if you limit yourself to standard C, pretty much all mcus will be inoperable: no interrupt, no flash, no rom, etc.

出0入0汤圆

 楼主| 发表于 2011-10-7 20:14:39 | 显示全部楼层
晕,居然有人把我两年前发的坟贴给挖出来了。

出0入0汤圆

发表于 2011-10-7 21:37:57 | 显示全部楼层
mark!

出0入0汤圆

发表于 2014-11-24 14:20:54 | 显示全部楼层
zhwm3064 发表于 2009-4-12 13:50
AVR好象也能吧

修改: 在此我没有把问题说清楚,使人认为是熔丝位可以修改了  我是针对上楼的说法  而说的 ...

avr系统时钟在程序里怎么改,通过哪个寄存器
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 06:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表