Gracias a ambos por explicar GIT un poco mejor. Aprender e implementar GIT es una tarea que esta en proceso de maduracion y aprendizaje. Ya tengo instalado GIT extensions, y de a poco voy probando con alguna cosita pequeña.
Pero el motivo de este hilo es el de mantener un mismo proyecto con diferentes funcionalidades, y si bien con GIT se puede aproximar, realmente eso se consigue con lo que comento pablo:
MPLAB X IDE User's Guide - Microchip
http://ww1.microchip.com/downloads/en/DeviceDoc/50002027C.pdf
Sección:
6.4 WORK WITH MULTIPLE CONFIGURATIONS
(para trabajar con distintos pics y configuraciones)
Imaginemos que estamos creando un Analizador Logico de 8 entradas con un PIC "X", ya lo tenemos funcionando, y ahora queremos crear otro proyecto paralelo que tenga 16 entradas con un PIC "Y". Ambos proyectos coexisten, comparten el codigo pero solo se diferencian en el PIC utilizado ya que uno necesita mas pines que el otro.
1. Parto del supuesto que ya tenemos un proyecto creado y configurado (PIC, compilador, programador...)
2. Ir a "Project properties"
3. Click en "Manage Configurations"
4. Renombrar nuestra configuracion "default" a un nombre mas apropiado, por ejemplo "8 entradas"
5. Duplicar esta configuracion y ponerle otro nombre apropiado, por ejemplo "16 entradas"
6. Ahora tenemos 2 configuraciones identicas, pero con distinto nombre, vamos a configurar cada una de ellas.
7. Escoger el PIC correspondiente para cada configuracion
8. En "Compiler Options>Preprocessor Macros" hay que crear una constante diferente para cada una de las configuraciones
-En la configuracion de 8 entradas ponemos ANALIZADOR_8_ENTRADAS
-En la configuracion de 16 entradas ponemos ANALIZADOR_16_ENTRADAS
9. Ahora tenemos que agregar compilacion condicional a nuestro proyecto
10. Empezamos incluyendo la cabecera correspondiente a nuestro PIC
#ifdef ANALIZADOR_8_ENTRADAS
#include <16Fxxxx.h>
#endif
#ifdef ANALIZADOR_16_ENTRADAS
#include <16Fyyyyy.h>
#endif
11. Y a lo largo de nuestro proyecto iremos poniendo partes de codigo especificas para cada uno de los PICs:
#ifdef ANALIZADOR_8_ENTRADAS
//codigo especifico para PIC "X"
...
#endif
#ifdef ANALIZADOR_16_ENTRADAS
//codigo especifico para PIC "Y"
...
#endif
12. Al lado del boton "Build" tenemos un desplegable con las configuraciones que hemos creado. Podemos seleccionar la que queramos antes de compilar, y solo compilara lo correspondiente al proyecto seleccionado
Otra variante seria una misma placa, con mismo PIC, pero con diferentes funcionalidades. Por ejemplo un data logger que se conecta a un PC por serial, bluetooth o wifi...
En este caso el PIC serial el mismo, pero la comunicacion con el periferico puede variar de una a otra, pero el resto del codigo es el mismo. Creariamos una configuracion para cada una de las variantes, cada una con su macro de preprocesador, y en el codigo pondriamos la compilacion condicional para que solo compile lo correspondiente a la version seleccionada.
De momento ya tengo 3 proyectos que se van a beneficiar de esta funcionalidad. La verdad que me siento bastante aliviado de no tener que repetir codigo ni andar comprobar que los proyectos corren en paralelo o si me he olvidado de implementar algun cambio.
Gracias Pablo por el dato, estoy muy contento!
Y espero que esto sea util para otros tambien