|
|
View previous topic :: View next topic |
Author |
Message |
princejude
Joined: 07 Aug 2010 Posts: 72
|
Fastrax iTrax300 GPS output help |
Posted: Fri Dec 03, 2010 4:30 am |
|
|
Hi,
I am Interfacing a Fastrax iTrax300 GPS module to PIC16F887.
I want to test the GPS module with Tera Term (or Hyper Terminal) without the PIC16F887. The GPS module (iTrax300) have 9 pins as follow:
Pin1 = VCC
Pin2 = GND
Pin3 = NC (Not used)
Pin4 = TXD1
Pin5 = RXD1
Pin6 = IPPS
Pin7 = WAKEUP
Pin8 = SX1
Pin9 = RX1
My connection is as follow :
Pin1 & pin2 to my 5v dc power
Pin9 (rx1) of the gps to pin3 (txd) of my pc serial port (db9)
Pin8 (sx1) of gps to pin2 (rxd) of pc serial port (db9)
Pin5 of serial port db9 to ground of my 5v dc power and pin2 of the gps receiver.
My terminal setting are as follow:
Port = com1
Baud rate = 4800
Data = 8 bit
Parity = none
Stop = 1 bit
Flow control = none
The result at terminal window is as follow :
Quote: |
nNNÖNN"nNN"nNN:"n>>NãRr¹99YNN"nNN"nNN:"n>>&NãRr¹99YNN"nNN"n
NN:"n>>&NRr¹99YNN"nNN"nNN:"n>>>NRr¹99YNN"nNN"nN:NÊn>>N>"*Nn
NNÖNN"nNN"nN:NÊn>>:NËRr¹99YNNnNN"nN:NÊn>>"NãRr¹99YNN"nNN:nN
:NÊn>>N|"*NnNNÖNN"nNN"nN:NÊn>>*N>"&NnNNÖNN"nNN"nN:NÊn>>.N>
"&NnNNÖNN"nNN"nN:NÊn>>"Nã2r¹99YNN"nNN"nN:NÊn>>>N?
|
Please, I don't understand this output from the terminal window. Or am I doing something wrong ?
My aim was to use the output from the GPS to track position of an object like longitude, latitude, etc, and display it on lcd using 16f887 but I can't decode the output.
I need help pls.
Thanks in advance. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19515
|
|
Posted: Fri Dec 03, 2010 4:53 am |
|
|
Your connections are wrong.
From the data sheet:
"I/O levels form the serial ports are CMOS compatible, not RS232 compatible. Use an external level converter to provide RS232 levels when needed."
You need a chip like the MAX232 between the GPS, and the PC.
The unit is designed to talk directly to things like the PIC, but to talk to the PC, requires this extra interface chip....
(the typo, 'form', rather than 'from', is in the data sheet)...
Best Wishes |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Fri Dec 03, 2010 7:10 am |
|
|
@Ttelmah
Thanks for your quick reply.
I think that SX1 and RX1 (pins 8 & 9) can communicate directly without max232. And that I only need max232 if am using TXD1 and RXD1 pins (pins 4 & 5) for serial comm.
Quote: | From the data sheet:
"I/O levels form the serial ports are CMOS compatible, not RS232 compatible. Use an external level converter to provide RS232 levels when needed."
|
Which datasheet ? Because I have a lot of them here. |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Fri Dec 03, 2010 7:12 am |
|
|
Pls if you have any sample schematic for the connection, I will appreciate. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19515
|
|
Posted: Fri Dec 03, 2010 8:16 am |
|
|
Seriously, almost none of this type of module will include the MAX232. They are built for embedded applications, so produce TTL, or CMOS serial, just as the PIC does.
Now the data sheet I am referring to, is the 'Technical description' sheet, which says:
"This document describes the electrical connectivity and main functionality of the iTrax300 hardware.".
Section 4.9, _referring to both UARTS_, says:
"4.9 UART
The device supports UART communication via Port A and Port B. With the standard firmware the Port A is configured by default to NMEA protocol with 4800 baud and Port B to SiRF binary at 57600 baud. The Port A is used also when the device is booting from the se- rial port.
The default configuration for Ports and respective protocols can be changed by commands via NMEA or SiRF binary protocols (ref II & III). Any custom configuration stays active as long as the back up sup- ply VDD_B is active.
NOTE
Antenna bias current from VDD supply should be limited externally to 150 mA max.
For users who want to switch between NMEA and SiRF binary protocols with Fas- trax default firmware configuration (see chapter 3.2.1), the usage of the Port B is suggested.
Since the SiRF firmware does not support the same protocol existing on both ports A and B, the user must first disable the Port A NMEA protocol by sending binary message ID 165 (Set UART Configuration) on port B and setting the Port A to ‘no protocol’ (In- put/Output protocol parameter 05h for port 0), see ref III.
Port B can be then configured to or switched between NMEA and binary protocol.
2006-12-18 Page 20 of 35 iTrax300_Tech_doc_13
I/O levels form the serial ports are CMOS compatible, not RS232 compatible. Use an external level converter to provide RS232 levels when needed."
Definately says you need the MAX232 or equivalent...
Best Wishes |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Fri Dec 03, 2010 9:58 am |
|
|
The problem SOLVED.
The GPS module i was using have max232, So i traced the circuit and use the right pins (TXD1/RXD1) instead of pins (SX1/RX1). TXD1/RXD1 are input to max232 while SX1/RX1 are output from max232. |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Fri Dec 03, 2010 10:10 am |
|
|
This is the output from GPS.
Code: |
$GPGSV,3,1,12,19,59,155,28,03,25,155,31,06,13,150,14,23,61,203,26*760*6DGSV,3,1,12,19,61,153,25,03,27,155,32,06,16,149,3
$GPGGA,155752.0
$GPGSV,3,2,12,11,51,359,14,24,44,030,19,20,41,324,17,32,38,003,17*73
$GPGSV,
$GPGSV,3,1,12,19,59,154,29,03,26,15
$GPGGA,155620.0
$GPGSA,
$GPGSV,3,3,12,13,27,206,,31,11,081,16,28,08,280,,17,02,323,16*7CGSV,3,1,12,19,59,155,24,03,25,155,26,06,13,150,21,23,61,203,21*7
$GPRMC,155841.074,V,,,,,,,031210,,,N*43M,22.9,M,,0000*650,,,
$GPGSV,
$GPGSV,3,
$GPGGA,155842.074,,,,,0,00,,,M,0.0,M,,0000*5A,38,003,14*7A,1,03,06,19,,,,,,,,,,,,*1343,E,0
$GPGSA,A,1,,,,,,,,,,,,,,,*1E$GPGSV,
$GPGSV,3,3,12,13,27,
$GPGSV,3,1,12,19,59,155,28,03,25,155,31,06,13,150,14,23,61,203,26*76,,,,,,*13
$GPGSV,3,2,11,11,48,355,1
$GP
$GPRMC,155752.074,V,1030.321
$GPGSV,3,2,12,11,51,359,14,24,44,030,19,20,41,324,17,32,38,003,16*7224,03,27,155,32,06,16,1
$GPGGA,155753.074,1030.3425,N,00725.4925,E,0
$GPGSV,3,3,12,13,27,206,,31,11,081,16,28,08,280,,17,02,323,1
|
I can now think of how to use my 16f887 to decode the message |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19515
|
|
Posted: Fri Dec 03, 2010 1:37 pm |
|
|
So you have a board that contains the ITrak300, rather than the module itself.
Remember the PIC will want to connect to the CMOS signals, not the RS232 signals.
If you do a search here, you will find a lot about decoding the NMEA packets.
Best Wishes |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Sat Dec 04, 2010 3:39 am |
|
|
Quote: |
So you have a board that contains the ITrak300, rather than the module itself.
|
Yes Ttelmah, I thought that the whole board was the GPS module. I was even searching for the description of the pins RX1 and SX1 on net, not knowing that those pins are not part of the GPS chip. I even asked the GPS
manufacturer (FASTRAX) about the issue yesterday, they also told me that I will use RS232 converter. |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Sat Dec 04, 2010 3:49 am |
|
|
Quote: |
Remember the PIC will want to connect to the CMOS signals, not the RS232 signals.
|
Yes i know, i will connect PIC to pins RX1 and SX1 because those pins are outputs from max232 (pins 9 & 10 - R2out & T2in). I hope i can use null modem here. |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Mon Dec 06, 2010 5:33 am |
|
|
HELLO
Another issue...
Pls how can i make the PIC16F887 to communicate with baud rate of
4800. The GPS modem works with baudrate of 4800
But if i use that(4800) for 16F887's code it will not work
if i change 4800 to 9600, the LCD will display HELLO WORLD and it will not communicate with GPS because GPS baud rate is 4800
My test code is to display HELLO WORLD in 16x2 LCD (with baud rate of
4800 and GPS receiver is not connected yet).
Here is the sample code:
Code: |
#include "gps.h"
#include <string.h>
#include "flex_lcd.c"
//char cmd[10] = "$GPGGA";
//char str[50]; //string to hold data from gps module
//char* ptr;
void main()
{
lcd_init();
lcd_putc("HELLO WORLD");
}
|
And here is my header file (gps.h)
Code: |
#include <16F887.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //XTAL Osc
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=4800,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors)
| [/b] |
|
|
ezflyr
Joined: 25 Oct 2010 Posts: 1019 Location: Tewksbury, MA
|
|
Posted: Mon Dec 06, 2010 7:40 am |
|
|
Hi,
The COM parameters for external devices like the (GPS module) should not affect your ability to write to the LCD using the Flex_LCD driver. Here is PCM's test code for his driver. Modify it for your PIC chip and report back what you find. Note a couple of things:
1. There is no #use rs232 directive
2. There is a While(1); endless loop at the end of Main. Don't leave this out!
Code: |
#include <16F877.H>
#fuses XT, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 4000000)
#include "flex_lcd.c"
//==========================
void main()
{
lcd_init(); // Always call this first.
lcd_putc("\fHello World\n");
lcd_putc("Line Number 2");
while(1);
}
|
Spend a lot of time reading the forum, and do a search for terms like 'NMEA'. You'll find that GPS reception issues have been covered countless times!
John |
|
|
princejude
Joined: 07 Aug 2010 Posts: 72
|
|
Posted: Thu Dec 09, 2010 5:07 am |
|
|
ezflyr/John
Quote: |
The COM parameters for external devices like the (GPS module) should not affect your ability to write to the LCD using the Flex_LCD driver. Here is PCM's test code for his driver.
|
I have used Flex_lcd driver several time. I don't have problem with it. The issue is about the baud rate. If i use 9600 it will work but if i use 4800 it will not work.The GPS receiver's baudrate is 4800 . My crystal is 4MHz. |
|
|
ezflyr
Joined: 25 Oct 2010 Posts: 1019 Location: Tewksbury, MA
|
|
Posted: Fri Dec 10, 2010 9:28 am |
|
|
Hi Again,
Sorry, but it's not clear to me what your problem is? As I said, your ability to send data to the LCD is not dependent on any COM parameters you might use to communicate with your serial GPS.
Did you try PCM's flex_lcd test program?
You say "The issue is about the baud rate. If I use 9600 it will work but if I use 4800 it will not work." In this sentence, what does the word "it" refer to? Do you mean the GPS, or the LCD?
I understand that your GPS module communicates at 4800 baud - I got that! Obviously, then, you want the PIC to communicate with the GPS at 4800 baud. But, if you were to re-configure your GPS for 9600 baud, you should also be able to communicate with the PIC at 9600 baud. My point is that the PIC baud rate must match the baud rate of the GPS module, but that selection is completely independent of the functionality of the LCD.
John |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Fri Dec 10, 2010 9:48 am |
|
|
Don't forget to change the original post Subject to include something like (SOLVED) so people know you figured it out -- it helps everyone.
Cheers,
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|