1. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 1
EJERCICIO QUE UTILIZA LAS
INTERRUPCIONES DEL USART PARA RECIBIR
LA INFORMACIÓN DE UN RECEPTOR GPS
Programa para el microcontrolador ATmega164P que permita recibir la información
que entrega un receptor GPS (Sistema de Posicionamiento Global), con el fin de tomar
los datos del UTC (Tiempo Universal Coordinado) y mostrar en un LCD como la hora
local para el Ecuador continental.
ANÁLISIS DE LA INFORMACIÓN QUE ENTREGA EL RECEPTOR GPS:
El receptor GPS reciben señales provenientes de los satélites que conforman el sistema,
las procesan para determinar la posición geográfica en que se encuentra y entrega esa
información mediante tramas NMEA (National Marine Electronics Association) que se
transmiten en modo asincrónico a una velocidad de 4800 baudios.
Tramas entregadas por el receptor GPS cuando está enganchado a los satélites:
$GPGGA,160642,0011.7048,S,07826.1694,W,1,04,03.6,02415.4,M,017.9,M,,*48
$GPGSA,A,2,24,28,07,20,,,,,,,,,03.8,03.6,01.0*05
$GPGSV,2,1,07,04,58,268,39,07,23,343,49,17,05,221,00,20,20,060,51*7D
$GPGSV,2,2,07,24,64,328,49,27,41,172,00,28,47,014,47,,,,*45
$GPRMC,160642,A,0011.7048,S,07826.1694,W,000.0,000.0,130205,,,A*77
Tramas entregadas por el receptor GPS cuando no está enganchado:
$GPGGA,160422,,N,,E,0,00,,,M,,M,,*6E
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,1,1,00,,,,,,,,,,,,,,,,*79
$GPRMC,160422,V,,N,,E,,,130205,,,N*5E
DESCRIPCIÓN DE LAS TRAMAS
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
Donde:
GGA Global Positioning System Fix Data
123519 Fix taken at 12:35:19 UTC
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
1 Fix quality: 0 = Invalid
1 = GPS fix (SPS)
2 = DGPS fix
3 = PPS fix
4 = Real Time Kinematic
5 = Float RTK
6 = Estimated (dead reckoning) (2.3 feature)
7 = Manual input mode
8 = Simulation mode
08 Number of satellites being tracked
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
2. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 2
0.9 Horizontal dilution of position
545.4,M Altitude, Meters, above mean sea level
46.9,M Height of geoid (mean sea level) above WGS84 ellipsoid
(empty field) Time in seconds since last DGPS update
(empty field) DGPS station ID number
*47 The checksum data, always begins with *
$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39
Donde:
GSA Satellite status
A Auto selection of 2D or 3D fix (M = manual)
3 3D fix - values include: 1 = no fix
2 = 2D fix
3 = 3D fix
04,05... PRNs of satellites used for fix (space for 12)
2.5 PDOP (dilution of precision)
1.3 Horizontal dilution of precision (HDOP)
2.1 Vertical dilution of precision (VDOP)
*39 The checksum data, always begins with *
$GPGSV,2,1,08,01,40,083,46,02,17,308,41,12,07,344,39,14,22,228,45*75
Donde:
GSV Satellites in view
2 Number of sentences for full data
1 Sentence 1 of 2
08 Number of satellites in view
01 Satellite PRN number
40 Elevation, degrees
083 Azimuth, degrees
46 SNR - higher is better
For up to 4 satellites per sentence
*75 The checksum data, always begins with *
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A
Donde:
RMC Recommended Minimum sentence C
123519 Fix taken at 12:35:19 UTC
A Status A=active or V=Void.
4807.038,N Latitude 48 deg 07.038' N
01131.000,E Longitude 11 deg 31.000' E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
230394 Date - 23rd of March 1994
003.1,W Magnetic Variation
*6A The checksum data, always begins with *
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
3. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 3
ALGORITMO DE LA SOLUCIÓN:
La solución se divide entre el programa principal y la rutina de servicio a la interrupción
de la recepción del USART0.
El programa principal que se encarga de inicializar el Puntero del Stack, configurar el
USART0, inicializar el LCD, habilitar las interrupciones y escribir el texto de
información, por una sola vez. Luego, entra en un lazo que inicializa el Puntero X y un
contador que sirven para almacenar en la SRAM los 13 primeros caracteres de cada
trama, identifica que sea la trama RMC; cuando no se trata de esa trama desecha lo que
está almacenado en la SRAM y vuelve a iniciar el Puntero X y el contador. Cuando si es
la trama buscada, escribe el valor del UTC, corrige los dígitos de las Horas para tener la
Hora Local del Ecuador continental, escribe la Hora Local y regresa al inicio del lazo
para esperar una nueva trama.
La rutina de servicio a la interrupción por recepción de un dato mediante el USART0, se
encarga de almacenar en la SRAM los primeros caracteres de cada trama, utilizando el
Puntero X; para lo cual, primero identifica el inicio de la trama, esto es: cuando el
contador es igual a cero y el dato que recibe es el símbolo “$”, a partir de esta
identificación la rutina almacena el dato recibido e incrementa el Puntero X y el
contador.
ALGORITMO PARA CORREGIR LOS DÍGITOS DE LAS HORAS UTC A
HORAS LOCALES DEL ECUADOR CONTINENTAL
VALORES EN DECIMAL CORRECCIÓN DE HEXADECIMAL
UTC LOCAL UTC UTC-5 UTC-5+24
00 19 $00 $FB $13
01 20 $01 $FC $14
02 21 $02 $FD $15
03 22 $03 $FE $16
04 23 $04 $FF $17
05 00 $05 $00 no necesita
06 01 $06 $01 no necesita
07 02 $07 $02 no necesita
… … … … …
… … … … …
… … … … …
21 16 $15 $10 no necesita
22 17 $16 $11 no necesita
23 18 $17 $12 no necesita
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
4. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 4
CÓDIGO DEL PROGRAMA PRINCIPAL Y DE LA RUTINA DE
INTERRUPCIÓN
.NOLIST
.INCLUDE "m164pdef.inc"
.LIST
;
.DEF AUX1 = R16
.DEF AUX2 = R17
.DEF AUX3 = R18
.DEF AUXI = R19
.DEF NCHR = R20
;
.DSEG
TRAMA: .BYTE 3
IDENT: .BYTE 4
UTC: .BYTE 2
MMSS: .BYTE 4
;
.CSEG
JMP PROGP
.ORG 0x28 ; INTERRUPCIÓN POR DATOS RECIBIDOS
RJMP RECIBE
;
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
; CONFIGURACIÓN DEL USART 0
; PROGRAMACIÓN DEL REGISTRO DE CONTROL C
; UMSEL01:00=00 TRABAJAR EN EL MODO ASINCRÓNICO
; UPM01:00=00 DESHABILITAR LA PARIDAD
; USBS0=1 DOS BITS DE PARADA
; UCSZ01:00=11 TAMAÑO DEL CARACTER DE 8 BITS
; UCPOL0=0 POLARIDAD DEL RELOJ NO SE USA EN ASINCRÓNICO
LDI AUX1,0B00000110
STS UCSR0C,AUX1
; PROGRAMACIÓN DEL REGISTRO DE CONTROL B
; RXCIE0=1 HABILITA LAS INTERRUPCIONES EN LA RECEPCIÓN
; TXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA TRANSMISIÓN
; UDRIE0=0 DESHABILITA LAS INTERRUPCIONES DATOS VACÍO
; RXEN0=1 HABILITA LA RECEPCIÓN
; TXEN0=1 HABILITA LA TRANSMISIÓN
; UCSZ02=0 TAMAÑO DEL CARACTER DE 8 BITS
; RXB80=0 NOVENO BIT DE LA RECEPCIÓN
; TXB80=0 NOVENO BIT DE LA TRANSMISIÓN
LDI AUX1,0B10011000
STS UCSR0B,AUX1
; PROGRAMACIÓN DE LA VELOCIDAD DE TRANSMISIÓN
; CUATR0 BITS RESERVADOS EN 0000
; UBRR011:8=0000 REGISTRO DEL BAUD RATE CON 1 MHz
LDI AUX1,0B00000000
STS UBRR0H,AUX1
; UBRR07:0 REGISTRO DEL BAUD RATE CON 1 MHz
LDI AUX1,12 ;BR=4800 CON U2X0=0
STS UBRR0L,AUX1
; INICIALIZACIÓN DEL LCD
RCALL LCDRST
; HABILITACIÓN INTERRUPCIONES GLOBALES
SEI
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
5. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 5
; PANTALLA DE INFORMACIÓN
LDI ZL,LOW(TEXT1<<1)
LDI ZH,HIGH(TEXT1<<1)
RCALL WRTMSJ
RCALL OFFCUR
; ESPERA PARA QUE LLEGUE LA TRAMA $GPRMC
NUEVO: LDI XL,LOW(TRAMA)
LDI XH,HIGH(TRAMA)
CLR NCHR
WAIT: CPI NCHR,13
BRNE WAIT
LDS AUX1,IDENT
CPI AUX1,'R'
BRNE NUEVO
; ESCRITURA DEL TIEMPO UNIVERSAL CONTROLADO
LDI AUX1,45
RCALL POSCUR
LDI XL,LOW(UTC)
LDI XH,HIGH(UTC)
LDI NCHR,6
WUTC: LD AUX1,X+
RCALL WRTCHR
CPI NCHR,5
BRNE WUTC1
LDI AUX1,':'
RCALL WRTCHR
WUTC1: CPI NCHR,3
BRNE WUTC2
LDI AUX1,':'
RCALL WRTCHR
WUTC2: DEC NCHR
BRNE WUTC
; CAMBIO DE UTC A LA HORA LOCAL
LDI AUX1,72
RCALL POSCUR
LDS AUX1,UTC
ANDI AUX1,0x0F
LDI AUX2,10
MUL AUX1,AUX2
LDS AUX2,UTC+1
ANDI AUX2,0x0F
ADD AUX2,R0
SUBI AUX2,5
BRCC A_BCD
LDI AUX1,24
ADD AUX2,AUX1
A_BCD: CLR AUX1
LDI AUX3,10
A_BCD1: SUB AUX2,AUX3
BRCS A_BCD2
INC AUX1
RJMP A_BCD1
A_BCD2: ADD AUX2,AUX3
; ESCRITURA DE LA HORA LOCAL
RCALL WRTDIG
MOV AUX1,AUX2
RCALL WRTDIG
LDI AUX1,':'
RCALL WRTCHR
LDI XL,LOW(MMSS)
LDI XH,HIGH(MMSS)
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
6. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 6
LDI NCHR,4
WHL: LD AUX1,X+
RCALL WRTCHR
CPI NCHR,3
BRNE WHL1
LDI AUX1,':'
RCALL WRTCHR
WHL1: DEC NCHR
BRNE WHL
RJMP NUEVO
; "01234567890123456789"
TEXT1: .DB "INFORMACION OBTENIDA"
.DB " DEL RECEPTOR GPS "
.DB "UTC= HH:MM:SS cambio"
.DB "a HH LOCAL= HH:MM:SS"
; RUTINA DE INTERRUPCIÓN POR LLEGADA DE DATOS
RECIBE: IN AUXI,SREG
PUSH AUXI
LDS AUXI,UDR0
CPI NCHR,0
BRNE RECIB1
CPI AUXI,'$'
BRNE RECIB2
RECIB1: ST X+,AUXI
INC NCHR
RECIB2: POP AUXI
OUT SREG,AUXI
RETI
;
.INCLUDE "SUB80CHR.ASM"
;
.EXIT ; FIN DEL MODULO FUENTE
PRUEBAS REALIZADAS
Para poder realizar las pruebas del programa, es necesario construir el circuito de que se
muestra a continuación.
Conector para
el receptor GPS
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
7. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 7
Para las pruebas se utiliza un receptor GPS de la marca DELUO.
La siguiente fotografía muestra el circuito construido, el LCD para mostrar el UTM y la
Hora Local, el receptor GPS y el adaptador a 110 Vac para la polarización.
A continuación se muestran las conexiones realizadas para la operación del equipo.
Al inicio de la operación del equipo, el receptor GPS no está enganchado a los satélites,
que se comprueba por el parpadeo del LED que tiene incorporado en la parte posterior.
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
8. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 8
Por esto, el UTM de las tramas arranca con el valor 000000 y lo que se muestra en el
LCD es:
Una vez que el receptor GPS se engancha a los satélites, mostrando al LED indicador
encendido sin parpadear. Desde ese instante el UTM es verdadero y lo que se muestra
en el LCD es:
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
9. SISTEMAS MICROPROCESADOS: Reloj satelital mediante un receptor GPS
Página 9
La transición del receptor GPS no enganchado a enganchado a los satélites se puede
apreciar en las siguientes pantallas capturadas cuando el Hyper Terminal se conecta al
receptor GPS.
Hasta aquí: las
tramas no contienen
el UTM verdadero
Desde aquí: las
tramas si contienen
el UTM verdadero
El receptor GPS ya
está enganchado a
los satélites
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información