Autor Tema: Ampliar un contador  (Leído 2135 veces)

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

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Ampliar un contador
« en: 12 de Agosto de 2011, 14:04:22 »
Si se me queda corto un contador con variables de 32 bits como puedo ampliar el rango de medida?

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Ampliar un contador
« Respuesta #1 en: 12 de Agosto de 2011, 14:24:38 »
Hola, podrías poner otra variable, ejemplo de 32 bits que cuando la primera haga overflow la incrementas, de esa manera llegarías al doble de precisión de long ( 18.446.744.073.709.551.616  !!! ), el C99 último estandar de C lo hace automáticamente con el agregado de variables long long

Saludos !

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Ampliar un contador
« Respuesta #2 en: 13 de Agosto de 2011, 08:09:19 »
Eso suponia pero como se haria en CCS?
no creo que este esa opcion de long long.
Alguien tiene implementado esto? es que no se como vigilar el overflow de la variable.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Ampliar un contador
« Respuesta #3 en: 13 de Agosto de 2011, 09:30:23 »
Hola amigo, quizá podrías probar así

Código: [Seleccionar]
long long con1;
long long con2;

con1++;
if(con1 == 0)
{
con2++;
if(con2 == 0)
{
operacion();
}
}

Saludos.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Ampliar un contador
« Respuesta #4 en: 13 de Agosto de 2011, 13:53:00 »
QUizas funcionase, pero a ver CCS no implementa long long ya que lo he probado y no parece que funcione, los considera long
EN segundo lugar, como se imprimieria en LCD una variable de 64 bits? supongo que habria que convertirlo a cadena las dos partes etc.
Estoy equivocado?

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Ampliar un contador
« Respuesta #5 en: 13 de Agosto de 2011, 14:18:28 »
Yo trabajo con CCS 4.119 vinculado con Mplab y me permite definir las variables así long long, también puedo definirlas int32.
ahora, si necesariamente requieres un variable de 64 bits ?, o si explicas un poco más tu necesidad se podría encontrar una alternativa con 32 bit.

Saludos.

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Ampliar un contador
« Respuesta #6 en: 13 de Agosto de 2011, 14:28:38 »
PErdona no me habia dado cuenta, el long lonmg es int32
Lo que yo hago es lo siguiente
un signed int32 lo presento en lcd con
 printf(lcd_putc,"X: %6.2w    ",(((contador_X*78750)/1440000))*254);
que es la escala que requiero
asi me sale con 2 decimales y cuenta hasta +- 3700.00 aproximadamente lo que es poco.
NEcesito subir esa cantidad a valores mucho mayores ya que estoy contando mm y esos son 3 metros y medio poco mas


 

anything