Ciao Mauro,
ho letto il tutorial ovviamente
per il momento (i potenziometri non mi sono ancora arrivati) ho lavorato soltanto tramite simulazione con Proteus, in cui sono presenti i modelli del PIC16F877A e dei potenziometri MCP410X0.
La routine di programmazione di un potenziometro che ho scritto è la seguente e il tutto funziona correttamente (al simulatore); in particolare mi ha funzionato correttamente inserendo l'istruzione di delay fra l'istruzione spi_write (r40) e l'istruzione RD1 = 1; speriamo funzioni nella realtà!
spi_settings (); /* SMP = 0; CKE = 0; CKP = 0; SSPM3 = 0; SSPM2 = 0; SSPM1 = 0; SSPM0 = 0; */
spi_start1 (); /* SSPEN = 1; RD1 = 1; RD0 = 0; RD1 pilota il chip select del potenziometro */
spi_write (17); /* command byte, 17 in decimale
spi_write (r40); /*data byte, valore di resistenza caricato nella variabile int r40 da passare al potenziometro*/
DelayUs(1);
RD1=1; /*RD1 pilota il chip select del potenziometro a 1 logico*/