Autor Tema: como se reinicia un pic desde el programa 16f628 ejemplo  (Leído 4283 veces)

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

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
como se reinicia un pic desde el programa 16f628 ejemplo
« en: 29 de Julio de 2004, 08:41:00 »
alguien sabe como se puede reiniciar un pic el 16f628 o el f84 pero desde el programa. La idea es no usar el reset pin del micro si no hacerlo desde el programa con un codigo. Ya lo tengo funcionando habilitando un pin de salid y este me pone el pin de mclr o 0 ok pero desde el programa no se podra hacer eso tambien pregunto yo y como se hace.

Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #1 en: 29 de Julio de 2004, 11:01:00 »
 Pues he estado mirando los Data Sheets y los
PICs 18F ya disponen de una instrucción para tal efecto.

 Pero los que comentas tu desgraciadamente no, por lo que creo que tu solución será por harware.

Lo único que se me ocurre asín de pronto es que habilites una salida para realizar el Reset, la inviertes y la lleves a MCLR*, para realizar el Reset ya sabes activas esa salida.  
- T0ni0 -
30RCF112

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #2 en: 29 de Julio de 2004, 11:14:00 »
En C de CCS sí que hay una función específica para resetear el PIC.

Un saludo

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #3 en: 29 de Julio de 2004, 19:40:00 »
El 628 no tiene una instrucción directa que resetee el micro.

Se me ocurre una para hacerlo indirectamente y es usando el WD. Tu en tu programa vas rfrescando el WD cada x tiempo. Cuando quieres provocar un reset lo metes en un delay que no refresque durante ese tiempo y automáticamente te resetea el micro.

Luego puedes hacer emulaciones por soft, pero no es lo mismo: inicializar las variables, poner los registros como cundo arranca, etc.. Pero esto no es lo mismo que dar un reset al micro.

Saludos
Ricky
Madrid-España

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #4 en: 29 de Julio de 2004, 19:54:00 »

Tal vez esta es la respuesta más tonta pero por lo que entiendo de tu pregunta quieres resetear el pic con una istrucción en la memoria de programa sin tocar el pin de reset...

Pues que es lo que sucede cuando reinicias un PIC16F84??? Pues arranca en la posición 00h no? Pues que tal un goto

La verdad me gustaría saber para que quieres hacer esto de resetear por software?

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #5 en: 29 de Julio de 2004, 19:59:00 »
Atención Carlete,

Ahí lo único que haces es inicializar el contador de programa. Los pines de I/O no los inicializas, la RAM no la inicializas, etc. En el proceso de arranque hay toda una secuencia de cosas que hace el micro para que todo esté en su sitio cuando comience a gestionar la primera instrucción.

Por lo tanto no es lo mismo, aunque parezca igual.

Saludos
Ricky
Madrid-España

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #6 en: 29 de Julio de 2004, 20:03:00 »
Pero normalmente, o por lo menos yo lo hago así, luego de la 00H y la 04H, en la 5h hago toda la inicialización del micro (puertas, registros, etc). y luego arranca el programa principal... De esta manera no veo la diferencia

PD. Estoy asumiendo que todos los registros que necesita usar en su programa, puertas, etc. los inicializa despues de 5h. No es un reset per se, pero tal vez es lo que necesita

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #7 en: 29 de Julio de 2004, 20:16:00 »
Otra forma que se me ocurre es con el WDT, lo llevas a un loop donde no se refresque si ocurre la situación que tu deseas para provocar el reset.

De esta manera todos los registros, puertas, etc. toman su estado inicial, pero insisto que me gusta más la opción anterior . Claro, siempre y cuando los únicos registros que te interese utilizar sean los que estás inicializando luego de 05h.

Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #8 en: 30 de Julio de 2004, 02:07:00 »
ostras pos si que se me habia pasado por alto el WDT, que por definición está para hacer un Reset si se queda pillado el PIC, creo que es la opción más acertada. ah!!! por cierto carlete71 yo no utilizará el sistema que dices para hacer un Reset, ciertamente tu limpias todos tus registros incluso algunos del PIC, pero hay registros a los que no puedes acceder y seguramente tendras direcciones aplidadas, por lo que no podrás asegurar que tu programa no se vuelva loco en algún momento
- T0ni0 -
30RCF112

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #9 en: 30 de Julio de 2004, 04:56:00 »
Puedes "hacer el burro" con el PIC, y provocarle un overflow del copon para que reinicie, a mi, en mis viejas andanzas, me reiniciaba constantemente porque queria hacer 255+3 en una variable byte... simple, tan solo mover "11111111" a una variable, y hacer un inc...

o bien,

colocar un transistor entre /MCLR y masa, activado por un pin I/O del micro... yo creo que surtiria efecto.

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #10 en: 30 de Julio de 2004, 05:01:00 »
Buenmo amigos gracias por todas las alternatibas que me dan.

Esto lo quiero implemetar por si el programa se clava en algun lugar o da algun tipo de error en la data que saca el programa n los momentos lo pense hacer por el MCLR pero queria saber si tenia la opcion de hacerlo por programa asi como por el pin MCLR o sea que fuese lo mismo pero por lo que veo no se puede asi que dejare la opcion de MCLR que creo es la mas segura y efectiva de todas maneras seguire averiguando y les digo que se consigue  si lo logro implementar de alguna maner adiferente...
Gracias a todos

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #11 en: 30 de Julio de 2004, 09:30:00 »
No debería volverse loco el PIC por mandarlo a la 00h por software. Incluso fíjate en el datasheet que cuando haces un reset por hardware hay muchos registros de los cuales no se conoce el estado de sus bits, por eso es que yo digo que lo importante es que luego de ir a la 00h se inicialice lo que realmente se va a utilizar en el programa. Lo importante es la aplicación final y lo que ésta requiere con el reset. La idea no es cumplir con un concepto que está palsmado en un libro como si fuera una regla de oro, sino cumplir con el objetivo para lo cual se diseñó el circuito.

Lo bueno de esto es que creo que con nuestra discusión psicopic ha quedado más claro de lo que va hacer.

Suerte

Desconectado huro

  • PIC10
  • *
  • Mensajes: 36
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #12 en: 30 de Julio de 2004, 14:00:00 »

   Carlete tiene razón, esa es la manera correcta de manejar un microcontrolador y lo importante es la aplicación final....................

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: como se reinicia un pic desde el programa 16f628 ejemplo
« Respuesta #13 en: 30 de Julio de 2004, 15:56:00 »
me parece logica la cosa lo voy a implementar a ver que pasa ok y les cuento luego...
Nota . Si exploto con todo y protoboard les dejop las gracias si me pasa algo jejeje yo les cuento que paso