Duvida em C18

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Duvida em C18

Mensagempor andre_bcs » 27 Fev 2008 15:38

Amigos, é o seguinte... Estou usando o PIC18F4550, no C18!

Estou pegando os dados de um receptor GPS e alocando tudo em um vetor de 41 posições. Desse vetor, eu vou pegar só alguns vetores que me interessam, como: aqueles que possuem os dados de latitude e longitude.
Para a latitude e longitude eu criei duas variaveis "short long" (24 bits), para armazenar cada.... Pois, por exemplo, se eu tiver uma latitude de 23,415° (utilizando 5 variaveis do vetor criado, por exemplo), isto será guardado na minha 'short long' como 23415 (casa de décimo de milhar!). A latitude pode chegar a centésimo de milhar! (tipo 176908°)

Enfim...

O calculo que fiz é da seguinte maneira: 2*10000+3*1000+4*100... até chegar no numero completo, para armazenar na minha "short long latitude".

Porém, notei que para alguns valores a conta apresenta um valor absurdo! Isso seria porque a rotina de multiplicação do PIC não suporta grandes numeros, ou porque de alguma maneira eu extrapolei meu 'range' para criar variáveis?? (pois estou usando muitas variáveis, vetores, etc.) Estou com variáveis até o endereço 09A, e o meu vetor vai do 066 - 08F.

Não sei como fazer essa conta dde latitude longitude dar certo!!
Alguém teria alguma ideia?!?
Obrigado a todos!
andre_bcs
Nibble
 
Mensagens: 59
Registrado em: 09 Fev 2007 12:33

Mensagempor Sergio38br » 27 Fev 2008 16:58

boa tarde andré, vc esta recebendo pelo padrão nmea???
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor andre_bcs » 28 Fev 2008 10:17

Sim, nema-0183! Em ASCII... Mas estou fazendo a conversão para hexa antes de tratar os dados (obviamente).
Eu acho que estou tendo problemas devido a multiplicação do PIC18F ser 8x8bits! Acho que talvez esteja usando mais bits na hora de multiplicar...
Bom, mas vou esperar alguém me dar uma luz... Pois se for realmente isso, não sei como tratar os dados! Como vou multiplicar??
andre_bcs
Nibble
 
Mensagens: 59
Registrado em: 09 Fev 2007 12:33

Mensagempor Sergio38br » 28 Fev 2008 10:41

olha pelo padrão nmea, vc tem grau, minutos e milesimos de minutos ex.

2443.0978 em latitude

04677,8766 em longitude

talvez o erro seja ignorar as casas que podem vir depois do ponto, sempre considere que venha quatro casas, se não vier complete com zeros.


Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor andre_bcs » 28 Fev 2008 13:46

Exatamente... o formato é este que vc falou! Eu estou passando isso tudo para grau, do tipo: 24+43/60+0978/3600 (na latitude que vc falou, p. ex.)

Na verdade eu só estou descartando o ultimo algarismo do milésimo de minuto... eu preciso de precisão!

Mas eu ainda acho que o erro é que eu estou saturando a multiplicação 8x8bits do PIC. Queria que alguem confirmasse isso pra mim...
Todo caso, eu vou pensar em outra maneira...
Se vc tiver mexendo com o NMEA tbm e quiser conversar, meu MSN: dede_bcs@hotmail.com

Valeu!
andre_bcs
Nibble
 
Mensagens: 59
Registrado em: 09 Fev 2007 12:33

Mensagempor Sergio38br » 28 Fev 2008 14:12

Se vc precisa de precisão passa tudo para segundo

ex.:

2443.0978

(24*3600) +(43*60) + ((60 x .0978) = total em segundos de grau

qto a precisão

diametro longitudinal da terra 40003 km ( longitude )
diametro equatorial da terra 40075 km ( latitude )

distancia por qrau (latitude) 40075/360grau = +/- 111,32 km por grau

agora multiplique por 1000 ( 1km = 1000mts) e divida por 3600 para achar qto por segundo de grau

(111,32 * 1000) / 3600 = +/- 30,92 mts por segundo de grau

então qualquer arredondamento para passar tudo para grau pode implicar em um erro de quase 31mts, por isso preserve os segundos de grau, o mesmo se aplica ao calculo de longitude.

o certo seria trabalhar em décimo de segundo para termos um erro teorico de +/- 3 mts.

Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP

Mensagempor Sergio38br » 28 Fev 2008 14:15

p.s. ja te adicionei
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x