Hola to recientemente he tenido varios problemas con la comunicación SPI, hasta el punto de hacer por codigo la transmisión SPI. Estoy programando en C18, y tnego el ICD3. No se exactamente que circuito estas usando, pero todos los chips con protocolo SPI, tienen una frecuencia de funcionamiento máxima, y unos tiempos mínimos para todas las señales de reloj, datos y chip select/load. Cuanto tu mandas los 8 primeros bits, se queda a la espero de los siguientes 8 bit, para completar el total de 16 bit de direccion y de dato, con lo que es en este momento en que se tiene que poner a 1 el chip select, o la carga en este caso, aqui es donde necesita un retraso mínimo desde el envio del bit 0 hasta que se pone a 1 el CS. Lo que pasa que en mi caso estamos hablando de 50 ns. No se si el simulador necesita ese retardo, aunque en al realidad sea imposible de que se produzca. El pic que utilice era el 18F4550 a 48 MHz, con lo que el ciclo por instruccion es 83 ns, y segun el data sheet el tiempo máximo en las transiciones de de 50 ns, con lo que seria imposible que diese error en el proceso de carga.
No se si esto te servirá para algo, pero yo he estado dos semanas perdiendo el tiempo con el SPI, y finalmente el componente que era un driver de 4 dígitos de 7 segmentos estaba roto. Y para colmo en vez de darme los displays en cátodo comun me los suministraron en anodo comun.
Un saludo