Ir ao conteúdo
  • Cadastre-se

Raiz quadrada com PIC


pauleiras

Posts recomendados

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.

Link para o comentário
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.

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...