太多的命令执行会导致Arduino磨损吗?


12

如果这是一个愚蠢的问题,请原谅,但我找不到答案。

我一直想知道,如果代码很轻并且不需要执行过多的操作,Arduino(或其他微控制器)是否会感到高兴。比起仅使LED闪烁的代码,是否包含过多的if,过多的循环和各种复杂的计算的代码使Arduino磨损得更快?


另请参阅链接的问题
James Waldby-jwpat7

Answers:


20

不,代码不会“消耗” MCU。通常,无论您做什么,都在执行大致相同水平的活动。甚至delay()在“闲置”时也会做很多工作。

有一些命令可以减少CPU的工作-将其置于IDLE或SLEEP模式下-但是这些命令用于节省功率,而不是减少MCU的“磨损”。

当然,有些特定的事情的寿命有限,您只能使用有限的时间-诸如写入EEPROM和写入闪存之类的事情-因此您不想一直这样做。除此之外,不,无论您做什么,都不会使MCU耗尽。


2
但是所有的半导体时代,不是吗?我记得机制是热载流子注入和偏置温度不稳定性。当然,这将需要很多年。
MV。

5
@MV。是的,但是您在微控制器上运行的内容并不会真正影响它。无论您做什么,都在(大致)相同级别上运行CPU。您一直在使用所有(几乎)所有内容。
马延科

1
代码不会间接影响产生的热量吗?发热的组件可能会更快磨损。
桅杆

3
只有非常微小的数量。即使什么也不做,它也在努力工作和处理。
马延科

谢谢您的回复。现在,我可以随意倾斜并编写所需的代码,不必担心Arduino的使用寿命!但是,是否经常与外部组件进行交互也是如此?读取传感器,SPI通信等?
ahmadx87

6

不是。好吧,如果您运行20年,它可能会慢慢磨损....(像大多数其他物理产品一样)?至少它不依赖于代码的复杂性,而是依赖于同一存储区中完成了多少次写操作。而且,当它磨损时,它只会变砖,并且不会像使LED闪烁那样变成更简单的代码。

Arduino(Uno)具有三个内存部分。SRAM,FLASH和EEPROM。SRAM更像是逻辑晶体管的门。它不会因存储变量而耗尽。闪存和EEPROM由浮栅组成。当您写入新数据时,它们会慢慢磨损。从Ateml微控制器的数据表中,它指出:

闪存的耐久性至少为10,000个写入/擦除周期。(从第8.2章开始)

EEPROM的耐久性至少为100,000个写入/擦除周期。(摘自第8.4章)

但是,闪存是代码执行的空间。Arduino运行时不执行写操作。您只有在上传新代码时才写入FLASH存储器。因此,当您上传代码至少10,000次时,它会耗尽。

如果您真的想要,可以编写一个特殊的代码对FLASH存储器进行自我重新编程,通常是为了在Arduino关闭时保留变量数据。当您编写此类程序时,它会慢慢磨损,因为FLASH存储器的写入持久性不高。因此,即使您想在关闭Arduino的情况下也要保留数据,建议您使用寿命更长的EEPROM。

总而言之,它将通过重写FLASH或EEPROM存储器而不是通过代码执行来磨损。


6

对于业余爱好者:

关于唯一与寿命相关的软件问题可能是从程序内部以最快的速度写入FLASH存储器。但是很少有程序使用需要在诸如更换电池之类的事件中生存的变量。

关于硬件的唯一限制寿命的问题是将低电阻负载(白炽灯泡),电感性负载(例如直接驱动机械继电器)的输出过载,仅举两个例子。但是问题仅在于软件。


5

...(或其他任何微控制器)...

其他答案很好,但有一个小例外。

铁电RAM(FRAM)是一种存储器,结合了闪存和EEPROM的非易失性,SRAM的可写性以及DRAM的密度。

但是,对FRAM的读操作对FRAM中存储的数据具有破坏性,而对FRAM构造本身的写操作则具有破坏性(并且由于读取数据会破坏数据,因此每次都必须将其写回)。如果您的代码位于FRAM中,则运行它会及时耗尽MCU的电量。但是,鉴于FRAM具有数亿亿次的写入耐力,因此在设备生命周期内,由于FRAM,MCU不太可能无法工作。

使用FRAM的MCU的示例包括TI的MSP430FRxx系列


1
通常,如果有FRAM,则没有其他内存。甚至没有闪光。
马延科

3

可能不是。随着时间的流逝,Atmel芯片可能会变热(即使延迟也不能阻止这种情况),但是,如果有可能释放热量,我认为没有问题。但是大多数情况下,只有超频会导致严重的问题,或者在完全封闭的盒子中或在高温环境中使用Arduino。

相比之下:许多计算机可以在不关闭的情况下运行多年,从这个意义上说,只要可以消除产生的热量,Atmel(芯片)就没有什么区别。

您可以在此处在Atmels中阅读有关热传感器的更多信息:内部温度传感器


2
Arduino实现延迟的方法是不断检查是否已经经过了足够的时间。因此,运行程序或拥有delay相同的处理能力。
Gerben

我将更新(删除)该部分...谢谢!
Michel Keijzers '17

有所不同-当今大多数计算机都具有大量的节能功能。很多东西在不需要时会关闭,这几乎是自动发生的。Arduino也有减少功耗的方法,但是您需要明确使用它们。如果您大部分时间都需要关闭电源,请学习.sparkfun.com / tutorials / reducing - arduino -power- consumption是一个很好的开始。特别是,低功耗睡眠将功耗降低了大约一千倍-不像delay,它会使CPU旋转。当然,这是有代价的:)
a安
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.