Autor Tema: Contador de 10 digitos  (Leído 3861 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado FJPPitta

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
    • Mi pagina personal
Contador de 10 digitos
« en: 13 de Octubre de 2011, 19:25:47 »
Hola que tal, necesito hacer un contador de 10 dígitos y ando en ideas para armarlo,

Las necesidades:

Contar de 0 a 1,999,999,999
Poder utilizar el número del conteo para visualizarlo en un LCD o mandarlo a una computadora

Se me ha ocurrido usar la variable long y pues

1.- ¿quisiera saber si es una buena idea?

ya que así puedo guardarlo en una variable de 32bits y poder manejar el resultado, ahora bien

2.- ¿se puede guardar este resultado en la EEPROM?

De antemano gracias por cualquier consejo que pudiera servir por pequeño que sea.
Que la fuerza te acompañe

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Contador de 10 digitos
« Respuesta #1 en: 13 de Octubre de 2011, 20:21:25 »
Para representar diez mil millones en base binaria se necesitan 34 bits.
5 bytes de EEPROM (40 bits) serían más que suficientes para guardar la cuenta.
Una de las tantas soluciones sería una variable de 32 bits y otra de 8.
---
Edito: se necesitan solo 31 bits:
 Log(1.999.999.999)/Log(2) = 30.9 -> 31 bits
32 serán suficientes   :lol:
« Última modificación: 14 de Octubre de 2011, 01:23:17 por fabianjsm »
@fabianjsm is on twitter

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Contador de 10 digitos
« Respuesta #2 en: 13 de Octubre de 2011, 20:39:13 »
se necesita contar hasta 1999.999.999 con una variable int32 es suficiente. Un int32 son 4bytes, serian tambien 4bytes de eeprom...no?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Contador de 10 digitos
« Respuesta #3 en: 13 de Octubre de 2011, 21:00:23 »
Asi es, segun el lenguaje que utilizes trabajaras mas o menos para guardar ese dato.
Supongo que el dato no debe ser guardado hasta apagar el micro, no??
La eeprom de los micros solo se puede grabar entre 1 y 10 millones de veces y despues muere, si cuentas continuamente y grabas, ademas de lento puede suceder que mates la eeprom.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado FJPPitta

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
    • Mi pagina personal
Re: Contador de 10 digitos
« Respuesta #4 en: 13 de Octubre de 2011, 21:14:38 »
Gracias por sus comentarios

Para representar diez mil millones en base binaria se necesitan 34 bits.
5 bytes de EEPROM (40 bits) serían más que suficientes para guardar la cuenta.
Una de las tantas soluciones sería una variable de 32 bits y otra de 8.


Solo seria hasta 2mil millones por eso pense en la variable de 32bits.

se necesita contar hasta 1999.999.999 con una variable int32 es suficiente. Un int32 son 4bytes, serian tambien 4bytes de eeprom...no?

Así según yo debe bastar con esos 4bytes

Asi es, segun el lenguaje que utilizes trabajaras mas o menos para guardar ese dato.
Supongo que el dato no debe ser guardado hasta apagar el micro, no??
La eeprom de los micros solo se puede grabar entre 1 y 10 millones de veces y despues muere, si cuentas continuamente y grabas, ademas de lento puede suceder que mates la eeprom.

Quiero utilizar C es con el que mas me adapta a la hora de programar, fíjate que no había considerado los ciclos de la EEPROM si tienes razón si guardo a cada rato pues se va a ir pronto, se me ocurre solo cuando se apague el micro osea poner como que una forma de detectar que se va le alimentación y que la ultima instrucción sea guardar el dato y apagarse así cubriría los apagones accidentales y los reglamentarios.

En cuanto a lentitud pues si en 500ms logro escribir a EEPROM me bastara o eso creo  :)

Ahora estoy armando un borrador simple para ver si funciona la idea de la variable int32
Que la fuerza te acompañe

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Contador de 10 digitos
« Respuesta #5 en: 13 de Octubre de 2011, 21:28:24 »
Quizá te pueda ser útil un botón de encendido - apagado que sea controlado como el que sugiere Mario aquí :
Autopoweroff
     Saludos
         Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Contador de 10 digitos
« Respuesta #6 en: 13 de Octubre de 2011, 21:32:33 »
La eeprom tarda unos 18 mseg en escribir un byte, o sea que tardarias menos de 100 mseg para escribir tus 4 bytes.
Parece poco pero es una eternidad, pensando que no haras otra cosa mientras tanto, salvo que uses la interrupcion por escritura de eeprom.

el lenguaje C es el mas indicado en este caso, ya que permite optimizar tu codigo en caso que necesites velocidad, acudiendo a hacer tareas en assembler dentro de C.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado FJPPitta

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
    • Mi pagina personal
Re: Contador de 10 digitos
« Respuesta #7 en: 13 de Octubre de 2011, 22:11:11 »
Quizá te pueda ser útil un botón de encendido - apagado que sea controlado como el que sugiere Mario aquí :
Autopoweroff
     Saludos
         Jukinch

Excelente articulo, me llamo mucho la atención creo que si me animo a implementar un sistema así.

La eeprom tarda unos 18 mseg en escribir un byte, o sea que tardarias menos de 100 mseg para escribir tus 4 bytes.
Parece poco pero es una eternidad, pensando que no haras otra cosa mientras tanto, salvo que uses la interrupcion por escritura de eeprom.

el lenguaje C es el mas indicado en este caso, ya que permite optimizar tu codigo en caso que necesites velocidad, acudiendo a hacer tareas en assembler dentro de C.

Claro es una eternidad, afortunadamente el proceso que tengo es lento, sin embargo solo sera al finalizar el día de trabajo y cuando exista un apagón se guarda el valor por lo que si logro mantener 100mseg energizado el micro cuando se vaya la alimentación lo habré logrado
Que la fuerza te acompañe

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Contador de 10 digitos
« Respuesta #8 en: 13 de Octubre de 2011, 23:55:01 »
Puedes usar el Brown down detect, puesto al valor que mas te convenga.
Si ocurre la deteccion de baja tension dejas de hacer todo y disparas la escritura en eeprom, eso deberia ayudar bastante.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado FJPPitta

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
    • Mi pagina personal
Re: Contador de 10 digitos
« Respuesta #9 en: 14 de Octubre de 2011, 00:42:50 »
Puedes usar el Brown down detect, puesto al valor que mas te convenga.
Si ocurre la deteccion de baja tension dejas de hacer todo y disparas la escritura en eeprom, eso deberia ayudar bastante.


eso me parece buena idea, estaba pensando en colocar un capacitor de valor alto en alimentación que me de al menos medio segundo de energía al micro despues del corte y deterctar la ausencia de alimentación AC con un divisor de voltaje voy a probar lo que me comentas . . .
Que la fuerza te acompañe

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Contador de 10 digitos
« Respuesta #10 en: 14 de Octubre de 2011, 01:21:48 »
Ups, disculpen, :oops: se necesitan solo 31 bits: 32 serán suficientes  :lol:
@fabianjsm is on twitter