Autor Tema: Delay us en PIC32  (Leído 5009 veces)

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

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Delay us en PIC32
« en: 15 de Noviembre de 2012, 16:44:52 »
Hola, tengo una duda... yo quiero un delay en us(micro segundos), el pic32 trae una libreria que tiene un retardo de 10us, como hacer para convertir de 10us a 1us????

Código: [Seleccionar]
void Delay10us(DWORD dwCount)
{
volatile DWORD _dcnt;

_dcnt = dwCount*((DWORD)(0.00001/(1.0/GetInstructionClock())/10));
while(_dcnt--)
{
Nop();
Nop();
        Nop();
}
}

Creo que se podría si agregamos un 0 en la ecuación central... quedaría así:

Código: [Seleccionar]
_dcnt = dwCount*((DWORD)(0.000001/(1.0/GetInstructionClock())/10));
Ustedes que opinan???

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Delay us en PIC32
« Respuesta #1 en: 15 de Noviembre de 2012, 17:16:14 »
Primero, si quieres verificar la modificación podes simularlo!  :roll: Después, quieres algo genérico o solo de 1us? Porque si trabajas a 80MIPS podes crear un macro o una función con los Nop() necesarios.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Delay us en PIC32
« Respuesta #2 en: 15 de Noviembre de 2012, 17:45:16 »
Hola Suky,

1. No tengo ni la mas remota idea de simularlo.
2. Necesito 1us, ni mas ni menos, de cualquier forma, pero que sea 1us.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Delay us en PIC32
« Respuesta #3 en: 15 de Noviembre de 2012, 18:21:46 »
Y la variación propia del cristal??
Cuanto puede variarte en 1 uS ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Delay us en PIC32
« Respuesta #4 en: 15 de Noviembre de 2012, 18:30:16 »
Claro que va a variar, nunca va a ser un valor exacto, eso no lo tomo en cuenta, en este caso seria despreciable y no critico esta variacion

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Delay us en PIC32
« Respuesta #5 en: 15 de Noviembre de 2012, 18:47:02 »
Busca sobre MPLAB SIM y Stop Watch para la simulación, seguro hay hasta vídeos! Son herramientas muy útiles que no se puede no saber :tongue:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Delay us en PIC32
« Respuesta #6 en: 15 de Noviembre de 2012, 18:51:10 »
listo Suky... voy a buscar a ver que tal me va con eso, gracias.  :-/ :-/ :-/

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Delay us en PIC32
« Respuesta #7 en: 15 de Noviembre de 2012, 19:11:57 »
Hola, no uso PIC32, pero se que estos micros tiene cache de instrucciones como todo micro avanzado, no es recomendable hacer delays con el tiempo de ejecución de las instrucciones ( NOP ) porque esto pueden variar dependiendo si el micro toma o no del cache, yo creo que deberías usar un timer.

Saludos !

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Delay us en PIC32
« Respuesta #8 en: 22 de Noviembre de 2012, 18:33:08 »
Hola, como no tenia mucho tiempo para investigar, programe, puse osciloscopio y para mi gran sorpresa funciono... no tengo fotos de la imagen, pero funcionaba perfectamente... así pude implementar unas pruebas de i2c, tomando como tiempo este delay en us.