; *******************************
; GPS NEO6M
; détection validité trame
;extraction vitesse trame RMC
;afficheur : sda : B.5 scl : B.7
; GPS sur C.1
; *******************************
#Picaxe 20M2
#Terminal 9600
symbol baud_in = T4800_8
symbol UART_in = C.1 ' connexion vers Tx NEO6
setfreq m8
setint %00000000,%00000010 'interruption sur C.1
'===================================================================
main:
do
if bit0 = 1 then gosub traitement ' si trame recue en interruption
; suite programme...
; ....................
loop
'---------------------------------------------------------------------
traitement:
bptr= 17 ; pointeur sur donnée de validation
if @bptr = "A" then 'si signal correct
bptr= 44 'debut de trame vitesse
if @bptr <> "," then 'si champ vitesse n'est pas nul
w1 = @bptrinc - 48 * 100
w1 = @bptrinc - 48 * 10 + w1
w1 = @bptrinc - 48 + w1 * 1852 'calcul des noeuds en m/h
peek 48, w2
w2= w2 - 48 * 185 'calcul des 1/10 noeuds en m/h
w1= w2+w1
sertxd(" Vitesse en m/h: ",#w1 , cr, lf)
else
sertxd(" Vitesse nulle" , cr, lf)
endif
else
sertxd(" pas de signal correct!" ,cr,lf)
endif
setint %00000000,%00000010'rearmement interruption
bit0 = 0
return
'----------------------------------------------------------------------
interrupt:
bptr= 10
serin UART_in, baud_in, ( "RMC," ),@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc,@bptrinc
bit0 = 1
return