TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Menta en 03 de Julio de 2007, 10:31:21

Título: Brown-Out Reset qué es?
Publicado por: Menta en 03 de Julio de 2007, 10:31:21
Alguien me puede explicar para qué sirve y como se usa?

Tengo entendido que sirve para salvar los datos antes de un reset, pero no me queda muy claro cómo y en la configuración dice que puede ser por hardware o por software, eso sí que no lo entiendo. Lo único que tengo es un datasheet y no lo entiendo mucho.

Me interesa, por que se me resetea un pic 18F4520 al encender una bomba de agua (tipo zorrinitos de autos) y curiosamente se conservan los valores de datos en la ram al resetearse el pic, la causa del reset es normal power up aunque por ahí se clava del todo, no tengo activado el WDT.
Al margen de esto me interesa saber sobre el BOR.

Muchas gracias

PD. uso CCS picC 3.235
Título: Re: Brown-Out Reset qué es?
Publicado por: RedPic en 03 de Julio de 2007, 14:33:07
El Brown-out Reset es un sistema muy simple que hace que el PIC entre en modo Reset, no hace nada, si la alimentación VCC baja de un cierto valor que es configurable. Se configura activándolo en el registro correspondiente y seleccionando el nivel de voltaje por debajo del cual queremos que el PIC permanezca reseteado. Lo suyo es trabajar en conjunción con el Power On Timer que debidamente configurado lo que hace es "liberar" el Reset tras un tiempo programado despues de haberse estabilizado el PIC.

Esto lo que hace es que al caer la tensión de alimentación nuestro PIC no esté haciendo cosas erráticas hasta quedarse sin alimentación para funcionar, como por ejemplo lo que ocurriría si tu programa hace uso extensivo de la EEPROM, metiendo el PIC en un modo seguro mucho antes de que la caida de tensión provoque un malfuncionamiento. Al volver la tensión nominal y des-resetearse el PIC el Timer de Power On espera aún un poco para volver a poner en marcha el PIC, esto es así para asegurarnos que la tensión ha vuelto de forma estable y no se trata de picos que suben y bajan.

Los modos de configuración de ambos y qué posibilidades tienen hay que mirarlos en el Datasheet de cada micro en particular.



Título: Re: Brown-Out Reset qué es?
Publicado por: Menta en 04 de Julio de 2007, 02:40:06
Mil gracias Redpic, me ha aclarado el panorama, voy a leer más y lo voy a implementar en mi proyecto para hacerlo más robusto. Antes, claro, tengo que minimizar los efectos del ruido.

Una consulta más, como dije, por ruido se me resetea el pic y la causa es "normal power up" ( reset_cause() = 12 )

Por qué quedan guardados los datos de la ram? 
es algo aleatorio? es porque la alimentación cae un tiempo muy corto?
Título: Re: Brown-Out Reset qué es?
Publicado por: Azicuetano en 04 de Julio de 2007, 03:22:33
Si te parece le puedes pegar un vistazo a esto:

http://www.todopic.com.ar/foros/index.php?topic=16135.0

Yo te recomendaría que hicieras lo que comenta Diego.

Cuando dices que se te guardan valores en la RAM, a que te refieres? En direeciones aleatorias? O en direcciones que tú manipulas se guardan datos aleatorios?

Responde estas dudas y te comento las teorías que tengo.

PD: Si tienes el esquema de la PCB ponlo también que me huelo que van por ahí los tiros.


Un saludo desde Alicante.
Título: Re: Brown-Out Reset qué es?
Publicado por: RedPic en 04 de Julio de 2007, 03:40:46
Para el tema de la RAM dale un vistazo a Un efecto de la RAM de los PIC's peligroso para incautos como yo. (http://www.todopic.com.ar/foros/index.php?topic=15453.0)

Título: Re: Brown-Out Reset qué es?
Publicado por: Menta en 05 de Julio de 2007, 11:29:04
Hola Azicuetano.

He visto eso de los checkpoints, me pareció muy poco elegante al principio, pero después de leerlo todo, me has convencido, me parece muy útil. Muchas Gracias.

Lo de la ram... yo cuento eventos y se acumulan en una variable de picC cuya dirección de ram es asignada por el compilador, en mi programa principal tengo un menú con varias opciones, estando en la opción que cuenta eventos si se me resetea el pic veo un mensaje en el lcd que puse al iniciar (confirmando el reset) y después se vuelve al menú de la opción en el que estaba y el número de la cuenta se ha conservado, lo mismo con todas las variables...   pero ese comportamiento no siempre es así, aveces se cuelga, por eso creo que debo implementar BOR, PUT, WDT y Checkpoints

En cuanto a la placa, he anulado la parte de potencia (era un único relé en una esquina con su propio regulador 7812 de 1A) y la he puesto por separado así que en la placa ppal sólo tengo 5v para control, pero comparto masa. Alimento todo desde una batería de 12V/7Ah y una pantalla solar.


Diego (Redpic) Nuevamente gracias.
Lo de la ram entonces es simplemente eso, se conserva. Si no pretendo eso debo inicializarla.

Saludos.
Título: Re: Brown-Out Reset qué es?
Publicado por: RedPic en 05 de Julio de 2007, 14:54:42

Diego (Redpic) Nuevamente gracias.
Lo de la ram entonces es simplemente eso, se conserva. Si no pretendo eso debo inicializarla.

Saludos.

Exacto. El reset no inicializa la RAM, solo quitarle totalmente la alimentación (condensadores descargados y eso) es capaz de borrar la RAM. Yo ya he tomado la determinación de colocar un rutina llamada On_Reset_RAM() que es la primera en ejecutarse siempre y que inicializa uno a uno con los valores que yo deseo al inicio en todas mis variables en RAM, asi me aseguro de que siempre iniciaran con un valor conocido.