Se puede saber en que parte se quedo el codigo???

buenas,

Recientemente me tope con un problema haber si me pueden ayudar (y cualquier ayuda es bienvenida :)), pues estoy haciendo una transmisión serial esto ya funciona correctamente pero me tope con el caso que cuando el micro se apague o resete guarde o me diga la ultima instrucción que ejecuto o que cuando inicie lo haga en la parte que se quedo antes de ser apagado o reiniciado la verdad es que no se me ocurre que hacer para este caso he leído que se puede con la eeprom pero no se como implementarla si me pueden ayudar con este detalle pues les agradesco.

Saludos,
 
Te digo que talves, solo talves el registro de contador de programa o PC, tenga algo que ver, sin embargo estaras guardando la posicion donde se quedo tu programa, mas no los datos que se estaban procesando en ese momento.

A mi parecer lo que puedes hacer es:

Realizar una copia de todos los registros y datos y guardarlos en la eeprom "Algo como hibernar en windows jeje" Pero ya tomaste en cuenta que la eeprom es finita y tarde o temprano se va descomponer. La solucion seria utilizar una externa del tipo sram pero estas necesitan una pila, o puedes usar una ferromagnetica o algo asi, pero son algo mas caras y dificiles de encontrar ramtron tiene unas.

O simplemente lo pones en modo Sleep y ya no te molestas pues consumen una ridicula cantidad de corriente estando en ese modo

Esto aplicaria para el caso del apagado, para el reinicio seria imposible pues al momento de reiniciar "con un pulso en la patilla RST" simplemente se pierde todo.

Hay algunos micros que te permiten cambiar el vector del RST o interrupcion y puedes dirigirlo a una funcion que realize el volcado de datos a tu eeprom, pero ve tu a saber cual jejeje
 
Última edición:
¿Cuál es la razón por la cual necesitas reiniciar en el mismo lugar del programa?

Todo lo que dijo Ajna arriba tiene sentido:

- Usar EEPROM, no importa si guardas 1byte o 50bytes, pero si c/vez que apagás el equipo vas a escribir esa memoria, el equipo va a tener poca vida útil (creo que andará por 10000 escrituras una memoria de ese tipo). Tal vez te conviene reemplazarlo con una memoria externa como dijieron o si el uC posee un RTC, tal vez puedas guardar variables y usar una pila.

- Entrar en modo de bajo consumo no es una mala opción, pero necesitas que el uC si o si tenga una batería.
 
Gracias por la ayuda brindada pero la idea es que en una banda transportadora tiene los distintos pasos que realiza para el conteo y llenado de cualquier cosa en mi kso pienso ponerle botellas y por eso es que aunque se vaya la luz conserve la ultima instrucción o estado en la que se quedo debido a que quiero que continué desde donde se quedo no desde cero por conservar la linea digamoslo así ahora si guardo el pcl y lo llamo una vez que regrese la energía o como seria la aplicación esto es un poco complejo ya que e intentado con la eeprom pero si resultados satisfactorios. voy a seguir buscando información y comento los resultados.
 
Pues la cosa es mas facil de lo que pretendes.

Dale una mirada a este circuito: http://www.intersil.com/products/ICL7673

Asi cuando la linea de alimentacion principal falle entonces el PIC va a ser alimentado con la bateria, adicionalmente el PIC va a saber que la linea principal de energia a fallado y en consecuencia puedes ejecutar una rutina que simplemente detenga el funcionamiento del PIC y solo se dedique a checar si se a restablecido la linea de alimentacion principal. Asi las variables se mantienen en la ram



Para checar si la linea de AC ha fallado simplemente usa un rectificar, luego lo filtras luego usas un divisor de voltaja y con eso alimentas al emisor de un optoacoplador, luego del otro lado pues al microcontrolador, es mas en este caso ni siquiera tendrias que usar el circuito que te digo, porque el mismo micro lo podria hacer, solo te lo puse com ejemplo
 
Última edición:
No le veo el sentido a almacenar el punto del codigo donde se quedo el PIC, pero si puedes almacenar una variable de estado de operacion que te indica que operacion se esta ejecutando o se va a ejecutar, combinandolo con el circuito que menciona Ajna puedes saber cuando se va a ir la luz y en ese momento almacenar este estado operativo

Por ejemplo, si estado = 0 entonces puede indicar que la banda esta esperando recibir materiales, estado 1, que la banda esta pasando mercancia, estado 2 que hay producto llenandose... etc etc etc...
 
Atrás
Arriba