8 may 2011

COMUNICACIÓN SPI ENTRE DOS PIC's 18F4550


Este ejercicio consiste en la comunicación de dos pic's 18f4550 mediante el bus SPI. Uno de los pic's funcionará como maestro y el otro como esclavo, y lo que harán será encender y apagar un LED.

Primero realizamos el código para el maestro por ejemplo.


/////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Clara Alonso Fernández                        Mayo/2011
/////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA:   Comunicación entre PICs                   VERSIÓN:    1.0
//   DISPOSITIVO: PIC18F4550                               COMPILADOR: CCS vs4.93
//   Entorno IDE:                                          SIMULADOR:  Proteus 7.7 sp2
//   TARJETA DE APLICACIÓN:                                DEBUGGER:
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//CABECERA///////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
#include <18f4550.h>                 //Es el pic que se va a utilizar.
#fuses inths                         //Configuración para el oscilador interno.
#use delay(internal=8Mhz)           //Configuracion para la frecuencia del oscilador.

/////////////////////////////////////////////////////////////////////////////////////
//VARIABLES GLOBALES////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//FUNCIONES/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//PRINCIPAL/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
void main( )
{
   setup_spi(spi_master | spi_l_to_h | spi_clk_div_16);    //Configurar spi para que el pic funcione como maestro.
   while(1)
   {
      spi_write(input(pin_a1));              //Escribir en el pin ra1
      delay_ms(1000);
   }
}

Luego hacer el código del esclavo.

/////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Clara Alonso                     Mayo/2011 
/////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA:Comunicación entre PICs                     VERSIÓN:1.0
//   DISPOSITIVO:PIC18F4550                                COMPILADOR: CCS vs4.93
//   Entorno IDE:                                          SIMULADOR:Proteus 7.7 sp2
//   TARJETA DE APLICACIÓN:                                DEBUGGER:  
/////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//CABECERA///////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
#include <18f4550.h>                  //Es el pic que se va a utilizar.
#fuses inths                          //Configuración pra el oscilador interno.
#use delay(internal=8Mhz)             //Configuración para la frecuencia del oscilador.
/////////////////////////////////////////////////////////////////////////////////////
//VARIABLES GLOBALES////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//FUNCIONES/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
//PRINCIPAL/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
void main()
{
   setup_spi(spi_slave | spi_l_to_h | spi_clk_div_16);     //Configurar spi para que el pic fincione como esclavo.
   for(;;)
   {
      if(spi_data_is_in())      //Si hay un dato en el spi.
      {       
         output_c(spi_read()); 
      }
   }
}

Seguidamente realizaremos el esquemático con PROTEUS que quedará así:


Luego debemos hacer la PCB en el ARES utilizando el "autorute" para cablear la placa.


Y para ver la PCB lo mas real posible utilizamos la herramienta  "output 3D" y asi verlo en 3D.



Aquí os dejo un enlace para que podáis descargaros los códigos y el esquemático: http://cid-64f7131e50857260.office.live.com/self.aspx/COMUNICACI%C3%93N%20SPI%20ENTRE%20DOS%20PIC%5E4s%2018F4550/M-E.rar

0 comentarios:

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes Powered by Blogger | DSW printable coupons