Autor Tema: Go to dentro de una interrupcion  (Leído 1459 veces)

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

Desconectado Ranculche

  • PIC12
  • **
  • Mensajes: 74
Go to dentro de una interrupcion
« en: 03 de Diciembre de 2015, 15:47:44 »
Hola a todos, tengo un problema, necesito recibir datos por puerto serie, y en que caso de que lleguen, procesarlos inmediatamente. El segundo problema, es que hay muchas funciones de un SIM900 que necesita muchos tiempos de retardo, y si recibo datos en ese periodo: O bien pierdo datos, o pongo un go to en la interrup y los proceso, pero dejo de hacer lo que estaba haciendo, a parte de ello, no se si poner un go to dentro de una interrupcion es saludable. Que opinan? Espero que me hayan entendido.   

Saludos.-

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re:Go to dentro de una interrupcion
« Respuesta #1 en: 03 de Diciembre de 2015, 17:14:26 »
nada saludable es un salto dentro de una interrupción.  :mrgreen:
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re:Go to dentro de una interrupcion
« Respuesta #2 en: 03 de Diciembre de 2015, 17:47:05 »
nada saludable es un salto dentro de una interrupción.  :mrgreen:

Amen. Y además un GOTO no debería ser saludable en ningún caso. Haciendo uso de él es muy fácil caer en la programación "spaghetti" en la que si quieres seguir el hilo de ejecución terminas liado y no tienes claro qué se ejecuta antés y qué después.

Es mucho mejor utilizar un flag, una variable de un solo bit que lo levantas en la interrupción y lo tratas fuera de ella, volviendo a poner el flag a bajo. Es mucho más saludable para el programa y para tus nervios  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Go to dentro de una interrupcion
« Respuesta #3 en: 03 de Diciembre de 2015, 20:59:38 »
Si tu interrupcion tarda demasiado entonces esta MAL. La interrupcion debe ser rapida y salir, de esa forma da a lugar a otras interrupciones. Un GOTO, un CALL es posible usarlo en una interrupcion no hay ningun problema por ello. El tema es que deberias pensar la interrupcion como un programa aparte de la del micro. Y que esa se deberia ejecutar rapidamente siempre. Sin delays, sin funciones que consuman mucho tiempo,etc

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re:Go to dentro de una interrupcion
« Respuesta #4 en: 03 de Diciembre de 2015, 23:29:18 »
Coincido con los comentarios anteriores, en la interrupción debes guardar el dato recibido y luego procesar en el loop principal. Aunque esta demonizado el uso del goto es algunas situaciones controladas es la solución mas elegante y que consume menos recursos.

Saludos !