Autor Tema: Interrupciones y multitarea...  (Leído 2223 veces)

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

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
Interrupciones y multitarea...
« en: 17 de Agosto de 2004, 21:06:00 »
De repente se me ocurrieron un montón de dudas que paso a compartir. Las numero para ordenar un poco las respuestas...

1)- Mientras el pic está enviando un dato por la USART, se para la ejecución del resto del micro (por ejemplo un bucle) hasta que termina el envío?

2)- Lo mismo sucede mientras el ADC está muestreando? O esto se ejecuta en segundo plano y puedo hacer otras cosas de mientras?

3)- Que sucede si en medio de el envío de datos por la USART o en medio de una conversión ocurre una interrupción? Tengo que empezar todo de nuevo?.

4)- En un 16F877 se puede hacer una interrupción que atienda la ENTRADA de datos por USART? O hay que estar sensando todo el tiempo? (polling).

Disculpen todas estas preguntas juntas, lo que sucede es que me golpeé la cabeza y me surgieron así.

Desde ya muchas gracias.


Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: Interrupciones y multitarea...
« Respuesta #1 en: 18 de Agosto de 2004, 04:22:00 »
Todos los módulos que comentas que quieres utilizar en "segundo plano" son módulos independiéntes de la CPU que cuando terminan su cometido levantan un Flag indicativo, así pues los timers, el AD, el shift reg UART etc... pueden ser programados por la CPU y luego tu decides si los miras por polling o por Interrupción.

Si lo que te interesa es hacer otras cosa mientras ( por ejemplo ) capturas un valor analógico, pues lo programas por interrupción. Eso si un consejo en las interrupciones realiza el mínimo de instrucciones posible (si puede ser utiliza flags creados por ti) y sal rápido para poder atender a tus rutinas o a otras interrupciones. En este sentido los PIC18F ya disponen de dos niveles de prioridad de interrupciones muy útil si te interesa que la UART no moleste al AD o lo que sea.

No se si he aclarado tus dudas o te hecho volver a golpear la cabeza
- T0ni0 -
30RCF112

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: Interrupciones y multitarea...
« Respuesta #2 en: 18 de Agosto de 2004, 12:12:00 »
Creo que está muy claro.
Muchas gracias!!!

Desconectado Juanse_

  • PIC10
  • *
  • Mensajes: 39
RE: Interrupciones y multitarea...
« Respuesta #3 en: 22 de Agosto de 2004, 10:17:00 »
Sugerencia, dependiendo del tipo de rutina que tengas en las interrupciones es probable que necesites salvar el contexto.

Es importante lo que dice Tonio respecto al tiempo que tu sistema se va a mantener en la rutina de interrupciôn. Si tenês en cuenta el tamaño del buffer de entrada (hard) y el tiempo mâximo de ejecuciôn de tu rutina, no tendrîas por quê perder datos, pero siempre conviene verificar si el dato fue sobreescrito antes de ser leido. Eso no te posibilita recuperar lo perdido, pero al menos vas a saber que tus datos estân corruptos y eventualmente podes pedir un reenvîo.

Algo obvio, pero lo comento por las dudas, mirâ cuantos niveles tiene tu stack y controla que no te estês pasando.


 

anything