TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: alexandervr92 en 15 de Junio de 2017, 08:41:21

Título: Problema con interrucion y comunicacion serial
Publicado por: alexandervr92 en 15 de Junio de 2017, 08:41:21
Hola a todos, tengo un problema con mi programa, estoy haciendo una prueba para ver si funciona mi conexion serial con el microcontrolador. El programa que hice en c# manda un string al puerto serial, en proteus estoy simulando con el COMPIN y microcontrolador pic16f876. He hecho pruebas y con el virtual terminal de proteus y si llega el string, sin embargo el pic no lo recibe o no se que pasa. Lo unico que quiero ahora es que cuando el pic reciba el dato encienda un led. El resto del codigo es solo para controlar la matriz de leds.
 - Tienes que ingresar para ver archivos adjuntos -

-----codigo en C para compilador CCS de PIC------

#include <16F876.h>
#include <stdio.h>

#FUSES NOWDT, HS

#use delay(clock=20M)
#use rs232 (baud = 9600, parity = N, xmit=PIN_C7, rcv=PIN_C6, bits = 8)

#define DATA   PIN_C4
#define CLOCK  PIN_C3
#define LATCH  PIN_C2

char dato; //dato2;
//byte nuevo;

#INT_RDA
void rda_isr()
{
   if(kbhit())       // si hay algo pendiente de descargar en la USART...
      {
         dato=getc();   // lo descargo sobre la variable -dato-
         output_high(pin_a2); //cada descarga de datos enciente el led
      } 

}


void reloj (int x){
   output_bit(DATA,2^x);
   output_bit(CLOCK,1);
   output_bit(CLOCK,0);
   output_bit(LATCH,1);
   output_bit(LATCH,0);
}

#define LARGO 42                                        //Longitud de la tabla

int const tabla[LARGO+80]={
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          255,16,16,16,255,0,0,         //H
                          255,145,145,145,129,0,0,      //E
                          255,128,128,128,128,0,0,      //L
                          255,128,128,128,128,0,0,      //L
                          126,129,129,129,126,0,0       //O
                          255,64,32,64,255,0,0          //W
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          0,0,0,0,0,0,0,0,              //Espacios
                          };

void main(){
 
   enable_interrupts(int_rda);
   enable_interrupts(global);

   int i,j,k;                         //Variables contadores
   while(TRUE){                        //Ciclo infinito
      for(i=0;i<LARGO;i++){           //Recorrido de tabla
         for(k=0;k<5;k++){           //Refresco de matriz
            for(j=0;j<40;j++){         //Barrido de columnas
               reloj(j);              //Columnas ponderadas
               output_b(tabla[j+i]);  //Desplazamiento de tabla
               delay_ms(1);           //Demora de multiplexado
            } 
         }
      }
   } 






Título: Re:Problema con interrucion y comunicacion serial
Publicado por: juandavidcy en 15 de Junio de 2017, 17:05:38
hola

solo mire la imagen y tienes mal conectados los pines del pic con el del compim, coloca tx con tx y rx con rx, por eso si te sirve con el vitual terminal porque lo tienes conectado como acabo de mencionar :D
Título: Re:Problema con interrucion y comunicacion serial
Publicado por: alexandervr92 en 15 de Junio de 2017, 17:18:41
mmmm, pues he cambiado los pines y tampoco funciona, incluso tambien probe a cambiar los pines junto con la configuracion xmit y rcv y tampoco funciona :(
Título: Re:Problema con interrucion y comunicacion serial
Publicado por: juandavidcy en 15 de Junio de 2017, 19:35:19
deberia quedar asi

 - Tienes que ingresar para ver archivos adjuntos -

y el rs232 asi

Código: C
  1. #use rs232 (baud = 9600, parity = N, xmit=PIN_C6, rcv=PIN_C7, bits = 8)
Título: Re:Problema con interrucion y comunicacion serial
Publicado por: alexandervr92 en 17 de Junio de 2017, 09:51:58
ohhh muchas gracias, ya me funciono  :-/  ((:-))  :)
Título: Re:Problema con interrucion y comunicacion serial
Publicado por: juandavidcy en 27 de Junio de 2017, 13:49:25
con gusto