domingo, 23 de junio de 2013

Implementación de SPI por software en 2 uC 18f4550

El SPI por software me pareció una característica bastante versátil pues puede ser usado con aquellos pic's que no cuenten con el modulo físico del mismo, a cambio de esto se consiguen velocidades un poco mas lentas.

Se utiliza el software PROTEUS para simular los programas, claro que siempre se recomienda implementar en un uC físico pues considero que a veces el ISIS es muy permisivo en algunos aspectos.
Aqui se tiene una imagen del programa, notaran que en los archivos que la LCD del esclavo no arroja ningún valor pero solo es cuestión de inicializarla.



Luego de hacer las conexiones se procedió a hacer la programación  en el área de ayuda del PIC C compiler trae un ejemplo para la implementación por software:

"#use spi(DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2, ENABLE=PIN_B4, BITS=16)"

Decidi no utilizar el pin enable, y cambiar los BITS a 8, así como declarar el modo, esclavo/maestro, y los baudios, la linea para el maestro quedo de la siguiente manera:

"#use spi(MASTER,DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2,baud=9600, BITS=8,MODE=0)"

y para el esclavo:
"#use spi(SLAVE,DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2,ENABLE=PIN_B4, BITS=8,MODE=0)"

y para enviar o recibir se usa un solo comando que es:
"spi_xfer();"
que puede ser leído y debe llevar un parámetro entre los paréntesis aunque sea "0", la siguiente instrucción del programa muestra su utilización:

"ADCslave[0]=spi_xfer(0);"

Como resultado final tenemos que se imprimen los 3 bytes en la pantalla LCD del maestro (sin pasarlo a voltaje).
(nota el 42 es no es un valor de recepción)

Como pueden notar es bastante sencillo, si gustan checar los archivos en la siguiente carpeta ImplementacionSPI, donde incluyo la simulacion, los programas en C y los .hex

Saludos

9 comentarios:

  1. Excelente explicación y buen ejemplo. Antes de realizar un diseño físicamente hay que hacer una simulación y claramente es muy habitual en ingeniería. El conocimiento preciso del funcionamiento de un diseño real antes de su implementación es un paso primordial.
    Buen aporte!

    ResponderEliminar
  2. Muy buen aporte, este es un buen ejemplo de la comunicación SPI simulada en el software ISIS de PROTEUS, considero que sería casi ideal que todas nuestras aplicaciones sean simuladas en esto softwares antes de ser desarrolladas físicamente sin embargo concuerdo con Omar cuando dice que el PROTEUS es permisivo en algunos aspetos, por tanto a veces si es necesario contar con los dispositivos en físico para probar nuestros proyectos, sin embargo me gusto mucho el aporte ya que nos muestra esta comunicación en otros dispositivos a los que empleó mi equipo para esta práctica, gracias Omarcito :)

    ResponderEliminar
  3. Gracias por el aporte, para mí que tengo un poco olvidados los pics me parece excelente. Si he simulado muchas veces en proteus y en ocasiones el programa con el "hex" corre en la simulación y en la vida real no. Parece ser un programa bastante fácil, lo tomaré y trataré de implementarlo en mis entrenadores.

    ResponderEliminar
  4. Buen aporte, ciertamente los pics ya no los utilizo tan frecuentemente, y concuerdo con Angel, en ocasiones en simulación funcionan de maravilla los .hex pero en la practica no tienen un buen funcionamiento; cabe mencionar que en ocasiones la configuración de los fusibles nos provoca estos errores de funcionamiento, siempre será recomendable simular nuestros programas y sistemas para prevenir errores en la practica. Saludos

    ResponderEliminar
  5. maaaa hoy si gonzi jeje pues esta super bien cuando tenga chance lo implementare con mi ALUX para ver la diferencia con mi freesoc.
    les recomiendo que vean el libro de Compilador Ccs Y Simulador Proteus Para Micro Pic lo pueden buscar en la red en este libro explican todo sobre los pics y esta este proyecto.

    ResponderEliminar
  6. buen aporte, explicas lo necesario para poder realizar la comunicación: la configuración de los dispositivos y los pines a los que se envían las señales, no parece difícil implementarlo en un pic y a pesar que usaste un 18F4550, la comunicación se puede implementar en los pic de gama baja-media como un 16F628A, y poder simularlo en el ISIS es de mucha ayuda, aunque como mencionan en ocasiones las pruebas reales pueden tener distintos resultados a los obtenidos en la simulación.

    ResponderEliminar
  7. Gracias por lo aportado ya que durante la realización de la practica no realizamos ninguna simulación antes de implementarlo debido a la plataforma que usamos sin embargo es siempre bueno recordar una de las mejores herramientas que tenemos que es la simulación y aunque como anteriormente comentaron a veces en el PROTEUS funciona y en la vida real no, en la mayoría de las ocasiones si nos ayuda a localizar errores.

    ResponderEliminar
  8. buen aporte. Es muy bueno probarlo en ISIS, porque así se tiene idea de que funcionará o como funcionará. Aunque concuerdo con lo de la permisibilidad de ISIS. Recuerdo que la práctica del ADC en interfases me salía en la simulación y no en el prototipo físico.

    ResponderEliminar
  9. Excelente simulación, muchas veces dicen que no es necesario simular las cosas que sobre la práctica se aprende, pero yo soy firme creyente en que si el ISIS puede hacer toda esta simulación, entonces ¿Porque no usarlo? ademas microchip es la plataforma donde mas me familiarizo, pero si tiene desventajas ante varios microcontroladores, depende que se quiera utilizar.

    ResponderEliminar