Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   2004 Edubot Serial String Help (TTL in) (http://www.chiefdelphi.com/forums/showthread.php?t=50193)

Josh Siegel 30-11-2006 22:11

2004 Edubot Serial String Help (TTL in)
 
Hi everyone,
I've been fooling around with this code for awhile and I'm at a total loss as to what I can try next. Here's what I aim to do:
-I have an RS232 GPS device that is tested and known good.
-I have a TTL to RS232/RS232 to TTL conversion board that is tested and known good
-I want to read, and ultimately parse, the data string (but don't know about C string parsing). For now, I would be happy with printing it out from the RS232 (feed in TTL and out to PC).

I tried Kevin's serial code, but it never actually seemed to read the data. A few times, I got it to "acknowledge" that it captured something (just a simple print if this portion is reached), but it never printed it properly. It also only did it once per boot of the board. How does the EDU know when a string is coming in? I know I can use interrupts, but that seems like an awful lot of trouble to set up a reader for a GPS device.

Does anyone have experience with this? Sample code, perhaps?
I'd post what I have, but its mostly the default serial code, with the parameters changed to 4800 baud.

Thanks,
Josh

Josh Siegel 06-12-2006 22:01

Re: 2004 Edubot Serial String Help (TTL in)
 
Anyone with experience with circular read buffers? I'm completely at a loss here.

Kingofl337 07-12-2006 00:22

Re: 2004 Edubot Serial String Help (TTL in)
 
The TTL runs at 115,200bps by default and most GPS devices run at 9600bps. You need to intialize the serial port at 9600 or convert 9600 to 115,200.

I don't know what to change in the code to properly initialize the port for 9600.

EHaskins 07-12-2006 09:39

Re: 2004 Edubot Serial String Help (TTL in)
 
Quote:

Originally Posted by Kingofl337
The TTL runs at 115,200bps by default and most GPS devices run at 9600bps. You need to intialize the serial port at 9600 or convert 9600 to 115,200.

I don't know what to change in the code to properly initialize the port for 9600.

If its the BAUD then you will need to open serial_ports.c, and find the Init_Serial_Port_Two;

The current code should look like this:
Code:

void Init_Serial_Port_Two(void)
{
        // Start by initializing the serial port with code
        // common to receive and transmit functions
        SPBRG2 = BAUD_115200;        // baud rate generator register [251]
                                                        //
        TXSTA2bits.BRGH = 1;        // high baud rate select bit (asynchronous mode only) [248]
                                                        //  0: low speed
                                                        //  1: high speed
                                                        //

You need to change the TXSTA2bits.BRGH to 0, and SPBRG2 = BAUD_9600.

When your finished the code should look like this:
Code:

void Init_Serial_Port_Two(void)
{
        // Start by initializing the serial port with code
        // common to receive and transmit functions
        SPBRG2 = BAUD_9600;        // baud rate generator register [251]
                                                        //
        TXSTA2bits.BRGH = 0;        // high baud rate select bit (asynchronous mode only) [248]
                                                        //  0: low speed
                                                        //  1: high speed
                                                        //

I haven't tested this code, but I think its correct.

Kevin Watson 07-12-2006 14:06

Re: 2004 Edubot Serial String Help (TTL in)
 
Quote:

Originally Posted by EHaskins
I haven't tested this code, but I think its correct.

Yes, you're right. 4800 baud is another common baud rate used by GPS receivers.

-Kevin

Kevin Watson 07-12-2006 14:17

Re: 2004 Edubot Serial String Help (TTL in)
 
Quote:

Originally Posted by Josh Siegel
...I want to read, and ultimately parse, the data string (but don't know about C string parsing). For now, I would be happy with printing it out from the RS232 (feed in TTL and out to PC).

For fun, a few years ago I wrote some EDU-RC code to parse the GPS GGA message and write the current GPS time, which is very accurate, to a serial LCD display. To get you started, have a look at the Camera_Handler() and Camera_State_Machine() functions in camera.c for one way to parse serial data.

-Kevin

Josh Siegel 10-12-2006 08:28

Re: 2004 Edubot Serial String Help (TTL in)
 
Thanks guys, I think I missed the high speed option when I changed my baud rate. I'll try that tonight and see if it does anything different, and then take a look at the camera parsing code.


All times are GMT -5. The time now is 11:10.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi