Disculpe si es una pregunta tonta, pero no pude encontrar una respuesta.
Me he estado preguntando por un tiempo si un Arduino (o generalmente cualquier otro microcontrolador) se alegra si el código es ligero y no tiene que ejecutar demasiadas operaciones. ¿Un código que tiene demasiados ifs, demasiados bucles y todo tipo de cálculos complicados desgasta un Arduino antes que un código que simplemente parpadea un LED?
arduino-uno
hardware
code-optimization
ahmadx87
fuente
fuente
Respuestas:
No, el código no "desgasta" el MCU. En general, sin importar lo que esté haciendo, se realiza aproximadamente el mismo nivel de actividad. Incluso
delay()
hace mucho trabajo mientras está "inactivo".Hay comandos para hacer que la CPU haga menos, colóquela en modo IDLE o SLEEP, pero se utilizan para ahorrar energía en lugar de reducir el "desgaste" de la MCU.
Por supuesto, hay cosas específicas que tienen una vida útil limitada y solo puede usarlas una cantidad limitada de veces, como escribir en EEPROM y escribir en la memoria Flash, por lo que no querrá hacerlo todo el tiempo. Aparte de eso, no, no importa lo que esté haciendo, no desgasta el MCU.
fuente
No es. Bueno, podría desgastarse lentamente si lo ejecuta como 20 años ... (como la mayoría de los otros productos físicos)? Al menos no depende de la complejidad del código sino de cuántas operaciones de escritura se realizan en la misma sección de memoria. Además, cuando se gaste, se bloqueará y no se convertirá en un código más simple como parpadear el LED.
Un Arduino (Uno) tiene tres partes de memoria. SRAM, FLASH y EEPROM. SRAM es más como una puerta de transistor lógica. No se desgastará almacenando variables. FLASH y EEPROM consisten en compuertas flotantes. Poco a poco se desgastan cuando escribes nuevos datos. De la hoja de datos del microcontrolador Ateml , dice:
Sin embargo, la memoria FLASH es un espacio para la ejecución de código. La operación de escritura no se realiza mientras Arduino se está ejecutando. Solo escribe memoria FLASH cuando carga un nuevo código. Por lo tanto, se desgastará cuando cargue el código al menos 10,000 veces.
Si realmente lo desea, puede hacer un código especial para auto reprogramar la memoria FLASH, generalmente con el propósito de mantener datos variables cuando Arduino está apagado. Cuando escribe este tipo de programa, se desgastará lentamente porque la memoria FLASH no tiene mucha resistencia de escritura. Es por eso que se le sugerirá que use EEPROM, que tiene mucha más esperanza de vida, si desea mantener los datos incluso cuando Arduino está apagado.
En resumen, se desgastará reescribiendo la memoria FLASH o EEPROM, no por la ejecución del código.
fuente
Para un aficionado:
El único problema relacionado con el software que limita la vida útil podría ser escribir en la memoria FLASH lo más rápido posible desde el interior de un programa. Pero pocos programas hacen uso de variables que necesitan sobrevivir a eventos como el cambio de baterías.
El único problema relacionado con el hardware que limita la vida útil es la sobrecarga de las salidas con cargas de baja resistencia (bombillas incandescentes), cargas inductivas (como la activación directa de relés mecánicos) por nombrar solo dos. Pero la pregunta es solo sobre el software.
fuente
Las otras respuestas son geniales, pero hay una pequeña excepción.
La RAM ferroeléctrica (FRAM) es una forma de memoria que combina la no volatilidad de flash y EEPROM, la capacidad de escritura de SRAM y la densidad de DRAM.
Sin embargo , las operaciones de lectura en FRAM son destructivas para los datos almacenados en la FRAM, y las operaciones de escritura son destructivas para la construcción de FRAM en sí (y dado que los datos se destruyen al leerlos, se deben volver a escribir cada vez). Si su código se encuentra en FRAM, su ejecución desgastará la MCU a tiempo. Pero dado que FRAM tiene una resistencia de escritura de millones de miles de millones, es poco probable que la MCU deje de funcionar debido a FRAM durante la vida útil del dispositivo.
Los ejemplos de MCU que usan FRAM incluyen la línea MSP430FRxx de TI .
fuente
Probablemente no ... El chip Atmel podría calentarse con el tiempo (incluso un retraso no lo impide), sin embargo, si tiene la posibilidad de liberar su calor, no veo ningún problema. Pero sobre todo, el overclocking puede causar problemas realmente serios, o usar el Arduino en una caja completamente cerrada o en un ambiente caluroso.
En comparación: muchas computadoras funcionan durante años sin apagarse, el Atmel (chip) no tiene ninguna diferencia, siempre y cuando se pueda aliviar el calor generado.
Puede leer más sobre un sensor de calor en Atmels aquí: Sensor de temperatura interna
fuente
delay
utiliza la misma cantidad de potencia de procesamiento.delay
, a diferencia de lo que hace girar la CPU. Esto tiene su costo, por supuesto :)