Ir ao conteúdo
  • Cadastre-se

Trigonometria no PIC com C CCS


advtec

Posts recomendados

Olá a todos.

Estou desenvolvendo um projeto e, neste momento, preciso valer-me de funções ligadas à trigonometria, basicamente para lidar com senoides. Estou em dúvida quanto a se as funções da biblioteca math.h da CCS esperam valores em graus ou em radianos. Sabem dizer?

Necessito transformar um valor decimal de 8 bits em ângulo e, segundo o meu projeto (que leva em conta extremos de escalas para conversões), estou usando a seguinte fórmula (que está correta, segundo simulações em planilha) no código:

angulo = ((254 - vlr_tmr0) / 124) * 180; //o valor de vlr_tmr0 é transformado em âgulotensão = tensao_rede * sin(angulo); //aqui encontro o ponto na senoide que corresponde à tensãotensão = (tensão * user_to_adc) / temperatura; //o valor em "tensão" é usado para seu ajuste automáticovlr_tmr0 = ( - ((angulo * 124) / 180)) + 254; //o valor decimal é "restaurado" e o ciclo se repetirá.

Sem adentrar-se ao escopo do projeto (que é bem longo), preciso saber se a função sin() espera um valor em graus ou em radianos.

 

Ademais, adiante no código preciso calcular o ângulo, mas agora a partir de seu seno. A função asin() da biblioteca math.h faz isso?

 

Se não estou enganado, o padrão C ANSI espera que as funções recebam os valores em radianos, mas, não encontrei informação se em C CCS é assim também.

 

Informo que a compilação está ocorrendo sem nenhum erro ou "warning", entretanto, não tenho como simular se o resultado numérico está correto (justamente porque não sei se as funções trigonométricas esperam graus ou radianos)

 

Desde já, obrigado e bons trabalhos.

 

Adriano

Link para o comentário
Compartilhar em outros sites

@advtec

 

Dentro da pasta C:\Program Files (x86)\PICC\Drivers tem o arquivo math.h

 

Dentro dessa arquivo tem isso:

 

//////////////////////////////////////////////////////////////////////////////   float sin(float x)////////////////////////////////////////////////////////////////////////////// Description : returns the sine value of the angle x, which is in radian// Date : 9/20/2001//float32 sin(float32 x){   return cos(x - PI_DIV_BY_TWO);} //Overloaded functions for sin() for PCD// Overloaded function sin() for data type - Float48#if defined(__PCD__)float48 sin(float48 x){   return cos(x - PI_DIV_BY_TWO);} // Overloaded function sin() for data type - Float48float64 sin(float64 x){   return cos(x - PI_DIV_BY_TWO);}#endif
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...