Buenas.
Hace un par de semanas que no puedo continuar con mi proyecto por un problema que no se de donde viene.
Estoy haciendo un sistema de adquisición de datos y estoy usando un pic24fj48ga002 y el compilador CCS v 1.406. Tengo experiencia de unos cuantos años haciendo sistemas de adquisición con microcontroladores pic e incluso tengo librerías hechas de tal forma que cada vez que comienzo un nuevo proyecto tardo menos tiempo en acabarlo. Digo esto porque el problema que tengo no creo que sea tan "fácil" como una tener una soldadura fría o una conexión errónea en el circuito ya que llevo con esto varias semanas.
Bueno al grano. El sistema de adquisición consta de una tarjeta de memoria y un conversor A/D y básicamente lo que hace es coger las muestras de conversor y escribirlas en la tarjeta SD. Debido a que necesito rapidez he decidido usar dos puertos SPI en lugar de uno compartido, es decir, un bus para la SD y un bus para el conversor. El pic que estoy usando tiene dos SPI hardware y además se pueden usar en casi cualquier pin gracias a los pines que llaman RP.
El problema que tengo es que cuando trato de inicializar la tarjeta SD me da error, la librería la he hecho hace mucho tiempo y la he ido actualizando, esta librería está funcionando actualmente con distintos pics, pic18f2525, pic18f452, y algún otro más que ahora no recuerdo. Como se que no es un problema de la librería ni de la configuración del SPI verifiqué el hardware y comprobé que no era. Luego estuve investigando por los foros de CCS y pude ver que el CCS tiene unos cuantos bugs y parece que en alguna versión este compilador se hace la picha un lío con los pines RP. Cuando leí esto comprobé que los pines se asignaban correctamente en mi caso pero por si las moscas hice una función muy básica para transmitir y recibir datos por spi, la hice sin usar el hardware claro está. Aún así me seguía dando error, así que decidí montar el pic en una protoboard y probar otra vez, pero tampoco, no hay manera. He comprobado con el osciloscopio las señales y parece que todo es correcto.
Después de todo esto usé un pic24fj128ga010 y le conecté una tarjeta SD, como este pic lo tengo sobre una placa de desarrollo (explorer 16) no tengo los pines SPI accesibles, así que volví a usar la función que hice anteriormente. El resultado es que sigue dando error. La función del spi que hice para probar la usé en un pic18f2525 con una tarjeta sd y funcionaba, por tanto empiezo a pensar que el problema que tengo es con los pic24f. Aunque esto me desconcierta bastante porque uso dos patas para la comunicación por puerto serie y enciedo leds y parace que todo funciona...
Alguna idea??
Muchas gracias