Entschuldigen Sie, wenn es eine dumme Frage ist, aber ich konnte keine Antwort finden.
Ich habe mich eine Weile gefragt, ob ein Arduino (oder allgemein jeder andere Mikrocontroller) glücklich ist, wenn der Code leicht ist und nicht zu viele Operationen ausführen muss. Verbraucht ein Code, der zu viele Wenns, zu viele Schleifen und alle Arten von komplizierten Berechnungen enthält, einen Arduino früher als ein Code, der nur eine LED blinkt?
arduino-uno
hardware
code-optimization
ahmadx87
quelle
quelle
Antworten:
Nein, der Code "verschleißt" die MCU nicht. Unabhängig davon, was Sie tun, wird im Allgemeinen ungefähr das gleiche Aktivitätsniveau ausgeführt. Auch
delay()
macht viel Arbeit, während es "im Leerlauf" ist.Es gibt Befehle, die die CPU dazu bringen, weniger zu tun - sie in einen IDLE- oder SLEEP-Modus zu versetzen - aber diese werden verwendet, um Energie zu sparen, anstatt den "Verschleiß" der MCU zu verringern.
Natürlich gibt es bestimmte Dinge, die eine begrenzte Lebensdauer haben, und Sie können sie nur eine begrenzte Anzahl von Malen verwenden - zum Beispiel das Schreiben in ein EEPROM und das Schreiben in den Flash-Speicher -, sodass Sie dies nicht ständig tun möchten. Abgesehen davon, nein, egal was Sie tun, verschleißt die MCU nicht.
quelle
Es ist nicht. Nun, es könnte sich langsam abnutzen, wenn Sie es wie 20 Jahre laufen lassen ... (wie die meisten anderen physischen Produkte)? Zumindest hängt es nicht von der Komplexität des Codes ab, sondern davon, wie viele Schreibvorgänge im selben Speicherabschnitt ausgeführt werden. Wenn es abgenutzt ist, wird es einfach zugemauert und es wird kein einfacherer Code wie das Blinken der LED.
Ein Arduino (Uno) hat drei Speicherteile. SRAM, FLASH und EEPROM. SRAM ist eher ein logisches Transistor-Gate. Es nutzt sich nicht durch Speichern von Variablen ab. FLASH und EEPROM bestehen aus Floating Gates. Sie nutzen sich langsam ab, wenn Sie neue Daten schreiben. Aus dem Datenblatt des Ateml-Mikrocontrollers geht Folgendes hervor :
FLASH-Speicher ist jedoch ein Platz für die Codeausführung. Der Schreibvorgang wird nicht ausgeführt, während Arduino ausgeführt wird. Sie schreiben den FLASH-Speicher nur, wenn Sie einen neuen Code hochladen. Wenn Sie also mindestens 10.000-mal Code hochladen, nutzt sich dies ab.
Wenn Sie wirklich wollen, können Sie einen speziellen Code erstellen, um den FLASH-Speicher in der Regel selbst neu zu programmieren, damit die variablen Daten erhalten bleiben, wenn Arduino ausgeschaltet ist. Wenn Sie ein solches Programm schreiben, wird es sich langsam abnutzen, da der FLASH-Speicher nicht viel Zeit zum Schreiben hat. Aus diesem Grund wird empfohlen, EEPROM zu verwenden, das eine wesentlich längere Lebensdauer hat, wenn Sie Daten auch dann behalten möchten, wenn Arduino ausgeschaltet ist.
Zusammenfassend lässt sich sagen, dass es durch das Neuschreiben des FLASH- oder EEPROM-Speichers und nicht durch die Codeausführung abnutzt.
quelle
Für einen Bastler:
Möglicherweise besteht das einzige Problem im Zusammenhang mit der lebensbeschränkenden Software darin, so schnell wie möglich aus einem Programm heraus in den FLASH-Speicher zu schreiben. Aber nur wenige Programme verwenden Variablen, die Ereignisse wie Batteriewechsel überleben müssen.
Das einzige Problem, das die Lebensdauer der Hardware einschränkt, ist das Überladen der Ausgänge mit niederohmigen Lasten (Glühlampen), induktiven Lasten (wie das direkte Ansteuern mechanischer Relais), um nur zwei zu nennen. Die Frage dreht sich aber nur um Software.
quelle
Die anderen Antworten sind großartig, aber es gibt eine kleine Ausnahme.
Ferroelektrischer RAM (FRAM) ist eine Form von Speicher, der die Nichtflüchtigkeit von Flash und EEPROM, die Beschreibbarkeit von SRAM und die Dichte von DRAM kombiniert.
Allerdings sind Leseoperationen auf FRAM destruktiv auf die Daten im FRAM gespeichert und Schreiboperationen sind schädlich für die FRAM Konstruktion selbst (und da die Daten durch das Lesen sie zerstört wird, muss es jedes Mal zurückgeschrieben werden). Wenn sich Ihr Code in FRAM befindet und ausgeführt wird, wird die MCU rechtzeitig abgenutzt. Da FRAM jedoch eine Schreibsicherheit in Millionenhöhe aufweist, ist es unwahrscheinlich, dass die MCU aufgrund von FRAM während der Lebensdauer des Geräts nicht mehr funktionsfähig ist.
Beispiele für MCUs, die FRAM verwenden, sind die MSP430FRxx-Leitungen von TI .
quelle
Wahrscheinlich nicht ... Der Atmel-Chip wird mit der Zeit wärmer (selbst eine Verzögerung verhindert dies nicht). Wenn er jedoch die Möglichkeit hat, seine Wärme abzugeben, sehe ich kein Problem. Meistens kann jedoch nur Übertakten zu ernsthaften Problemen führen oder das Arduino in einer vollständig geschlossenen Box oder in einer heißen Umgebung verwenden.
Zum Vergleich: Viele Computer laufen jahrelang ohne Abschaltung, der Atmel (Chip) macht in diesem Sinne keinen Unterschied, solange erzeugte Wärme abgeführt werden kann.
Weitere Informationen zu einem Wärmesensor in Atmels finden Sie hier: Interner Temperatursensor
quelle
delay
verbraucht dies dieselbe Menge an Rechenleistung.delay
, der nur die CPU dreht. Das hat natürlich seine Kosten :)