fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

¿Como cuento 1 segundo con un cristal de 32 KHz?

14 Respuestas
3 Usuarios
0 Reactions
3,723 Visitas
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Hola!!

Quisiera recrear un temporizador/contador que se incrementase o decrementase en función del tiempo real, es decir, por ejemplo que a cada segundo se incremente en 1.

Al parecer con un cristal de 32.768 KHz se puede hacer ya que esta frecuencia equivale a 2 elevado a 15 * 1 Hz, es decir a 32768 incrementos en 1 segundo suponiendo incrementos en 1 ciclo de reloj.

Por otro lado, el temporizador/contador que voy a usar es el de un Atmega16, con el que puedo usar tanto uno de 8 bits (Máximo de 255) como de 16 bits (máximo de 65535).

Mi pregunta es, ¿qué valor se supone que tiene que tener el máximo del contador (suponiendo el cristal de 32.768) para que, una vez sea alcanzado equivalga a 1 segundo de tiempo real? ¿Debo de usar por lo tanto el contador de 8 bits o el de 16?¿Me valdría usar el contador de 16 bits poniendo como tope los 32768?

Gracias por vuestra ayuda!!!

Responder
13 respuestas
joviwap
Respuestas: 301
(@joviwap)
Ardero
Registrado: hace 20 años

Si se trata de eficiencia yo mantendría el bit de sleep del módulo de radiofrecuencia con un buffer, podría un oscilador externo y el micro con el oscilador interno y modo sleep. Energaticamente hablando será muchisimo más eficiente.

Responder
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Si se trata de eficiencia energética, la única razón que sigo viendo para utilizar el oscilador interno (supongamos 1MHz) en lugar de uno a 32KHz externo, sería que el ADC funcionase peor a frecuencias tan bajas, ya que en modo iddle, por poner un ejemplo, el micro a 1 MHz consume unas 24 veces más que con 32 KHz (0,8 mA frente a 25 uA).

¿Como se hace para mantener el bit activo con un buffer?

Saludos!!

Responder
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

Aunque la energía (en julios) consumida es teóricamente la misma trabajando a 32KHz que a 8MHz, resulta que algunos pequeños detalles de los que ahora mismo no me acuerdo, hacen que sea más ineficiente el primer caso, pero quizás el hecho de de la corriente consumida sea menor, igual resulta que las baterías sean más eficientes (por aquello de la resistencia interna), así que puede que compense.

Por tanto, aunque sigo opinando igual sobre el usar el cristal externo para el reloj, y el interno para la CPU, la opción que propones no es para nada descabellada ni fuera de sentido. Igual hasta tienes mejores resultados.

Por tanto, y como ingeniero, lo que al finala acabaría haciento si el presupuesto y el tiempo lo permiten, sería probar ambas soluciones.

Y como muy bien apuntas, habría que probar que pasa con el ADC a tan bajas frecuencias, ya que es el único punto que me presenta dudas reales.

Pruebalo y postea los resultados, que así todos estaremos informados.

Yo te recuerdo que hize un producto comercial que funcionaba a partir de una batería de LiPol recargable, y tenía circuitería que podía desconectar con MosFets. En mi caso, resulta que la mejor opción era funcionar a 8MHz con el reloj de la CPU, ya que así podía desconectar antes la circuitería externa, que me consumía 16mA.

Además, cuando funcionaba desde red, necesitaba toda la potencia de cálculo disponible.

Que os divirtáis.

Responder
morgoz
Respuestas: 208
Topic starter
(@morgoz)
Estimable Member
Registrado: hace 18 años

Hola!

Pues si, como ya he expuesto en otro post directamente relacionado con este pero sensiblemente diferente, al final por lo que he optado es por utilizar una frecuencia interna de 2 MHz para el micro y un cristal de 32 KHz externo para el temporizador mientras el micro duerma.

Primero opté por la opción de utilizar un único micro (32 KHz) para todo, pero al tener que utilizar el USART me dí cuenta de un nuevo impedimento de dicho cristal, que tiene una tasa de error de en torno al 300%, con lo que hay que subir la frecuencia a 2 MHz (tasa de un 0,2%) para poder utilizar el USART en condiciones.

De esta manera, como ingeniero, sigo probando las opciones que creo más optimas y os seguiré informando; actualmente con el temporizador con 32 KHz, la duda que tengo es sobre cómo mantener el micro dormido el máximo tiempo y, al ser posible el 100% del tiempo.

Me comentaste que con el temporizador contabas horas, dias, etc. Lo que no me ha quedado del todo claro es si esto lo hacías despertando al micro cada 8 segundos (cristal de 32KHz, prescaler a 1024 y 256 cuentas) para aumentar una variable que contase las horas, días, etc y, si no llegaba al máximo lo volvías a dormir, o si hay alguna manera de mantener el micro dormido el 100% del tiempo.

De todas formas, hay otro post en el que se esta hablando de esto, asi que si quieres contesta por esa via.

Saludos y gracias!!!

Responder
Página 3 / 3
Compartir: