Autor Tema: reset atraves de software  (Leído 3730 veces)

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

Desconectado qb_1

  • PIC10
  • *
  • Mensajes: 14
reset atraves de software
« en: 26 de Enero de 2004, 21:04:00 »
hola a todos, tengo una consulta, estoy haciendo una aplicacion con el 16f84a utilizando comunicacion rs-232 con la pc atraves de visual basic , y necesito resetiar el pic atraves del programa.
¿como puedo hacer esto  mandando un codigo, la idea que tengo es manipulando el registro PCounter si alguien tiene una idea se los agradeceria?

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: reset atraves de software
« Respuesta #1 en: 27 de Enero de 2004, 01:35:00 »
Si mal no recuerdo, esto se hace simplemente haciengo un goto (en asm) a la dirección 00h. Ahí se inicializan los registros y empieza el programa de nuevo. Creo que era así.

Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado felipito1

  • PIC16
  • ***
  • Mensajes: 118
RE: reset atraves de software
« Respuesta #2 en: 27 de Enero de 2004, 02:23:00 »
El inconveniente de utilizar el goto a la direcciòn 00h es con el stack, si està dentro de una subrutina se le forma un lìo con el programa, tambièn puede resetear el programa activando el wdt y encerrandolo en un loop hasta que se resetee por falta de clrwdt.

Desconectado qb_1

  • PIC10
  • *
  • Mensajes: 14
RE: reset atraves de software
« Respuesta #3 en: 28 de Enero de 2004, 10:03:00 »
gracias cucaracha y felipito1 se los agradesco; lo voy a probar atraves del wdt y luego les aviso

Desconectado eRickK11

  • PIC10
  • *
  • Mensajes: 2
RE: reset atraves de software
« Respuesta #4 en: 17 de Marzo de 2004, 02:23:00 »
Apenas voy a empezar un proyecto de un sistema domotico utlizando el pic 16f84 atraves de visual basic usando un modulador de 5 entradas 5 salidas y con esto solo voy a controlar el apagado y encendido de algunos aparatos electricos (television, microondas, luz, refrigerador)  me gustaria tener información sobre como se usa visual basic para un sistema domotico e informacion sobre el modulador que antes menciono, gracias por su atención y espero me haya explicado, bye!!

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: reset atraves de software
« Respuesta #5 en: 06 de Agosto de 2005, 11:55:00 »
hola a todos:
¿Si con la instrucción goto 00 voy al inicio del programa?, creo que se vuelve tonto el programa por lo menos eso me pasa a mí.
¿Alguno sabe otra forma de llevar el programa a la posición 00, desde una rutina de interrupción que no sea con la instrucción goto, ni con el watchdog?

¿Ah no sirve decir que apagando y volviendo a conectar la tensón del micro!Muchas risasMuchas risasMuchas risas  
Todos los días se aprende algo nuevo.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: reset atraves de software
« Respuesta #6 en: 06 de Agosto de 2005, 12:39:00 »
Buenas.

Con la siguiente rutina el PIC se resetea por desbordamiento de la pila y no necesita ni watchdog ni un goto 00h:

Codigo:
reset   nop
   call   reset


La rutina se llama a sí misma hasta que la pila del PIC se desborda.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: reset atraves de software
« Respuesta #7 en: 06 de Agosto de 2005, 17:16:00 »
Gracias antoniof, no se me había ocurrido.
Voy a probarlo ahora mismo.
Un saludo Carmelo
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: reset atraves de software
« Respuesta #8 en: 06 de Agosto de 2005, 17:25:00 »
Hola de nuevo:
Acabo de probar lo indicado en el post anteriot por antoniof y no funciona correctamente.
Es verdad que se llama a si misma hasta que la pila se desborda. Pero cuando la pila supera el octavo nivel, vuelve al primer nivel guardando la dirección de la subrutina que la ha llamado (call reset), pero nunca vuelve a la dirección 00.
Voy a seguir probando otras cosas. Si lo soluciono postearé la solución
Carmelo
Todos los días se aprende algo nuevo.

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: reset atraves de software
« Respuesta #9 en: 06 de Agosto de 2005, 20:57:00 »
efectivamente, NO existe un reset por desbrodamiento de pila (solo el MPLAB lo hace pero es por su configuracion no porq exista en el PIC), la unica forma de reiniciar el micro sin desconectar el PIC es via WDT, otra forma seria usar un circuito de reset externo, controlado por un pin del mismo controlador.

la idea es q el PIC al activar el pin (o desactivar) descargaria algun tipo de condensador e iniciaria un proceso de reset, o sea seria un reset con delay, la idea es estar seguro de que el micro ha perdido suficiente corriente (y voltaje) para reiniciar de forma correcta, estaba pensando en un 555 en configuracion single shot, la ventaja es q con este podemos "programar" el tiempo de disparo, en el caso, el tiempo que el PIC permanecera en reset, lo unico q me preocupa es si el pin q provocara el reset no se kedara atascado en un nivel fijo de reset, por tal motivo estaba pensando en controlar el pin de alimentacion (en vez del MCLR), lo cual garantizaria un nivel bajo al reset.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: reset atraves de software
« Respuesta #10 en: 07 de Agosto de 2005, 11:01:00 »
Hola:

