Microcontroladores - comunicación PIC-PIC

 
Vista:

comunicación PIC-PIC

Publicado por manuel ortiz (1 intervención) el 25/11/2006 01:23:19
hola, estoy realizando un proyecto donde tengo que comunicar 2 microcontroladores, uno es el PIC16F877A y el otro es el PIC16F873A.

la cuestión es que el enlace tiene que ser inalámbrico, para lo cual he intentado desarrollar un protocolo half-duplex basado en bisync, utilizando los módulos de TX y RX TLP434 y RLP434

el problema no está en los módulos de RF, ya que estos están bien sintonizados y pasan la información de manera transparente.

para hacer las pruebas estoy conectando los pics directamente (con cable), el pin de TX de uno con el de RX del otro y viceverza, y utilizo la directiva RS232 del PICC Compiler.

los programas que tengo hechos simulan perfectamente en el PIC SIMULATOR IDE, sin embargo cuando implemento los circuitos en la realidad... los pics funcionan correctamente (de alguna forma hago para visualizar su correcto funcionamiento), y al parecer la transmisión llega hasta el terminal RX, pero el pic q utilizo como receptor no realiza las instrucciones que tengo en la parte de la interrupción, los códigos son los siguientes:

//PROGRAMA DEL PIC 16F877A (TRANSMISOR)

#include <16F877.h>

#use delay( clock = 4000000 ) /* reloj de 4 MHz */
#use rs232(baud=300, xmit=PIN_C6,rcv=PIN_C7, enable=PIN_B1)

#byte puerto_a = 5 /* dirección del puerto A */
#byte puerto_b = 6 /* dirección del puerto B */
#byte puerto_c = 7 /* dirección del puerto C */
#byte puerto_d = 8 /* dirección del puerto D */
#byte puerto_e = 9 /* dirección del puerto E */
#byte SPBRG = 0x99
#byte TXSTA = 0x98
#byte RXSTA = 0x18


#INT_TBE
void tbe() {
delay_ms(500);
output_bit(PIN_B0, 1);
delay_ms(200);
output_bit(PIN_B0, 0);
delay_ms(200);
output_bit(PIN_B0, 1);
delay_ms(200);
output_bit(PIN_B0, 0);
delay_ms(200);
}


void main(){

do {
SPBRG = 0xCF;
TXSTA = 0xA0;
RXSTA = 0x90;

set_tris_a(0x38);
set_tris_b(0x00);
set_tris_c(0x80);
set_tris_d(0xFF);
set_tris_e(0x02);
//enable_interrupts(INT_TBE);
//enable_interrupts(GLOBAL);

putc(0x03);
delay_ms(500);

}while(TRUE);


}



//PROGRAMA DEL PIC16F873A (RECEPTOR)

#include <16F873A.h>

#use delay( clock = 4000000 ) /* reloj de 4 MHz */
#use rs232(baud=300, xmit=PIN_C6,rcv=PIN_C7)

#byte puerto_a = 5 /* dirección del puerto A */
#byte puerto_b = 6 /* dirección del puerto B */
#byte puerto_c = 7 /* dirección del puerto C */
#byte puerto_d = 8 /* dirección del puerto D */
#byte puerto_e = 9 /* dirección del puerto E */
#byte TXSTA = 0x98
#byte RXSTA = 0x18
#byte SPBRG = 0x99
#byte INTCON = 0x0B

int valor;

#INT_RDA
void isr() {
valor = getc();
output_bit(PIN_B0, 1);
delay_ms(500);
output_bit(PIN_B0, 0);
delay_ms(500);

}

void main() {
do {

set_tris_a(0x00);
set_tris_b(0x00);
set_tris_c(0x80);

disable_interrupts(GLOBAL);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

SPBRG = 0xCF;
TXSTA = 0xA0;
RXSTA = 0x90;

output_bit(PIN_B1, 1);
delay_ms(100);
output_bit(pin_B1, 0);
delay_ms(100);

}while(1);
}




Si alguien tiene alguna idea de cuál es el error, le agradecería si me lo indica.

Adios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comunicación PIC-PIC

Publicado por ROBERTO CREMA (3 intervenciones) el 25/11/2006 16:46:09
El buffer de entrada te tiene que interrumpir el cpu cuando recibió un byte completo, tenés que limpiarlo. Fijate si este buffer te interrumpe alguna vez...si no es así los pines pueden tener una configuración comflictiva, fijate SSPCON, SSPCON2, SSPSTAT, RCSTA, TXSTA,.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicación PIC-PIC

Publicado por Emiliano Zin (1 intervención) el 21/10/2008 00:55:41
Hola, ya tengo un problema paresido, quiero comunicar un pic 16f873a y un pic 16F873, también via sci modo asincrono por los terminales TX y RX. La información es enviada y llega al terminal RX del micro receptor pero no se me interrumpe el micro. las rutinas las controle y las compare con otros proyectos y paresen estar bien y ya no se mas que hacer.
Hay que tener en cuenta que las masa de ambos micros van unidas, por las dudas.
No sera problema que estamos usando micros diferentes y no se logre la comunicación??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicación PIC-PIC

Publicado por Martin chalup (1 intervención) el 14/12/2008 03:04:50
Hola
yo intento algo parecido a lo que tu quieres
pero es para algo comercial no es para un esperimento
me lo compran para ahorro de energia
es un interruptor inalambrico
se como resolver tu problema solo que yo lo realise con ensamblador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicación PIC-PIC

Publicado por giovanny fandiño  (1 intervención) el 11/02/2010 05:55:39
hola manuel mira yo tambien estoy en esto de los pic y estoy empezando con la conexion entre dos pic pero no he podido hace una conexion en full duplex y sera que me puedes ayudar con la conexion inalambrica que pues segun lo que escribiste esa parte la tienes sin problemas de antemano te agradezco tu ayuda ya que es para un proyecto de la universidad

gracias

giovanny fandiño
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:comunicación PIC-PIC

Publicado por Henry (2 intervenciones) el 19/02/2010 12:09:02
Hola amigo me podrias ayudar en la comunicacion entre dos pic son el Pic 16F877A quiero usar el puerto USART y lo quiero codificar en C, me ayudaria bastante un pequeño ejemplo.
Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar