Autor Tema: TimeOut  (Leído 1203 veces)

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

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
TimeOut
« en: 15 de Mayo de 2016, 23:10:27 »
Hola a todos,
encontré este código en la red, es un TimeOut, funciona bien, que básicamente es multiplicar x numero por el delayms(1000).
Pero tengo una duda, cuando se genera ese retardo delay_ms(1000), la interrupción RDA sigue funcionando?
Es decir, un delay es un retardo, pero el procesador se "congela" por ese momento, de ahí me surge la duda si las interrupciones siguen trabajando a pesar de esos "congelamientos".

O si simplemente funciona este timeout porque la respuesta es muy rápida y obviamente la interrupción RDA alcanza a capturar?
 :mrgreen:


Código: C
  1. int1 DELAYs(int Delay_ctr)
  2. {  
  3.    counter_read=0;                                            // Reset buffer counter
  4.    while((counter_read==0)&&(Delay_ctr>0))      // stay here until modem responds (X Seconds is arbitrary)
  5.    {                              
  6.    delay_ms(1000);                      
  7.    Delay_ctr--;
  8.     }
  9.    if((counter_read==0)&&(Delay_ctr==0))
  10.    return(1);
  11.    if((counter_read==0)&&(Delay_ctr>0))
  12.    return(0);            
  13. }
« Última modificación: 15 de Mayo de 2016, 23:12:53 por cvargcal »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TimeOut
« Respuesta #1 en: 15 de Mayo de 2016, 23:33:51 »
La interrupcion sigue funcionando, vamos a la oficina un rato

El procesador esta haciendo "nada" mirando unos papeles en su escritorio del area "programa principal", al momento de la interrupcion el señor procesador es molestado por el hardware encargado de las interrupciones, y le indica que debe hacer otra cosa SI o SI, el procesador deja su escritorio tal cual estaba, marcando donde estaba mirando por ultima ves, y procede a irse a hacer lo que tenga que hacer en la interrupcion, Finalizada la tarea vuelve a su area en el "programa principal" y sigue rascandose (delay) mirando archivos y empezando desde donde habia dejado marcado.

Espero haber sido claro :P

De todas formas un "delay" es una mala implementacion de un timeout. Es preferible un timer e interrupciones.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:TimeOut
« Respuesta #2 en: 16 de Mayo de 2016, 00:02:35 »
....

Excelente respuesta.  :lol:
Si, lo implementare con un time#, pero mas que eso quería saber sobre la interrupcion.
Gracias