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