Autor Tema: Leer datos GPS  (Leído 6364 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Leer datos GPS
« Respuesta #15 en: 06 de Noviembre de 2004, 11:16:00 »
Hola T0ni0:

Este el codigo


#INCLUDE <16F876.H>

#fuses HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=16000000)
#use RS232(BAUD=4800,RCV=PIN_A0,PARITY=N,BITS=8)

#include "miLCD.c"


int j=0;
char cadena[17];
char *buffer = cadena;



#int_rda
void recepcion_serie() // Rutina de interrupción por recepción serie
{
   lcd_putc("fRecibido1
");
   buffer[j] = getc();
   j++;
   delay_ms(200);
   
}




void main()
{
   int n;

   lcd_init();
   lcd_putc("fPreparado...
");
   delay_ms(1000);

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);


   while( j < 15 ) // No salimos hasta que tengamos 16 caracteres en el buffer
   {

         if (j == 15)
         {
            disable_interrupts(INT_RDA);
         }
 
   }
   printf(lcd_putc,"DAT=%s",buffer); // Sacamos todo por el lcd
   delay_ms(500);
}



Cuando lo ejecuto, en el LCD aparece "Preparado..." y no hace nada mas, la int no llega nunca a activarse.

Que quiere decir que no esta alimentado...

El GPS es un Garmin 95, es de mano y va a pilas, simplemente lo enciendo y lo pongo en modo simulador. Tiene una salida con varios cables, conecto el cable negro de masa a la masa del circuito y el cable marron de señal al PIN_A0 del PIC.

Con un programa hecho con PIcbasic Plus funciona correctamente.

Gracias anticipadas.

Saludos



Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Leer datos GPS
« Respuesta #16 en: 07 de Noviembre de 2004, 12:45:00 »
Prueba a poner así a ver que tal:

Codigo:

#INCLUDE <16F876.H>
#use delay(clock=16000000)
#use RS232(BAUD=4800,RCV=PIN_A0,PARITY=N,BITS=8)
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOCPD,NODEBUG
#include "miLCD.c"


int j;
char cadena[17];
char *buffer = cadena;


#int_rda
void recepcion_serie() // Rutina de interrupción por recepción serie
   {
   // lcd_putc("fRecibido1
"); // Esto lo escribiría cada vez q se interrumpiese
   buffer[j] = getc();
   j++;
   // delay_ms(200); // Si pones aquí un retardo perderás datos
   }


void main()
  {
  j = 0;
  lcd_init();
  lcd_putc("fPreparado...
");
  delay_ms(1000);
  enable_interrupts(INT_RDA);
  enable_interrupts(GLOBAL);
  while( j < 15 ) // No salimos hasta que tengamos 16 caracteres en el buffer
    {
    if(j == 15)
      {
      disable_interrupts(INT_RDA);
      }
    }
  printf(lcd_putc,"DAT=%s",buffer); // Sacamos todo por el lcd
  delay_ms(500);
  for(;;) {}
  }



Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Leer datos GPS
« Respuesta #17 en: 13 de Noviembre de 2004, 06:52:00 »
Hola a todos:

LLevo varias semanas liado con esto y nada...loco

Voy a dejar el GPS aparcado y voy a empezar desde el principio, voy a aprender todo lo que pueda acerca de las comunicaciones via RS232, utilizando un PC (mayor control) y un PIC.

Una vez consiga comunicarlos entre si, ya volvere al tema del GPS.

Gracias a todos por vuestro interes.Rebotado

SaludosMuchas risas

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Leer datos GPS
« Respuesta #18 en: 13 de Noviembre de 2004, 11:48:00 »
Juanelete he estado probando el programa usando el pin A0 del pic para recibir los datos y no hay manera.He probado a hacer la comunicación usando los pines correspondientes a la usart del pic y va a la perfección :(RCV=PIN_C7,XMIT=PIN_C6).
Prueba a conectar el gps a estos dos pines y verás como te funciona.
No se yo si se podrán usar otros pines de la misma forma para comunicaciones serie,pero la cuestión es que lo he simulado en proteus y no hay manera.
Codigo:


#INCLUDE <16F876.H>
#use delay(clock=16000000)
#use RS232(BAUD=4800,RCV=PIN_C7,XMIT=PIN_C6,PARITY=N,BITS=8)
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOCPD,NODEBUG
#include "miLCD.c"


int j;
char cadena[16];
char *buffer = cadena;


#int_rda
void recepcion_serie() // Rutina de interrupción por recepción serie
   {
   // lcd_putc("fRecibido1
"); // Esto lo escribiría cada vez q se interrumpiese
   buffer[j] = getc();
   j++;
   // delay_ms(200); // Si pones aquí un retardo perderás datos
   }


void main()
  {
  j = 0;
  lcd_init();
  lcd_putc("fPreparado...
");  
  enable_interrupts(INT_RDA);
  enable_interrupts(GLOBAL);
  while( j < 15 ) // No salimos hasta que tengamos 16 caracteres en el buffer
    {
    if(j == 15)
      {
      disable_interrupts(INT_RDA);
      }
    }
  printf(lcd_putc,"%s",buffer); // Sacamos todo por el lcd
  delay_ms(500);
  for(;;) {}
  }




También he quitado un retardo que había en el main pq no servía de nada.
Ya nos cuentas.
Un saludo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Leer datos GPS
« Respuesta #19 en: 20 de Noviembre de 2004, 10:46:00 »
Quizás el 0 de tu GPS sea -3,5V , en lugar de 0V y eso sí que lo arregla el MAX232, ¿no te parece?

Desconectado juanelete

  • PIC12
  • **
  • Mensajes: 74
RE: Leer datos GPS
« Respuesta #20 en: 20 de Noviembre de 2004, 11:58:00 »
Hola

Creo que no, porque la tension oscila entre 0 y 3.5v.

Saludos


 

anything