Autor Tema: Interrupción Low_voltage  (Leído 7900 veces)

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

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Interrupción Low_voltage
« Respuesta #15 en: 01 de Febrero de 2011, 03:02:51 »
Pues ya he hecho la prueba, modifiqué el código de la interrupción tal que así:


Código: C
  1. #int_HLVD
  2. void BajoVoltaje(void)
  3. {
  4.    for (i=0;i<255;i++) {
  5.       write_eeprom(i,read_eeprom(i)+1);
  6.    }
  7.    while (!EsperaEstabilizacion());
  8. }

Y al cortar la alimentación le ha dado tiempo a guardar ¡42 bytes!

Utilizo un condensador de 100uF/63V en las líneas de alimentación del PIC, y el consumo es de 30mA.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Interrupción Low_voltage
« Respuesta #16 en: 01 de Febrero de 2011, 08:53:18 »
Pues esto que nos muestras va a ser algo muy útil  :-/.  Muchas gracias Nocturno!

Saludos!

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Interrupción Low_voltage
« Respuesta #17 en: 26 de Julio de 2012, 16:52:28 »
Necesito justamente eso que hizo Nocturno, pero resulta que he visto un circuito que está haciendo algo así con un pic16f870. Este pic no tiene el módulo detector de bajo voltaje, y en el esquema no veo divisores de voltaje a un adc o algo así ¿Como lo hará?   :shock:  o nos está engañando y usa un 18f...

El esquema en cuestión es este:

http://www.rfcandy.biz/communication/pic/transchm.gif

y el proyecto:

http://www.rfcandy.biz/communication/transcendent.html

En el texto dice que los valores configurados se salvan al apagar el circuito.

Saludos.

« Última modificación: 26 de Julio de 2012, 16:56:38 por micro_pepe »
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Interrupción Low_voltage
« Respuesta #18 en: 26 de Julio de 2012, 17:28:11 »
Pues ya he hecho la prueba, modifiqué el código de la interrupción tal que así:


Código: C
  1. #int_HLVD
  2. void BajoVoltaje(void)
  3. {
  4.    for (i=0;i<255;i++) {
  5.       write_eeprom(i,read_eeprom(i)+1);
  6.    }
  7.    while (!EsperaEstabilizacion());
  8. }

Y al cortar la alimentación le ha dado tiempo a guardar ¡42 bytes!

Utilizo un condensador de 100uF/63V en las líneas de alimentación del PIC, y el consumo es de 30mA.


Para que leer una posicion de eeprom y guardarla en la anterior??
Si asi guardaste 42 bytes, sin leer la eeprom seguro guardas mas de 64...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Interrupción Low_voltage
« Respuesta #19 en: 27 de Julio de 2012, 00:51:13 »

En el texto dice que los valores configurados se salvan al apagar el circuito.



¿Te refieres a esta frase?
Power down memory for all menu options and settings

Si es así, no interpreto que haga el salvado de datos al apagar, sino que los conserva al apagarlo, pero perfectamente ha podido hacer el salvado después de configurar el dispositivo. Basta con guardar en la eeprom después de cada cambio en la configuración.

Para que leer una posicion de eeprom y guardarla en la anterior??
Si asi guardaste 42 bytes, sin leer la eeprom seguro guardas mas de 64...

Lo que hace esa rutina es incrementar los registros de la eeprom a modo de contador para poder evaluar hasta dónde llegó, pero tienes razón, si es un salvado simple te dará tiempo a mucho más.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Interrupción Low_voltage
« Respuesta #20 en: 27 de Julio de 2012, 08:54:33 »
Citar
Basta con guardar en la eeprom después de cada cambio en la configuración.
Cuando es un valor de configuracion, tienes razon.
El tema es cuando es un totalizador, por ejemplo la cuenta de litros despachados de un surtidor.
Si lo grabas despues de cada despacho, y se despacha bastante, lo mas probable es que tu eeprom se muera al cabo de un tiempo, porque superó el limite de grabaciones.

Para eso lo que se hace es, primero revisar si el valor a guardar es distinto al valor en la posición respectiva en eeprom, si es distinto, entonces se graba. O sea que primero la lees, la comparas, y si es distinto grabas, sino sigues con el proximo valor...

A esto me referia, Manolo, veía que leías, pero no comparabas, sino que escribías directamente el valor, en ese caso para que leerlo?? ;-) ;-)
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Interrupción Low_voltage
« Respuesta #21 en: 27 de Julio de 2012, 10:55:58 »
Sí, sí, si tengo claro lo que cuentas. El objetivo de mi rutina era de alguna forma medir el tiempo que tardaba el micro en dejar de guardar datos y para ello puse un contador incremental. Pero vamos, que es verdad que se puede optimizar un huevo.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Interrupción Low_voltage
« Respuesta #22 en: 27 de Julio de 2012, 10:58:59 »
¿Te refieres a esta frase?
Power down memory for all menu options and settings

No, me referia a esta: All settings of the transcendent counter will be stored during power down.

Lo de leer primero y guardar si es diferente ahorra ciclos de escritura, pero si es un parametro que se modifica con mucha frecuencia, siguen siendo muchas.

Salidos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Interrupción Low_voltage
« Respuesta #23 en: 27 de Julio de 2012, 12:10:14 »
Ah, pues tienes razón; no sé cómo lo habrá hecho. Sería interesante descubrirlo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Interrupción Low_voltage
« Respuesta #24 en: 27 de Julio de 2012, 14:15:19 »
Deben hacerse varias cosas:
Apagar todas las salidas que estan activas en ese momento, no usar el conversor, sacar de servicio todos los perifericos y cosas que consumen energia.
Despues deberia alcanzar para guardar los datos sin problemas...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Interrupción Low_voltage
« Respuesta #25 en: 30 de Julio de 2012, 09:14:59 »
Deben hacerse varias cosas:
Apagar todas las salidas que estan activas en ese momento, no usar el conversor, sacar de servicio todos los perifericos y cosas que consumen energia.
Despues deberia alcanzar para guardar los datos sin problemas...

Sí, pero eso se hace cuando se detecta que el pic se ha apagado con la interrupción de low-voltaje, pero con un pic que no tiene esa interrupción ¿como se hace?

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Interrupción Low_voltage
« Respuesta #26 en: 30 de Julio de 2012, 09:23:48 »
En un PIC sin interrupcion por low voltaje se usa un integrado externo que detecta el bajo voltaje y entra por un pin de interrupcion externa, es "casi" lo mismo, y puedes resguardar tus datos de la misma forma.
Por supuesto tu placa ser mas grande y mas cara tambien.. :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Interrupción Low_voltage
« Respuesta #27 en: 30 de Julio de 2012, 10:57:48 »
También puedes detectarlo sensando la alimentación antes del regulador. Cuando empiece a caer, tienes unos ms para guardar proporcionados por el condensata que hay tras el regulador.


 

anything