Bueno, a medida que pasa el tiempo, me desburro de a poco.
Toda la historia anterior, está asociada a la filosofía de funcionamiento del protocolo SPI.... Que me costó entender, pero por fin me llegó la luz.
El tema (por lo menos lo que entendí) es el siguiente:
Si con SPI queremos enviar algo desde el master al esclavo, con dar las ordenes adecuadas, llenando el buffer SSPBUF con 1 byte por vuelta, la transferencia es directa, rápida y por cada byte que se envía, el esclavo devolverá algo (útil o no, pero si no me interesa no le doy pelota)
Ahora, si lo que queremos es recibir algo del esclavo (supongamos un micro con un sensor de temperatura), necesitamos enviarle la orden al esclavo para que nos envíe ese dato (del cual tenemos que saber su tamaño (x bytes). La respuesta inmediata, dependiendo cómo se haya definido el sistema, puede o no ser útil, pero la respuesta útil, sólo la vamos a recibir si "bombeamos" la cantidad de veces adecuadas hasta recibirla completa.
Supongamos lo siguiente:
Tenemos dos micros, uno que hace presentaciones en LCD, y otras funciones accesorias, y tenemos otro, ubicado en un punto específico, que a su vez tiene conectados dos sensores de temperatura. Ambos están conectados por SPI, en un esquema master - esclavo único.
Supongamos que con una orden de 2 bytes, podemos pedirle que nos envíe el valor de la temperatura del sensor 1, el proceso sería el siguiente:
MASTER ESCLAVO
_____________________________________________________________________
Solicitud con código de 2 bytes Al mismo tiempo de la recepción el esclavo devuelve 2 bytes info aleatoria (o no, depende del programador)
Esclavo procesa la orden, (realiza ADC, ajusta decimales, etc) y
genera un código de digamos 5 bytes significativos
Envía el código a la cola de salida
En este punto, y dado que la transferencia de datos es simétrica, puesto que es el master el que marca el ritmo, y el esclavo sólo puede devolverla con el ritmo generado por la señal CLK del master, pero con la simetría definida, sólo puede enviarse si recibe un volumen similar de información, es necesario que el master envíe 5 bytes de información aleatoria (o no, depende del programador), para recibir esos 5 bytes de datos útiles.
Esto significa, enviar, por ejemplo, 0x00 5 veces, y a cambio de esto, recibiremos los 5 bytes de información útil.
Conclusión, el master sólo recibe información del esclavo en función de la "solicitud" en bytes que le realice.
Bueno, y ahora, habiendo comenzado a entender mejor el mecanismo SPI, voy a comenzar con el otro módulo nRF conectado a una placa Arduino Mega 2560, que espero me simplifique un poco el tema.
Conseguí unas librerías que prometen ser completas..
Les mantengo al tanto, y POR FAVOR, si consideran que hay errores en las elucubraciones que vuelco en estos comentarios, o sugerencias para mejorar los desarrollos, les pido me lo hagan saber, así pueda razonar bajo otro punto de vista, que siempre es MUY UTIL.
Gracias por leer esto, y muchas gracias por los comentarios y sugerencias recibidos.