TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: DominusDRR en 03 de Diciembre de 2015, 11:33:21

Título: Pregunta acerca de delay en PICC
Publicado por: DominusDRR en 03 de Diciembre de 2015, 11:33:21
Hola

Estoy migrando un código realizado en PICC hacia XC8.

El código no lo hice yo, y dicho compilador lo utilice en un simple ejemplo hace varios años atrás y preferí aprender los compiladores de MCHP.

Dentro del código, en la función main existe un retardo en microsegundos, algo así como lo muestro a continuación:

void main (void)
{
...

   while(true)
 {
      if (STAR)
     {
          STAR = FALSE;
          delay_us(750);
         ........
       }
 }

}

Alguna vez leí o alguien me comentó que la instrucción delay_us deshabilita las interrupciones globales del microcontrolador mientras dura el retardo o delay.

¿Estoy en lo correcto?

Gracias
Título: Re:Pregunta acerca de delay en PICC
Publicado por: KILLERJC en 03 de Diciembre de 2015, 11:52:49
Realmente en el manual no dice nada de que desactive las interrupciones, si lo hace no es una demora, sino que es algo malo.

Yo estaria mas que seguro que no las desactiva. Lo que si, tenes que tener en cuenta que esta limitado

Citar
The delay argu-ment must be a constant and less than approximately 179,200 for PIC18 devices and approximately 50,659,000 for other devices.

Esto se refiere a la cantidad de ciclos, es decir de _delay(x), _delay_ms() y _delay_us() usan a _delay(), por ende hay que tener en cuenta el limite que se puede llegar con estos. Es un poco molesto pero si se necesita mucha demora no deberia haber problema poniendolo en un for.

Acabo de darme cuetna que preguntas por el delay de PICC, en fin, no creo que lo desactive, sino no seria un buen delay.
Título: Re:Pregunta acerca de delay en PICC
Publicado por: PalitroqueZ en 03 de Diciembre de 2015, 15:24:37
DominusDRR

cuando preguntas por la función delay_us, ¿lo haces por el compilador PICC o por el compilador XC8?

Título: Re:Pregunta acerca de delay en PICC
Publicado por: DominusDRR en 03 de Diciembre de 2015, 17:19:33
DominusDRR

cuando preguntas por la función delay_us, ¿lo haces por el compilador PICC o por el compilador XC8?

Título de este hilo:

Pregunta acerca de delay en PICC
Título: Re:Pregunta acerca de delay en PICC
Publicado por: PalitroqueZ en 03 de Diciembre de 2015, 17:24:54
ok, en la ayuda del PICC dice lo siguiente respecto al uso de la función delay_xx:

Citar
Creates code to perform a delay of the specified length. Time is specified in microseconds. Shorter delays will be INLINE code and longer delays and variable delays are calls to a function. This function works by executing a precise number of instructions to cause the requested delay.  It does not use any timers. If interrupts are enabled the time spent in an interrupt routine is not counted toward the time.

 

The delay time may be longer than requested if an interrupt is serviced during the delay. The time spent in the ISR does not count toward the delay time.

Título: Re:Pregunta acerca de delay en PICC
Publicado por: RedPic en 03 de Diciembre de 2015, 17:41:41
No. el delay_xx en PICC no deshabilita ninguna interrupción, ni global ni ninguna en particular.

Lo único a tener en cuenta es lo que cita PalitroqueZ, que el tiempo de retardo de la función se detiene cuando se ejecuta una interrupción por lo que el tiempo que ésta consuma será añadido al tiempo total del delay.
Título: Re:Pregunta acerca de delay en PICC
Publicado por: DominusDRR en 03 de Diciembre de 2015, 17:55:44
Muchas gracias a todos por la información.