Ir ao conteúdo
  • Cadastre-se
pauleiras

Raiz quadrada com PIC

Recommended Posts

Boa tarde amigos!

Gostaria de saber se um PIC consegue calcular a raiz quadrada de um número, uso linguagem C, minha ideia é calcular a distância entre dois pontos fornecidos pela coordenadas do google map que tem o seguinte formato: -5.172663, -37.454560 (grau decimal) para tanto quero usar a fórmula matemática para distância entre dois pontos: D=[(Xa-Xb)²+(Ya-Yb)²]^¹/²

Imagino que o PIC pode somar e subtrair, não sei se o PIC faz potência quadrada, mas isso eu resolvo multiplicando o valor por ele mesmo, pois imagino que o PIC pode multiplicar e dividir.

outra informação que achei na interne é que a coordenada 0.000001 do google map vale aproximadamente 0,111m. Espero que tenha sido claro na exposição da minha dúvida.

Desde já agradeço aos amigos e aguardo contribuições.

Compartilhar este post


Link para o post
Compartilhar em outros sites
não sei se o PIC faz potência quadrada, mas isso eu resolvo multiplicando o valor por ele mesmo, pois imagino que o PIC pode multiplicar e dividir.

Somente multiplica por hardware a partir da familia 18F e ainda é a capenga multiplicação 8x8, o que o compilador faz pra voce é simplesmente implemntar as rotinas de mult e div pois essas operações sao derivadas de soma, subtração e shifts, instruções nativas do hardware do PIC.

Para calcular uma raiz quadrada inteira, voce ate consegue, mas prepare - se para tirar agua da pedra por causa das 35 instruções base do PIC somados a um metodo de endereçamento arcaico.

Procure por Cordic algorithm ou Square root com CORDIC.

Tem esse aqui tambem ensinado pela Microchip em ASM:

http://ww1.microchip.com/downloads/en/AppNotes/91040a.pdf

So mais uma duvida, voce nao vai implementar isso ai em real time né?

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grato pelas informações amigo Felipe!

Agradeço pelas dicas e pelo link do AppNotes da Microchip, mas infelizmente eu tenho algumas limitações, não domino inglês (uso tradutores on line) e não sei programar em assembly, só um pouco em C da CCS. Grato também pelo Cordic algorithm que eu não conhecia.

Respondendo a sua pergunta, quero sim o processamento em tempo real ou pelo menos no menor tempo possível. Mais detalhes do que estou pretendendo fazer:

Quero criar um dispositivo que acople um módulo GPS a um PIC e a um tranceptor de UHF. Com dois aparelhos destes, os PIC irão se comunicar via UHF onde um vai informar ao outro a suas coordenadas e comparar com a sua posição e mostrar num display a distância relativa em linha reta entre os dois pontos. Sei que existe o erro devido a curvatura da terra, no entanto, a proximidade entre os pontos (no máximo 1Km) é tão pequena, que comparado a dimensão do planeta posso considerar a rota próxima a uma reta e não a um arco. Sei que contudo ainda há um erro, mas para minha aplicação o erro é bem tolerável.

Vasculhando na Net achei o seguinte:

(http://usuarios.upf.br/~fpassold/PIC/C_PIC.PDF)

II.2.1 - Funções matemáticas para PIC's

f = SQRT(x); // Raiz quadrada. f deve ser float e x > 0

f = FLOAT EXP(x); // Exponencial E^x f deve ser float e x > 0

Então me parece que dá para calcular a raiz em liguagem "C" se puder debater mais sobre o assunto ficarei muito grato Felipe, isso vale para os demais colegas foristas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só para você ter uma ideia, as operações matemáticas levam muito tempo no PIC, ele não foi feito para isso:

How much time do math operations take?

Para utilizar essas funções que você mesmo citou, apenas adicione a biblioteca Math.c no CCS.

Falou

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×