How do I discern Maidenhead Locator from GPS lat long info.


Closed Thread
Results 1 to 40 of 126

Hybrid View

  1. #1
    Join Date
    Dec 2011
    Location
    IO93ok
    Posts
    190

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    And a WOW from me Darrel. Thanks for your help. Surprisingly I think I can follow and understand the code

    Sorry I'm late back to the thread. One of the winter bugs has had hold of me, not the type I can rewrite

    The project code I posted above doesn't work in the Serin2 GPS routine. Either the line is incorrect or the speed. I've tried every speed and state but no joy. Signal is at the pic pin every second.

    The code compiles but says 'error, expected [ ' but they are there?

    I will try out the code shortly, many thanks again.
    Rob.

    The moment after you press "Post" is the moment you actually see the typso

  2. #2
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    Quote Originally Posted by tasmod View Post
    The code compiles but says 'error, expected [ ' but they are there?
    The SERIN2 line has a value for the timeout, but there's no label for it to jump to.
    DT

  3. #3
    Join Date
    Dec 2011
    Location
    IO93ok
    Posts
    190

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    Doh, sometimes you can't see the wood for the trees !

    Thanks again Darrel, you've no idea how many times I looked at that line.

    Code is working at base level now and info is on screen, next is to incorporate the Locator code of yours.

    Name:  gpslcd.jpg
