Inicio > PIC > Comunicacion SPI entre pic’s 18F4550

Comunicacion SPI entre pic’s 18F4550

En este ejercicio podemos ver como funciona la comunicacion SPI mediante dos pic’s de la gama 18F4550.  Por el PIN_RA0 del pic Maestro, vamos a encender el motor que estara conectado al PIN_RD0 del pic Esclavo. Para empezar con la programacion debemos tener en cuenta 4 instrucciones muy simples, setup_spi( spi_master | spi_L_to_H | spi_clk_div_16 ) con esta instruccion vamos definir en si en este pic vamos a trabajar como maestro o esclavo, en este caso sera modo maestro. Tambien define que vamos a trabajar en activo alto y con un reloj interno. En caso de que fuera en modo esclavo la instruccion no casmbiaria mucho setup_spi( spi_slave | spi_L_to_H | spi_clk_div_16 ). Otra instruccion seria spi_write, esta instruccion se usa para enviar los datos al esclavo, y cuando estos datos son mandados nos haria falta leerlos y con spi_read lo hacemos.

Una vez que estas instrucciones estan claras, podemos empezar con la programacion de los codigos maestro y esclavo.

Codigo Maestro

////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Trujillo Alcocer Jesus Fernando                     Enero 2011
////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA: Comunicacion entre dos pic's                         VERSIÓN:    1.0
//   DISPOSITIVO: PIC18F4550                            COMPILADOR: CCS vs4.088
//   Entorno IDE:                                       SIMULADOR:  Proteus 7.6 sp0
//   TARJETA DE APLICACIÓN:                             DEBUGGER:
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
//En este ejercicio vamos a trabajar con la comunicacion SPI. Por el PIN_RA0 del pic Maestro
//vamos a encender el motor que estara conectado al PIN_RD0 del pic Esclavo.       //
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// CABECERA ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>
#fuses INTHS
#use delay(internal=8Mhz)
////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
void main()
{
//CONFIGURACIÓN BUS SPI-------------------------------------------------------------
 setup_spi(spi_master | spi_l_to_h | spi_clk_div_16);//Vamos a trabajar como maestro|que funciona en activo alto
 while(true)
 {
 spi_write(input(PIN_RA0));//Escribir lo que haya en el pin A0
 }
}

Codigo Esclavo

 

////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Trujillo Alcocer Jesus Fernando                           Enero 2010
////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA: Comunicacion entre dos pic's                       VERSIÓN:    1.0
//   DISPOSITIVO: PIC18F4550                            COMPILADOR: CCS vs4.088
//   Entorno IDE:                                       SIMULADOR:  Proteus 7.6 sp0
//   TARJETA DE APLICACIÓN:                             DEBUGGER:
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
//En este ejercicio vamos a trabajar con la comunicacion SPI. Por el PIN_RA0 del pic Maestro
//vamos a encender el motor que estara conectado al PIN_RD0 del pic Esclavo.      //
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// CABECERA ////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>
#fuses INTHS
#use delay(internal=8Mhz)
////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES //////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL ///////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
void main()
{
// CONFIGURO EL BUS SPI ------------------------------------------------------------
 setup_spi(spi_slave | spi_L_to_H | spi_clk_div_16);//Vamos a trabajar como slave|que funciona en activo alto
// LEER DATOS DEL BUS --------------------------------------------------------------
for(;;)
 {
 if(spi_data_is_in())//Pregunta si hay dato en la comunicacion
 {
 output_d(spi_read());//Lee el dato y lo muestra por el pin D0
 }
 }
}

Una vez hecho el codigo de los dos pic’s lo que sigue es hacer el diseño del circuito en el proteus.

Una vez terminado el diseño con proteus, lo siguiente es pasar con Ares y colocar los componentes, y cuando tengamos definido las medidas con las que vamos a trabajar, que caras vamos a usar, que en nuestro caso solo seran dos, la top y la bottom; Una vez definido estos puntos solo nos quedaria hacer el autorutado de las pistas y ver como queda todo el diseño en 3D.

 

Anuncios
Categorías:PIC
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: