¿Cuántas veces puedo subir un programa o boceto a mi Arduino Uno Clone Board?

12

Estoy a punto de trabajar en mi primer proyecto usando arduino (estoy a punto de comprar uno la próxima semana), y uno de nuestros profesores dice que solo podemos cargar un programa o boceto en una placa Arduino Uno por aproximadamente 8 veces . También agregó que si estamos usando una versión clonada, solo durará 2 cargas de bocetos. ¿Es esto cierto o está faroleando? Gracias de antemano.

A. Raymundo
fuente
2
He estado mostrando bocetos a un Nano en particular varias veces por hora a medida que construyo y pruebo, y he tenido curiosidad por esto en los últimos días. Sabía que sería al menos en los cientos de veces, pero no estaba seguro de cuántas. Gracias por preguntar.
raddevus
99
Es hora de cuestionar la credibilidad de ese profesor. El programa se mostrará en la memoria flash interna del ATMega328P, y el flash sobrevivirá unos pocos miles de ciclos de escritura. Aún más para EEPROM. STMicro cita "10K a 100K ciclos" ( st.com/resource/en/application_note/cd00165693.pdf )
Maximilian Gerhardt
Relacionado: SPIFFS en los niveles de desgaste 8266, por lo que si está ahorrando 3 KB con 3 MB gratis, puede guardar 1024X antes de la primera sobrescritura (en teoría, 512X en promedio sin superposición de bloque), lo que significa millones de ahorros.
dandavis
44
@jsotola a menos que Google le muestre que esta pregunta ya fue respondida en SE, por favor no le diga a los usuarios que Google (fuente: Preguntas frecuentes)
Cephalopod
1
Este es el equivalente ASE de noticias falsas.
copper.hat

Respuestas:

24

Él está hablando completo y completamente galimatías. Para citar de la hoja de datos ATMega328P :

  • Segmentos de memoria no volátiles de alta resistencia
    • 32KBytes de memoria flash programable auto-programable en el sistema
    • EEPROM de 1 KB
    • SRAM interna de 2 KB
    • Ciclos de escritura / borrado: 10,000 Flash / 100,000 EEPROM
    • Retención de datos: 20 años a 85 ° C / 100 años a 25 ° C (1)
    • Sección de código de arranque opcional con bits de bloqueo independientes
      • Programación en el sistema por programa de arranque en chip
      • Operación verdadera de leer mientras se escribe
    • Bloqueo de programación para seguridad de software

Por lo tanto, tiene al menos 10,000 usos antes de que comience a flaquear.

Majenko
fuente
3
Yo diría que tiene al menos 10K usos.
Edgar Bonet
3
La forma en que funciona la memoria Flash, a medida que envejece, lleva más tiempo borrar una página. El 10,000 es el número mínimo esperado de operaciones de borrado en una página antes de que el tiempo de borrado pueda comenzar a exceder un umbral predefinido (especificado por el fabricante). Entonces, sí, esperaría obtener más que ese número (es el mínimo garantizado), o simplemente tomará un poco más de tiempo para borrar las páginas.
Majenko
2
En la práctica, estaba reutilizando un Arduino Uno y constantemente hacía pequeños ajustes al código. Cargar nuevamente toma el tiempo suficiente para que no valga la pena preocuparse. Es mucho más probable que suba el tablero de alguna otra manera si está soldando o doblando cables. Además, cuando se hace Arduino ... las placas son tan baratas (especialmente si puedes pasar a un MiniPro 5V) que lo principal de lo que debes preocuparte es tener cuidado al soldar el sensor / IO. El tablero es extremadamente confiable, y puede reemplazarlo a bajo costo si alguna vez tiene alguna duda sobre el tablero.
Rob
1
cada vez que hable sobre el "desgaste" del almacenamiento, solo tenga en cuenta que generalmente es esto: 1) Debe "estresar" áreas enteras llenas de ceros y luego escribir las que están sobre eso. 2) El almacenamiento en estado sólido generalmente tiene algoritmos complejos de nivelación de desgaste para minimizar el impacto de esto. 3) Es un Arduino barato. 4) El lenguaje es un subconjunto de C ++, por lo que puede simular un marco de prueba para probar completamente antes de que llegue al hardware; para limitar la inserción innecesaria de código no probado en el hardware.
Rob
1
Aquí hay un ejemplo simple de burlarse de la placa para que pueda probarla localmente bajo Linux (compilado con GCC), en lugar de presionar constantemente al hardware para que lo pruebe. La idea básica es crear un marco que se parezca a la cantidad de llamadas de Arduino que realmente hace desde su código: github.com/rfielding/octaveRounder/tree/master/test
Rob