Views: 19105
Size:  12.0 KB
    Rob.

    The moment after you press "Post" is the moment you actually see the typso

  4. #4
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    Awesome!

    Can't wait to see an IO93ok on that LCD.
    DT

  5. #5
    Join Date
    Dec 2011
    Location
    IO93ok
    Posts
    190

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    Hi Darrel,
    Hmm, I wanted to move on to final stages of the project adding the locator code but before I could I came up against something I've not had before.

    I was using a 16f628A and wanted to port across to a 16F818 for a single adc channel use. (Monitor a pll control voltage)

    I had errors of "Argument out of range" when I added my usual working ADC code. It works standalone on the 818 nicely.

    The code for gps alone works in the 818 as per lcd pic. So I'm lost now.

    In the working gps code alone, no adc code. I did have some very odd messages re 'out of range' with the code with END at the finish of the code. It seemed like something was hidden in the space in MCS. Deleting back to the final Goto GPS cleared the messages.

    This is the gps code with adc which errors. I daren't add the locator code yet

    Code:
    ; 
    ;
    ; 			        PIC16F818                             
    ;                          __________                                          
    ;     D6-------------RAN2 |1       18| RAN1---------D5                   
    ;     D7-------------RAN3 |2       17| RAN0---------D4                 
    ;     LED------------RAN4 |3       16| OSC1--------XTAL                        
    ;     +5V-----------!MCLR |4       15| OSC2--------XTAL                        
    ;     Ground----------Vss |5       14| VDD---------+5 V                        
    ;     NMEA data-------RB0 |6       13| RB7---------Not used                   
    ;     Serial data out-RB1 |7       12| RB6---------Not used
    ;     Not used--------RB2 |8       11| RB5---------LCD Enable          
    ;     Pushbutton------RB3 |9       10| RB4---------LCD Register select         
    ;                          ----------                                          
    ; 
    
    ;====================================================================='
    ' Program to display returned value of a GPS on RB0
    ' LCD in 4-BIT mode PIC16F818 controller 4Mhz clock Fuse PWRT BODEN
    ' 
    'GPS sentence: $GPRMC,192144.62,A,5041.6058,N,00412.6124,E,0.45,3 57.74,081205,,*0B
    
    
    Define LCD_DREG PORTA          ' Port for LCD Data
    Define LCD_DBIT 0              ' Use upper 4 bits of Port  
    Define LCD_RSREG PORTB         ' Port for RegisterSelect (RS) bit
    Define LCD_RSBIT 4             ' Port Pin for RS bit  (pin9)
    Define LCD_EREG PORTB          ' Port for Enable (E) bit
    Define LCD_EBIT 5              ' Port Pin for E bit    (pin7)
    Define LCB_BITS 4              ' Using 4-bit bus
    Define LCD_LINES 4             ' Using 2 line Display
    Define LCD_COMMANDUS 1500      ' Command Delay (uS)
    define LCD_DATAUS 50           ' Data Delay (uS)
    
    DEFINE OSC 4
    
    OPTION_REG.7=0                 ' Enable Pull-Up's
    GPSin VAR PORTB.0
    ' Initialise ADC
    ADCON1 = %10000100 ' Set PORTA analog and RIGHT justify result
    ADCON0 = %01010001 ' Configure and turn on A/D Module channel 4 Fosc 8
    PAUSE 500
    
    'Declare variables
    val VAR WORD      ' final calculated adc valuesWORD' final calculated adc values
    volt VAR WORD     ' scaled value real part
    voltd1 VAR WORD   ' scaled value first decimal place
    voltd2 VAR WORD   ' scaled value second decimal place
    i var byte        ' counter
    
    'Allocate Variables for GPS:
    TimeOut CON 2000            
                                                                
    hh VAR BYTE             'hours
    mm VAR BYTE             'minutes
    ss VAR BYTE             'seconds
    knots VAR WORD          'speed in knots (units)
    knotsten VAR BYTE       'speed in knots (tens)
    course VAR WORD         'heading
    latdeg VAR BYTE         'degrees latitude
    latmin VAR BYTE         'minutes latitude
    NS VAR BYTE             'north or south
    londeg VAR BYTE         'degrees longitude
    lonmin VAR BYTE         'minutes longitude
    EW VAR BYTE             'east or west
    d VAR BYTE              'day
    m VAR BYTE              'month
    y VAR BYTE              'year
    
    fix VAR WORD 'GPS fix
    
    LCDOut $fe,$80,"   GPS Decoder  "
    LCDOut $FE,$c0, "    G8VLQ Mk1  "
    Pause 500
    LCDOut $FE, 1           'Clear Screen
    
    GPS: 'read GPS
    
    SerIn2 GPSin,188,Timeout,LCD1,[wait("$GPRMC"),wait(","),DEC2 hh,DEC2 mm,DEC2 ss,wait(",")_
    ,fix,wait(","),DEC2 latdeg,DEC2 latmin,wait(","),NS,wait(","),DEC3 londeg,DEC2 lonmin,_
    wait(","),EW,wait(","),knots,wait("."),DEC2 knotsten,wait(","),DEC3 course,wait(","),DEC2 d,DEC2 m,DEC2 y]
    
    
    IF fix="V" Then         'if no GPS fix
    GOTO LCD1
    EndIF
    
    gosub PLL
    
    LCD:      
               
    LCDOut $fe,$80,DEC2 d,"-",DEC2 m,"-",DEC2 y," ",#volt, ".", # voltd1,# voltd2, "Vdc"            ; 80 1st line   
    LCDOUT $fe,$c0,"    ",DEC2 hh,":",DEC2 mm,":",DEC2 ss,"    "                                ; c0 2nd line
    LCDOut $fe,$90," LAT: ",DEC2 latdeg,",",DEC2 latmin," ",NS                                 ; 90 3rd line
    LCDOut $fe,$d0," LON: ",DEC2 londeg,",",DEC2 lonmin," ",EW                                 ; d0 4th line
    
    GoTo GPS
    
    LCD1:       ; If invalid data, just shows gps string is received
    
    LCDOut $fe,$80,#volt, ".", # voltd1,# voltd2, "Vdc"                                         ; 80 1st line
    LCDOUT $fe,$c0,"     No Fix       "                                                       ; c0 2nd line
    LCDOut $fe,$90," LAT: ",DEC2 latdeg,",",DEC2 latmin," ",NS                                ; 90 3rd line
    LCDOut $fe,$d0," LON: ",DEC2 londeg,",",DEC2 lonmin," ",EW                                ; d0 4th line
    
    goto GPS
    
    LCD2:      ; 20 character display. Put time and date on first line , removed names.
               ; callsign and QRA (maidenhead) on second line
    
    LCDOut $fe,$80,DEC2 d,"-",DEC2 m,"-",DEC2 y,DEC2 hh,":",DEC2 mm                         ; 80 1st line
    LCDOut $fe,$80," G8VLQ   "                                                              ; c0 2nd line
    LCDOut $fe,$90,"LAT: ",DEC2 latdeg,",",DEC2 latmin," ",NS                                ; 90 3rd line
    LCDOut $fe,$d0,"LON: ",DEC2 londeg,",",DEC2 lonmin," ",EW                                ; d0 4th line
    
    GoTo GPS
    
    PLL:
    Val = 0                       ' Value returned is the average of 5 conversions
    For i = 0 TO 4
    ADCON0.4 = 1                  ' Start conversion
    NoteDone:
    pause 1
    IF ADCON0.4 = 1 Then NoteDone
    val = val + ((ADRESH * 256)+(ADRESL))
    nEXT I
    VAL = VAL/5
    ' Calculate Volatage to 2 decimal places
    volt = val * 5/1024
    voltd1 = ( val * 5//1024) * 10/1024
    Voltd2 = ((val *5 //1024) * 10//1024) * 10/1024
    RETURN
    Rob.

    The moment after you press "Post" is the moment you actually see the typso

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    The 16F628A has 2K words of program space.
    The 16F818 only has 1K words.

    You're going to need a bigger chip.
    The Maidenhead routine with Floating point libraries will take >1.5K by itself.

    You'll need at least 4K, but why not get one with 8K so you won't have the problem again later.
    I'm sure you'll want to add a Morse Code transmitter and receiver some day.
    DT

  7. #7
    Join Date
    Dec 2011
    Location
    IO93ok
    Posts
    190

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    Now that was completely stupid of me, I apologise for such a silly mistake. I had never seen the message before and assumed it was a code error.

    I never gave it a thought to look at the chip spec. The reason to change over to 818 was just one adc input. The chip otherwise is pin compatible for what I've already done.

    I think I will remake a new display pcb and use the 16f876 28 pin chip that has 8k.

    The project uses the chip to accept the NMEA string from a Rockwell gps module and display it. This older gps module also produces accurate 1PPS and 10kHz signals when gps has a fix.
    I'm using these signals on a pll and divider board to lock a 10mhz tcxo.

    In its present application it would have worked fine but I wanted to monitor the gps pll control voltage on the board to check for frequency lock.
    If the voltage was 1.65v then the oscillator was in lock state.
    The display did show whether the satellites produced a fix but not whether the oscillator had locked against the 10khz frequency. Watching the pll control voltage hunt back and forth whilst the gps attempted a fix was facinating but impractical for 'normal' usage.

    Once I have the display running again I'll report back.
    Rob.

    The moment after you press "Post" is the moment you actually see the typso

Similar Threads

  1. LAT replaces PORT command?
    By markscotford in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 3rd December 2011, 16:37
  2. Need Info for PBP?
    By azmax100 in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 30th January 2009, 07:44
  3. Replies: 1
    Last Post: - 27th July 2008, 06:14
  4. dmx info.
    By oscar in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 8th May 2005, 11:54

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts