Autor Tema: Detener un proceso  (Leído 2201 veces)

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

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Detener un proceso
« en: 31 de Marzo de 2023, 10:17:54 »
Buenos días a todo el grupo, tengo la siguiente pregunta, estoy usando el demo 6.0.0 de Niple y quiero detener un proceso con una tecla (por ejemplo "cancelar") pero tengo que hacerlo mientras se ejecuta un temporizador por bucle de 60 segundos, se puede interrumpir el proceso de alguna forma? Supongo que si pero no lo se hacer, gracias.
Aclaro que estoy usando un teclado matricial 4 x 4 y el proceso se ejecuta al pulsar una tecla llamada "inicio", al detectar esa tecla se enciende un led, se activa un relay y se ejecuta el temporizador de 60 seg., durante esa temporización quiero detener el proceso.
« Última modificación: 31 de Marzo de 2023, 10:23:47 por QUIQUE62 »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Detener un proceso
« Respuesta #1 en: 31 de Marzo de 2023, 11:11:20 »
De puede utilizar. Para eso debes ussr la interrupción en el pin RB0.
Cuando eso ocurre, guarda el valor del temporizador que resta hasta su máximo.
Ejecutas lo que necesites y antes de salir recuperas el valor guardado.

Sii no quieres realizar nada más que detener el proceso de te basta con detectar el cambio de estado de cualquier otro pin y realizas la parada del proceso.
Todos los días se aprende algo nuevo.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:Detener un proceso
« Respuesta #2 en: 31 de Marzo de 2023, 12:32:24 »
Gracias por contestar, quiero en este caso detener el proceso sin guardar nada, pero no me queda claro donde insertar otro bloque porque se está ejecutando un retardo de 30 segundos y tengo que esperar que termine. Una vez terminado el proceso la tecla cancelar se oprime y es detectada lo que me indica que funciona pero no produce la interrupción.
No veo la forma de adjuntar algo para que veas.
« Última modificación: 31 de Marzo de 2023, 12:45:26 por QUIQUE62 »

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:Detener un proceso
« Respuesta #3 en: 31 de Marzo de 2023, 14:37:59 »
ok tienes un programa que al presionar un botón inicio empieza una cuenta regresiva de 60 segundos y tienes otro botón cancelar que aborta esa misma cuenta, aquí hay muchas maneras de hacerlo pero tu ya tienes parámetros como un teclado matricial y una cuenta directa de un solo bloque de 60 segundos, supongo, por que no lo se, que una tecla de tu teclado es la de inicio y otra seria la de cancelar entonces deduzco que a la hora que pusiste tu teclado se habilito la interrupción por cambio de estado y desde la rutina de interrupción checas que sea la tecla de inicio para que empiece el bucle, lo ideal es que en la interrupción solo cheques la tecla y fuera de la interrupción hagas el bucle ya que será mas difícil si en la misma interrupción dejas el bucle necesitarías otra interrupción dentro de la interrupción para cancelar, si lo haces en el programa principal entonces a la hora que vuelvas a presionar otra tecla y sea la de cancelar ya estaría resuelto el programa, ahora se puede hacer sin el teclado y testeando entradas pero si necesitaríamos ver tu ejemplo para checar realmente como lo estas haciendo y encontrar la mejor solución.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:Detener un proceso
« Respuesta #4 en: 31 de Marzo de 2023, 14:54:00 »
Si es así como lo indicás, trato ahora de subir los archivos.
* matricial_4x4.zip
(4.28 kB - descargado 109 veces)
 
* matricial_4x4.zip
(4.28 kB - descargado 109 veces)

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:Detener un proceso
« Respuesta #5 en: 31 de Marzo de 2023, 14:55:25 »
me faltó el otro
* Tec 4x4.zip
(26.58 kB - descargado 109 veces)

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:Detener un proceso
« Respuesta #6 en: 31 de Marzo de 2023, 14:59:03 »
no puedo abrir tu ejemplo por la versión que manejo, no se si puedes mandar imágenes y desde hay checamos.

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:Detener un proceso
« Respuesta #7 en: 31 de Marzo de 2023, 15:38:43 »
Bueno ya lo intento

* Esquema simulador.png
(72.67 kB, 1280x680 - visto 222 veces)
 

* Esquema simulador.png
(72.67 kB, 1280x680 - visto 222 veces)

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:Detener un proceso
« Respuesta #8 en: 31 de Marzo de 2023, 15:39:44 »
ahí mando el otro

* esquema niple.png
(63.88 kB, 1280x680 - visto 240 veces)

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Detener un proceso
« Respuesta #9 en: 31 de Marzo de 2023, 16:15:51 »
Nunca he trabajado con Niple, pero se me ocurre una idea.

En lugar de hacer un retardo de 60 segundos, podrías hacer retardos más pequeños, por ejemplo, digamos de 1 segundo.

Cada vez que finaliza un retardo de 1 segundo, incrementas una variable.

Cuando la variable sea mayor ha 60, consigues el tiempo deseado.

Al momento que incrementas la variable y si es aun menor que 60, verificas la tecla "cancelar". Obviamente si está activa, haces el proceso que deseas hacer cuando esa tecla es presionada.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Detener un proceso
« Respuesta #10 en: 31 de Marzo de 2023, 16:41:10 »
Hola Quique,

Como dice Dominus, con los bloques de retado dejas al pic como muerto sin hacer nada hasta que pasa el tiempo seleccionado en el bloque.
Lo que tienes que hacer es hacer uso de alguno de los timers de forma que se produzca la interrupción cada cierto tiempo de forma fija, por ejemplo 100msg. Cuando pase ese tiempo incrementas la variable y compruebas si esa variable coincide con el tiempo que deseas y en ese caso de tienes el proceso.

De esta forma como la interrupción se ejecuta en 2º plano, mientras sucede puedes comprobar el estado de la entrada que cancela el proceso en cualquier momento del tiempo máximo que desees.

F.
Todos los días se aprende algo nuevo.

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:Detener un proceso
« Respuesta #11 en: 31 de Marzo de 2023, 17:48:05 »
colega comparto la solución de los amigos fer y dominus y anexo un diagrama con retardo de 100 mseg para tener una base 10 así que si quieres 30 segundos serian iniciar con 300 o para 1 minuto 600 y para 2 minutos 1200 solo decremento y listo y si en cualquier momento quieres parar parar se puede parar con un retraso de 100 mseg.

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:Detener un proceso
« Respuesta #12 en: 31 de Marzo de 2023, 18:13:49 »
te dejo el hex y el asm por que el npl no creo que lo abra tu versión como no abrió en la mia pero en la imagen la puedes replicar sin problemas, ya probe en el ejemplo que mandaste de proteus solo le baje de 300 a 50 los 600 a 100 y los 1200 para que fuera rápido la visualización.

Desconectado tsu_electronica

  • PIC18
  • ****
  • Mensajes: 274
Re:Detener un proceso
« Respuesta #13 en: 31 de Marzo de 2023, 22:23:02 »
ya subimos un corto video de como quedo la simulación en proteus, esperando sirva de guía o solución al post.
https://www.facebook.com/100069981438705/videos/114928761556253?idorvanity=2955793868020562

Desconectado QUIQUE62

  • PIC10
  • *
  • Mensajes: 30
Re:Detener un proceso
« Respuesta #14 en: 02 de Abril de 2023, 23:31:07 »
Gracias a todos por las respuestas.


 

anything