Aunque no sea el subforo más apropiado.

¿Como  habria que configurar en el simulador PRoteus para ver el funcionamiento del WDT? Así de este modo podría seguir la traza para ver donde me interesa más activar el WDT.
Aparte de, para aplicaciones reales, cuando grabe el micro y active la casilla de WDT en ON.
Para simulsciones ¿Con configurar el registro OPTION y asignarle el predivisor al WRT es suficiente?
¿Desde ese momento estaría ya activo en mi programa?
Carmelo
Todos los días se aprende algo nuevo.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: reset atraves de software
« Respuesta #11 en: 08 de Agosto de 2005, 00:53:00 »
hola

si trabajas con el wdt, lo tendras que resetear cada tanto, para que no se reinicie el pic, no?. Si es asi, puedes mandar por medio del Visual Basic un codigo determinado. El pic, al recibir este, va a alguna subrutina en la cual no resetea al WDT del Pic y entonces despues de pasado el tiempo del WDT, se te va a resetear el Pic automaticamente.
Otra posibilidad seria con el comando "reset_cpu()", si trabajas con el CCS. Este hace que el programa vuelva a la posicion "0", o sea lo que se ha comentado antes.

Espero te sirva.

Aloha
Saludos desde Suiza, Pablo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: reset atraves de software
« Respuesta #12 en: 08 de Agosto de 2005, 10:25:00 »
Muchas gracias compañero, por tu respuesta, pero el programa lo tengo en ensamblador.
De C recien estoy empezando desde que comenzé las vacas... por lo que es muy pronto para pasar el programa a C, en cuanto lo domine un poco lo haré
Carmelo
Todos los días se aprende algo nuevo.

Desconectado carlyvalente

  • PIC16
  • ***
  • Mensajes: 108
RE: reset atraves de software
« Respuesta #13 en: 10 de Agosto de 2005, 05:27:00 »
Yo uso el goto 00h sin problemas mayores... pero que os parece esta idea que se le ha ocurrido a alguien anteriormente:

- pata MCLR controlada externamente a positivo con una resistencia de 100k (hay algunos pics que la puedes setear por palabra de control para que se una a positivo internamente, así que desactívalo)

- pin salida de pic (cualquiera) con una resistencia de 1k en serie hacia MCLR.

AL iniciar el programa este pin hacerlo 1 salida. (si no me equivoco el pic al iniciarse tiene sus puertos en alta impedancia, no?) Cuando quieras resetear , pues pones ese pin a 0 salida.

No lo he probado en la práctica, quizas estoy equivocado.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
RE: reset atraves de software
« Respuesta #14 en: 10 de Agosto de 2005, 12:30:00 »
Hola amigos:
Con el Goto 0x00 funciona el reset pero siempre que no sea desde una rutina de tratamiento de una interrupción,  si es desde lo que sucede es que va a la dirección 0x00 pero el(os) valores de la pila no se resetean y despues al seguir el programa puede dar problemas.
Lo del reset desde una subrutina de una interrupción creo haberlo solucionado a partir de ña idea de caryvaliente.
Si se conecta como dice no llega a funcionar correctamente, se producen falsos funcionamiento. Lo he solucionado de la siguiente forma y funciona OK.:
La patilla MCLR conectada a traves de una resistencia a +5V(como se indica en le datasheet)
La salida de un pin lo conecto a las dos entradas de una puerta NANAD(así funciona como inversor). A la salida de la puerta conecto otra resistencia a +5V y entre el pin de la puerta NAND y el pin MCLR conecto un condensador de 1n.
Despues por software, antes de salir de la rutina de la interrupción pongo a nivel alto el pin y se produce un pequeño impulso, descargando el condensador, así se pone el pin MCLR un instante a nivel bajo y se resetea el micro, volviendo a empezar otra vez desde la dirección 0x00. Incluso la pila pasa a la 1ª dirección.

No sé si la explicación es clara, pero os puedo aclarar cualquier duda que tengais, asi como si me decis como poder adjuntar en el mensaje, una figura de las coonexiones realizadas con proteus.

Otra cosa cuando hago funcionar el programa de forma continua(simulado con PROTEUS), no me detecta nunca la interrupcion porcambio de estado del pin RB0. Creo que la configuración de la misma está correcta, dado que si coloco un brek point a la justo antes de la salida de interrupcion, esta funciona y realiza todo lo que necesito.  ¿Me podrias indicar que me puede estar pasando, antes de realizar el montaje definitivo y ver como responde ?
Un saludo Carmelo
Todos los días se aprende algo nuevo.


 

anything