Com licença, se é uma pergunta boba, mas não consegui encontrar uma resposta.
Estou pensando há algum tempo se um Arduino (ou qualquer outro microcontrolador) fica feliz se o código é leve e não precisa executar muitas operações. Um código com muitos ifs, muitos loops e todos os tipos de cálculos complicados desgastam um Arduino mais cedo do que um código que apenas pisca um LED?
arduino-uno
hardware
code-optimization
ahmadx87
fonte
fonte
Respostas:
Não, o código não "desgasta" o MCU. Em geral, não importa o que você esteja fazendo, aproximadamente o mesmo nível de atividade está sendo realizado. Até
delay()
faz muito trabalho enquanto está "ocioso".Existem comandos para fazer com que a CPU faça menos - coloque-a no modo IDLE ou SLEEP -, mas eles são usados para economizar energia, em vez de reduzir o "desgaste" no MCU.
É claro que existem coisas específicas que têm uma vida útil limitada e você pode usá-las apenas uma quantidade limitada de vezes - coisas como gravar na EEPROM e gravar na memória Flash - para que você não queira fazer isso o tempo todo. Fora isso, não, não importa o que você esteja fazendo, não desgasta o MCU.
fonte
Não é. Bem, ele pode se desgastar lentamente se você o executar por 20 anos .... (como a maioria dos outros produtos físicos)? Pelo menos, não depende da complexidade do código, mas de quantas operações de gravação foram feitas na mesma seção de memória. Além disso, quando estiver desgastado, ficará bloqueado e não se tornará um código mais simples como piscar o LED.
Um Arduino (Uno) possui três partes de memória. SRAM, FLASH e EEPROM. A SRAM é mais como uma porta lógica de transistor. Não se desgastará ao armazenar variáveis. FLASH e EEPROM consistem em portões flutuantes. Eles se desgastam lentamente quando você escreve novos dados. Na folha de dados do microcontrolador Ateml , ele afirma:
No entanto, a memória FLASH é um espaço para execução de código. A operação de gravação não é feita enquanto o Arduino está em execução. Você só escreve memória FLASH ao fazer upload de um novo código. Portanto, ele se desgastará quando você enviar o código pelo menos 10.000 vezes.
Se você realmente quiser, pode criar um código especial para auto-reprogramar a memória FLASH, geralmente com o objetivo de manter dados variáveis quando o Arduino estiver desligado. Quando você escreve esse tipo de programa, ele se desgasta lentamente, porque a memória FLASH não possui muita resistência à escrita. É por isso que você será sugerido a usar a EEPROM, que tem muito mais expectativa de vida, se desejar manter os dados mesmo quando o Arduino estiver desligado.
Para resumir, ele se desgastará reescrevendo a memória FLASH ou EEPROM, não pela execução do código.
fonte
Para um hobby:
O único problema relacionado ao software que limita a vida útil pode estar gravando na memória FLASH o mais rápido possível de dentro de um programa. Porém, poucos programas usam variáveis que precisam sobreviver a eventos como trocar baterias.
O único problema relacionado ao hardware que limita a vida útil é o carregamento de saídas com cargas de baixa resistência (lâmpadas incandescentes), cargas indutivas (como acionar diretamente relés mecânicos), para citar apenas dois. Mas a questão é apenas sobre software.
fonte
As outras respostas são ótimas, mas há uma pequena exceção.
A RAM ferroelétrica (FRAM) é uma forma de memória que combina a não volatilidade do flash e da EEPROM, a capacidade de gravação da SRAM e a densidade da DRAM.
No entanto , as operações de leitura no FRAM são destrutivas para os dados armazenados no FRAM, e as operações de gravação são destrutivas para a própria construção do FRAM (e, como os dados são destruídos pela leitura, eles devem ser gravados novamente). Se o seu código estiver localizado na FRAM, sua execução acabará com o MCU com o tempo. Mas, como a FRAM tem uma resistência de gravação de milhões de bilhões, é improvável que o MCU se torne inoperável devido à FRAM durante a vida útil do dispositivo.
Exemplos de MCUs que usam FRAM incluem a linha MSP430FRxx da TI .
fonte
Provavelmente não ... O chip Atmel pode ficar mais quente com o tempo (mesmo que um atraso não impeça isso), no entanto, se houver a possibilidade de liberar seu calor, não vejo problema. Porém, principalmente o overclocking pode causar problemas realmente sérios, ou usar o Arduino em uma caixa totalmente fechada ou em um ambiente quente.
Em comparação: muitos computadores estão funcionando há anos sem desligar, o Atmel (chip) nesse sentido não faz diferença, desde que o calor gerado possa ser aliviado.
Você pode ler mais sobre um sensor de calor em Atmels aqui: Sensor de temperatura interno
fonte
delay
usar a mesma quantidade de poder de processamento.delay
, o que apenas gira a CPU. Isso tem seu custo, é claro :)