Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

22/09/2010 #1


Conexion RS232 bidireccional
Hola necesito hacer una comunicacion semi duplex es decir que le mando algo a un segundo pic desde un pic y que este segundo me conteste, pero no logro hacerlo, desde ya muchas gracias a quien pueda ayudarme o hacerme notar mi error.

Los programas estan hechos en ccs.

Transmisor

Código:
#include <16f628a.h>
#fuses XT,NOWDT,NOMCLR      
#use delay(clock=4mhz)       
#use rs232(baud=9600, xmit=PIN_B0, rcv=PIN_B1)    

#define LED_0 PIN_B4
#define LED_1 PIN_B5
int valor;

#int_rda
void rda_isr(){
valor=getc();
}

void main(){

enable_interrupts(int_rda);
enable_interrupts(global);

while(true){

output_low(LED_0);

if (input(PIN_A0)==0){
         output_high(LED_0);
         printf("a"); //ENVIAR CARACTER a
         delay_ms(200);}

if (valor=="b"){
            output_high(LED_1);
            delay_ms(300);
            output_low(LED_1);
           }
}
}
receptor

Código:
#include <16f628a.h>
#fuses XT,NOWDT,NOMCLR      
#use delay(clock=4mhz)       
#use rs232(baud=9600, xmit=PIN_B0, rcv=PIN_B1)    

#define LED_0 PIN_B4
int valor;

#int_rda
void rda_isr(){
valor=getc();
}

void main(){

enable_interrupts(int_rda);
enable_interrupts(global);

while(true){

output_low(LED_0);

if (valor=="a"){

            output_high(LED_0);
            delay_ms(300);
            output_low(LED_0);
            printf("b");}
}
}
De vuelta Gracias.
22/09/2010 #2


Respuesta: conexion RS232 bidireccional
Hola, para transmitir un data debes usar putc o printf.
Para recibir debes hacerlo por interrupcion, te paso una rutina.

#int_RDA
void serial_isr() { // Interrupción recepción serie USART
rcvchar=0x00; // Inicializo caracter recibido
if(kbhit()){ // Si hay algo pendiente de recibir ...
valor=getc(); // lo descargo y ...
}
}
22/09/2010 #3


Respuesta: conexion RS232 bidireccional
ricber dijo: Ver Mensaje
Hola, para transmitir un data debes usar putc o printf.
Para recibir debes hacerlo por interrupcion, te paso una rutina.

#int_RDA
void serial_isr() { // Interrupción recepción serie USART
rcvchar=0x00; // Inicializo caracter recibido
if(kbhit()){ // Si hay algo pendiente de recibir ...
valor=getc(); // lo descargo y ...
}
}
ehhh!!! gracias Ricber por el dato, voy a probar a ver que tal.
Un saludo
23/09/2010 #4


Respuesta: conexion RS232 bidireccional
Hola Ricber, te pregunto:

rcvchar=0x00; // Inicializo caracter recibido esta es la variable donde recibo el caracter??
Si es asi:
valor=getc(); // lo descargo y ... valor es otra variable?

Subo los archivos fuente , los hex y la simulacion por si la queres ver.

Gracias.
Archivos Adjuntos
Tipo de Archivo: rar TX y RX.rar (14,6 KB (Kilobytes), 136 visitas)
23/09/2010 #5


Respuesta: conexion RS232 bidireccional
El rcvchar debe ser valor=0x00.
Si luego la voy a ver.
23/09/2010 #6


Respuesta: conexion RS232 bidireccional
ricber dijo: Ver Mensaje
El rcvchar debe ser valor=0x00.
Si luego la voy a ver.
OK, gracias.
Saludos.
23/09/2010 #7


Respuesta: conexion RS232 bidireccional
Favalito

Una sugerencia, es mejor que uses los pines que corresponden al USART que el 628a trae, el compilador quizas este implementando las rutinas para el uso de hardware.

#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)

Saludos !!!
24/09/2010 #8


Respuesta: conexion RS232 bidireccional
Tratante dijo: Ver Mensaje
Una sugerencia, es mejor que uses los pines que corresponden al USART que el 628a trae, el compilador quizas este implementando las rutinas para el uso de hardware.

#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1)
Hola amigo Tratante, probe la comunicaion por usart hardware y nada, ocurre lo mismo, no me "responde" el segundo pic, o mas bien creo que en el primer pic no entra en interrupcion, la verdad no se porque sera...
De todas formas muchas gracias por la sugerencia, aunque no pense que la comunicacion bidireccional fuera tan complicada. Cualquier cosa mas arriba estan los archivos fuente y la simulacion por si queres probar.
Gracias de vuelta y saludos.
24/09/2010 #9


Respuesta: conexion RS232 bidireccional
Hola, no pude probar la simulacion porque tengo otra version del programa, pero voy a hacerla con mi programa y te aviso
24/09/2010 #10


Respuesta: conexion RS232 bidireccional
ricber dijo: Ver Mensaje
Hola, no pude probar la simulacion porque tengo otra version del programa, pero voy a hacerla con mi programa y te aviso
Listo Ricber, estoy pendiente de tu respuesta.

Gracias y saludos.
24/09/2010 #11


Respuesta: conexion RS232 bidireccional
Hice una simulacion con unas rutinas mas simples, por ahora solo trasmite un pic y el otro recibe, luego le ire agregando el resto.
Si te interasa lo hecho hasta ahot te lo paso.
A veces hay que hacer los programas paso a paso.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.