Buenas, pues llevo 3 dias, si 3 dias liado con un proyecto que se basa en la comunicacion de 2 pics (18f4550).
El problema esta en que al simularlo con el isis "cuando le da la gana" el proteus al leer el SPI interpreta 0xFF en vez de 0x03 que es lo que le tengo puesto. Despues de darle muchas vueltas, probar varias formas, dejarlo lo mas simple posible, ha sido imposible lograr quitar este fallo por lo cual me da la sensacion que es del proteus.
Os explico y os pongo informacion para ver si a alguien le ha pasado:
El maestro envia 0x03 (esto lo hace en un bucle, con su delay (ya he probado ponerlo mas o menos y nada)) el esclavo unicamente tiene una interrupcion SSPIF para que cuando recibe el dato en SSPBUF descargarlo (asi se evita que se active el flag SSPOV).
Es simple: entra en interrupcion, descarga el SSPBUF, borra flag de interrupcion.
Pues bien, en el maestro tengo un breakpoint para que si el dato es distinto de 0x03 el programa se pause, asi puedo observar todo.
El programa funciona bien excepto que algunas veces a los pocos segundos de activarlo, y otras veces a los pocos minutos recibe 0xFF, en este momento ningun flag de WCOL ni SSPOV se activan. En el osciloscopio del isis puedo observar en ese momento una trama un tanto rara, el primer SCK es muy pequeño, y los demas SCK son correctos, pongo una imagen para que lo veais.
La ralla en rojo es a lo que me refiero
Esto es con 15Mhz (he probado en varias velocidades tambien). Si pongo 48Mhz que es lo que quiero realmente, la trama que falla es tan pequeña que solo se puede ver poniendo una escala de 5ns, (las demas tramas se ven bien con 10us) y se ve como una señal triangular. Es decir, se ven 8 periodos de SCK en forma triangular y sus bits tambien en triangular.
Todo esto es muy extraño, porque mira que pase siempre, pero que pase lo mismo 5 segundos que 2 minutos pues me resulta muy raro. El proteus es el 7.8 SP2, probe con el 7.7SP2 y nada lo mismo, ya no se que pensar... Porque me esta volviendo loco.
-------------
Pues si, se ve que es un bug, he buscado en google y he encontrado varias personas con el mismo problema, todos afirman que es un bug porque un ciclo del reloj del SPI "desaparece misteriosamente"
http://www.edaboard.com/thread198007.html
http://forum.sparkfun.com/viewtopic.php?=&p=18766
El problema esta en que al simularlo con el isis "cuando le da la gana" el proteus al leer el SPI interpreta 0xFF en vez de 0x03 que es lo que le tengo puesto. Despues de darle muchas vueltas, probar varias formas, dejarlo lo mas simple posible, ha sido imposible lograr quitar este fallo por lo cual me da la sensacion que es del proteus.
Os explico y os pongo informacion para ver si a alguien le ha pasado:
El maestro envia 0x03 (esto lo hace en un bucle, con su delay (ya he probado ponerlo mas o menos y nada)) el esclavo unicamente tiene una interrupcion SSPIF para que cuando recibe el dato en SSPBUF descargarlo (asi se evita que se active el flag SSPOV).
Es simple: entra en interrupcion, descarga el SSPBUF, borra flag de interrupcion.
Pues bien, en el maestro tengo un breakpoint para que si el dato es distinto de 0x03 el programa se pause, asi puedo observar todo.
El programa funciona bien excepto que algunas veces a los pocos segundos de activarlo, y otras veces a los pocos minutos recibe 0xFF, en este momento ningun flag de WCOL ni SSPOV se activan. En el osciloscopio del isis puedo observar en ese momento una trama un tanto rara, el primer SCK es muy pequeño, y los demas SCK son correctos, pongo una imagen para que lo veais.
La ralla en rojo es a lo que me refiero
Esto es con 15Mhz (he probado en varias velocidades tambien). Si pongo 48Mhz que es lo que quiero realmente, la trama que falla es tan pequeña que solo se puede ver poniendo una escala de 5ns, (las demas tramas se ven bien con 10us) y se ve como una señal triangular. Es decir, se ven 8 periodos de SCK en forma triangular y sus bits tambien en triangular.
Todo esto es muy extraño, porque mira que pase siempre, pero que pase lo mismo 5 segundos que 2 minutos pues me resulta muy raro. El proteus es el 7.8 SP2, probe con el 7.7SP2 y nada lo mismo, ya no se que pensar... Porque me esta volviendo loco.
-------------
Pues si, se ve que es un bug, he buscado en google y he encontrado varias personas con el mismo problema, todos afirman que es un bug porque un ciclo del reloj del SPI "desaparece misteriosamente"
http://www.edaboard.com/thread198007.html
http://forum.sparkfun.com/viewtopic.php?=&p=18766
Última edición: