Dúvida

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Dúvida

Mensagempor bartira2 » 09 Mar 2012 08:13

Olá...pode parecer bobo.....mas como claculo raiz quadrada com uC da Freescale......

Já tentei o sqrt(), o y^x.....e nada funciona....alguem se habilita??...
bartira2
Bit
 
Mensagens: 21
Registrado em: 15 Fev 2011 08:00

Mensagempor marcelo_asm » 09 Mar 2012 08:29

raiz quadrada ? Voce está usando um dos micros Kinetis com FPU implementada em hardware ?

Se não, melhor esquecer a função. Implemente uma tabela e vai por aí, caso contrário não vai rolar.
marcelo_asm
Byte
 
Mensagens: 280
Registrado em: 04 Fev 2009 13:11

Mensagempor marcelo_asm » 09 Mar 2012 08:33

ah sim, ou então algum algoritmo interativo. Aqui é uma boa fonte que sempre uso

http://www.amazon.com/Numerical-Recipes ... 718&sr=1-1

não tenho em mãos agora, mas tem um algoritmo até simples para calcular a raiz quadrada. Tem outras opções também.
marcelo_asm
Byte
 
Mensagens: 280
Registrado em: 04 Fev 2009 13:11

Mensagempor hcarcaro » 09 Mar 2012 16:26

bartira2, vc esta fazendo certo o comando é sqrt() mesmo ou melhor:
var2=16;
var1=sqrt(var2);

porem antes tem que incluir a biblioteca math.c
#include "math.c"

e outra coisa as variaveis devem ser tipo double:
double var1, var2;

tenta isto ai...qq da um toque q tem outro jeito tb.
hcarcaro
Bit
 
Mensagens: 7
Registrado em: 01 Dez 2006 22:13

Mensagempor RobL » 14 Mar 2012 22:18

Em quase todos os compiladores, você tem que incluir a libraries com essas operações. Por exemplo no GCC tem que incluir a libm.a .
Se estiver usando uma IDE em modo gráfico, vá em configurações -> libraries e selecione lá.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor EvandrPic » 14 Mar 2012 22:46

ops... algoritmo iterativo... :lol:

Recursivo ou iterativo - um algoritmo recursivo possui a característica de invocar a si mesmo repetidamente até que certa condição seja satisfeita e ele é terminado, que é um método comum em programação funcional. Algoritmos iterativos usam estruturas de repetição tais como laços, ou ainda estruturas de dados adicionais tais como pilhas, para resolver problemas. Cada algoritmo recursivo possui um algoritmo iterativo equivalente e vice-versa, mas que pode ter mais ou menos complexidade em sua construção.
http://pt.wikipedia.org/wiki/Algoritmo


ITERATIVO: Diz-se do processo que se repete diversas vezes para se chegar a um resultado e a cada vez gera um resultado parcial que será usado na vez seguinte.
http://pt.wiktionary.org/wiki/iterativo

INTERATIVO: Cuja ação ou reação se exerce mútua ou reciprocamente (entre duas ou mais pessoas ou coisas).
http://www.dicio.com.br/interativo/


Você sabe qual a diferença entre "iterativo" e "interativo"?
Iterativo: que serve para iterar; repetido
Iteração: repetição
Iterar: tornar a fazer; repetir
Interativo: que interage; que permite comunicação em dois sentidos
Interagir: agir mutuamente (uma entidade agindo sobre outra e vice-versa)
http://www.ime.usp.br/~pf/algoritmos/au ... ativo.html

marcelo_asm escreveu:ah sim, ou então algum algoritmo interativo. Aqui é uma boa fonte que sempre uso

http://www.amazon.com/Numerical-Recipes ... 718&sr=1-1

não tenho em mãos agora, mas tem um algoritmo até simples para calcular a raiz quadrada. Tem outras opções também.
EvandrPic
Dword
 
Mensagens: 2116
Registrado em: 31 Mar 2010 15:05

Mensagempor RobL » 15 Mar 2012 08:21

Outro problema que pode estar acontecendo:
Você está testando a função sqrt() igualando a uma variável não estática e que não está sendo usada no fluxo de seu programa.
Durante a optimização, o compilador vai ignorar esta função.
Procure fazer algo com o resultado depois da função sqrt() ou defina uma variável x como volátil para testar.
Por exemplo:
volatil int x ;

x = sqrt(k) ;
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor tcpipchip » 16 Mar 2012 18:12

Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Calculo raiz no MCU

Mensagempor josuemiranda » 29 Mar 2012 17:48

Da uma olhada no "C reference" da Metrowerks, ele explica como utilizar a biblioteca Math.c, eu tive o mesmo problema uns anos para meu TFG, tive que ajustar o número de casas decimais dos meus floats e tudo mais, pois trabalhei com vários cálculos deste tipo.
O mecanismo de iteração realmente funciona, até mesmo para calculo de senos e cossenos. Mas se você já tem a biblioteca pronta em um MCU que é CISC, não vejo necessidade de implementação. Mas vai do gosto de cada um.
" A qualidade do vencedor é nunca desistir, pois na determinação tudo passa a ser possivel"
josuemiranda
Bit
 
Mensagens: 13
Registrado em: 02 Abr 2010 14:19
Localização: Brasil, Campo Grande - MS

Mensagempor chipselect » 30 Mar 2012 08:49

não sei se é o seu caso, mas quando eu estava usando o 68HC11, a função sqrt() sempre retornava zero, então fiz uma função iterativo pra achar a raiz.
chipselect
Word
 
Mensagens: 744
Registrado em: 16 Out 2006 18:50


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

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

cron

x