Odio a esos malditos roedores
![redhot :5]](http://www.todopic.com.ar/foros/Smileys/default/redhot.gif)
Estoy empeñado en un proyecto que debe estar gafado porque no hago mas que encontrarme problemas (tontos) por el camino ... me explico.
Primero los datos básicos del mismo: Micro
PIC18F46K22 con 2 USART y 2 MMSPx (I
2C y SPI por cada uno de ellos), un
DS1307 (RTC) vía I
2C y una
24LC1024 (EEPROM) vía SPI mas algunas otras cosas, pero esto es lo fundamental de mi consulta. Uso el CCS C v.5.021 para compilar mis pruebas.
He realizado dos montajes: Uno, el primero, sobre una Protoboard con un PIC18F46K22 en formato PDIP 40 pines y otro, el segundo, sobre una PCB de Prototipo con el ruteo realizado por mi con un PIC18F46K22 TQFP 44 pines.
Como la disposición de pines de cada uno de ellos es distinta he tomado la decisión de conectar el DS1307 y la 24LC1024 a aquellos canales que mejor me venían físicamente, en el uno, la Protoboard, para que fuesen los cables lo mas directos y claros posible, y en el otro, la PCB, para minimizar las nets y las vías necesarias.
Por esto he conectado en la Protoboard la memoria EEPROM Externa 24LC1024 al SPI1 y el DS1707 al I
2C2 mientras que en el PCB lo he hecho al contrario, la 24LC1024 al SPI2 y el DS1707 al I
2C1
En principio y sin que sirva de precedente, de forma teórica y sin que la autoridad competente lo inmpida, estos dos canales MMSPx son intercambiables entre sí, son iguales y pueden usarse indistintamente ... pues una mierda como un sombrero mexicano.
Protoboard:
24LC1024 ->
SPI1 Funciona
perfecto.
DS1307 ->
I2C2 Funciona
perfecto.
PCB Prototipo
24LC1024 ->
SPI2 ¡No funciona!DS1307 ->
I2C1 Funciona
perfecto.
He revisado por activa y por pasiva, por Top y por Bottom e incluso por el border de la PCB el prototipo y salvo un pequeño cruce de nets que el amigo Nocturno descubrió todo está correcto en el conexionado de esa memoria al SP2.
Y ahora viene la prueba definitiva. He intercambiado los MSSPx en la Protoboard, en la PCB Prototipo es bastante más dificil salvo que haga cortes y soldaduras imposibles para mi o realice otra PCB totalmente nueva.
Y los resultados han sido los que me temía:
Protoboard:
24LC1024 ->
SPI2 ¡No funciona!DS1307 ->
I2C1 Funciona
perfecto.
O sea, que o no me funciona el SPI por el canal MSSP2 o el CCS C está haciendo otra de las suyas o algo se me está escapando miserablemente o soy el ingeniero mas penco de todo el universo reconocido hasta la fecha

¿A alguno de ustedes le ha pasado algo igual, similar o parecido? ¿Es el PIC18F46K22 una rara avis? ¿será el CCS C 5.021 el responsable?
Ahgggggggggg ¿por donde miro?

Funciona bien en Protoboard:
#use i2c(i2c2, FORCE_HW) // Para el DS1307 ó ...
#use i2c(i2c1, FORCE_HW) // para el DS1307 y ...
#use SPI(spi1, master, msb_first, Mode=0, FORCE_HW) // Para la 25LC1024
setup_sp(SPI_MASTER| SPI_H_TO_L | SPI_XMIT_L_TO_H);
Y tanto en la Protoboard como la PCB Prototipo funciona mal el SPI2
![redhot :5]](http://www.todopic.com.ar/foros/Smileys/default/redhot.gif)
Un poco de amable ayuda para un diseñador desesperado que ya no sabe por donde salir
