Autor Tema: Diferencias en código analógico  (Leído 1435 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado iNoXSteeL

  • PIC12
  • **
  • Mensajes: 75
    • La web de InoX
Diferencias en código analógico
« en: 06 de Diciembre de 2009, 16:06:06 »
Hola a todos,

Tengo un dilema con estos códigos, el primero no funciona, el segundo sí, y a mi parecer son exactamente iguales, vosotros véis algo raro ??

El que no funciona

Código: C
  1. set_adc_channel(0);
  2.    delay_us(20);
  3.    
  4.    ReadNtc = Read_ADC();
  5.    Vntc = 5 * ReadNtc  / 1024;
  6.  
  7.    ResNtc =  Vntc * 10000  / ( 5 - Vntc ) ;
  8.    TempOut = (1 / (((log(ResNtc/20000) * (1 / NtcBeta) )) + (1 / 298.15))) - 273.15;

El que si..

Código: C
  1. set_adc_channel( 0 );
  2.    delay_us(20);
  3.    ReadNtc = Read_ADC();
  4.       Vntc = 5.0 * ReadNtc / 1024.0;
  5.       ResNtc = Vntc * 10000.0 / (5.0 - Vntc);
  6.       TempOut = log(ResNtc/20000.0);
  7.        TempOut = (1.0/298.15) + (TempOut *(1.0/NtcBeta));
  8.       TempOut=1.0/TempOut;
  9.       TempOut = TempOut -273.15;

A ver si me podéis aclarar el porqué, quizá sea por hacer la operación de una vez?

Gracias, un saludo.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Diferencias en código analógico
« Respuesta #1 en: 06 de Diciembre de 2009, 17:04:54 »
La diferencia está en el casting que haces de los datos.

Esta operación se hace en enteros...

Código: [Seleccionar]
Vntc = 5 * ReadNtc  / 1024;
Y ésta se hace en flotantes...

Código: [Seleccionar]
     Vntc = 5.0 * ReadNtc / 1024.0;
En el foro ya se ha hablado sobre casting, puedes usar el buscador para encontrar más detalles.

Desconectado iNoXSteeL

  • PIC12
  • **
  • Mensajes: 75
    • La web de InoX
Re: Diferencias en código analógico
« Respuesta #2 en: 06 de Diciembre de 2009, 17:26:41 »
Gracias por la aclaración MigSantiago, ahora si funciona. Voy a leer sobre el casting, pues no sabía de el.

Un saludo.


 

anything