Estoy trabajando en un dispositivo con una bomba interna. Debido a las pequeñas diferencias en la velocidad del motor de la bomba, tengo que calibrar la bomba. El resultado es un valor entre 0 y 1 (ciclo de trabajo PWM). El PWM es generado por un XMEGA32A4U, que estoy programando en C ++ con Atmel Studio 7.0 y cargo el programa con un AVRISP MK II. También tengo una tarjeta SD en el sistema para guardar datos.
Mi problema ahora es el siguiente: tengo varios dispositivos y trato de evitar tener que cambiar el código fuente de cada dispositivo antes de programarlo. No solo porque soy perezoso, sino que también es propenso a errores. Y también porque el resto del código es siempre el mismo y no quiero guardar 10 veces el mismo código que contiene solo un número diferente. ¿Que puedo hacer? Cosas en las que pensé:
- leyendo un ID de dispositivo único y, por lo tanto, determinando qué valor tomar. Pero esto requiere almacenar una ID única - > Problema de huevo y gallina. Excepto si se puede hacer en el momento de la programación con un script (?) O si hay un número de serie que puedo leer en el arranque. El ID del dispositivo parece no ser único en lo que leo.
- Guardar los valores en la EEPROM en el microcontrolador. Investigué un poco y descubrí que esto tampoco es tan sencillo, ya que tiene que volver a tener varios archivos de origen para generar los varios archivos * .eep que debe seleccionar manualmente en la programación. Aunque esto es algo que solo necesito hacer una vez, sigue siendo "manual".
- Guarde un archivo de configuración en la tarjeta SD y léalo al principio. Probablemente sea la parte más fácil, pero la tarjeta SD es accesible para el usuario y, en teoría, se puede eliminar e intercambiar. Por supuesto, verificar el archivo con un ID de dispositivo ayudaría, pero luego vuelvo al punto uno.
- Utilice la comunicación en serie para almacenar un valor de configuración, que luego se escribe en la EEPROM en el dispositivo. Podría usar LabView o una secuencia de comandos para hacer esto ("ingrese el número de serie" - > comparando con la lista almacenada - > publíquelo a través de la serie)
¿Alguien tiene experiencia en esto? ¿Cuál es el mejor camino a seguir? Gracias!