# Bug de proteus con SPI??



## MerLiNz (Ago 5, 2011)

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


----------



## pandacba (Ago 5, 2011)

Porque no te pones en contacto con el equipo técnico del software? muchas veces se esperan milagros de los simuladores y son solo eso, simulan y su simulación por alli puede estar alejada de la verdad

Porque no intentas implementar la aplicación siempre es lo mejor

Es un error en queres hacer todo via un simulador


----------



## MerLiNz (Ago 5, 2011)

Quiza les mande un mail solo para advertirselo, porque es pirata y no espero ningun soporte tecnico 

Lo hago via simulador para ir corrigiendo sobre la marcha, pudiendo hacerlo mas rapido ya que ir compilando y cargando en el pic es mas lento, la parte del SPI es una entre otra mas grande.


----------



## pandacba (Ago 5, 2011)

Si esa parte, es asi si no es muy tedioso, pero es evidente que hay tantas situaciones que no todas estan soportadas o algunas combinaciones, por lo que si la simulación no va no queda otra que hacer la prueba

Por otro lado no pidas asistencia, si no como curiosidad que has visto ese problema trabajando en la  casa de un amigo, como a ellos les interesa resolver problemas, no te preguntaran demasiado acerca de detalles del soft, salvo que versión y en que máquina lo estas corriendo, memoria etc

Haz la prueba no pierdes nada


----------



## MerLiNz (Ago 5, 2011)

Como actualmente esta la 7.9 y yo llevo la 7.8 no dire nada ya que puede estar arreglado en la 7.9, aun asi intentare buscar la 7.9 a ver si me funciona bien


----------



## R-Mario (Ago 5, 2011)

Te paso mi experiencia con proteus.

Simplemente sirve para darte una pequeña idea, si de verdad vas hacer un proyecto mejor hazlo real, te cuento que yo tube muchos problemas con el bus I2C el SPI y hasta con el USART de los micros AVR, en este ultimo me di cuenta que no invertia la señal TX como deberia invertirla segun la datasheet del amtega8, la solucion en la simulacion colocar un inversor, solucion en la vida real nada. Jeje y me llevo 10 horas darme cuenta todo por flojo y no ensamblarlo, yo envie un correo solo por mandarles chamba a los programadores jejej igual que tu el mio es piñaton


----------

