2009-10-06 13:11:04     __delay unit of measurement

Document created by Aaronwu Employee on Aug 19, 2013
Version 1Show Document
  • View in full screen mode

2009-10-06 13:11:04     __delay unit of measurement

Pawel Pastuszak (CANADA)

Message: 80904   

 

In the following function __delay what is the measurement unit or was is the lowest values example nanoseconds?

 

 

 

What i looking is to do an delay in nano seconds i need to calculate 250ns of a delay.

 

 

 

static inline void __delay(unsigned long loops)

{

    if (ANOMALY_05000312) {

        /* Interrupted loads to loop registers -> bad */

        unsigned long tmp;

        __asm__ __volatile__(

            "[--SP] = LC0;"

            "[--SP] = LT0;"

            "[--SP] = LB0;"

            "LSETUP (1f,1f) LC0 = %1;"

            "1: NOP;"

            /* We take advantage of the fact that LC0 is 0 at

             * the end of the loop.  Otherwise we'd need some

             * NOPs after the CLI here.

             */

            "CLI %0;"

            "LB0 = [SP++];"

            "LT0 = [SP++];"

            "LC0 = [SP++];"

            "STI %0;"

            : "=d" (tmp)

            : "a" (loops)

        ); 

    } else

        __asm__ __volatile__ (

            "LSETUP(1f, 1f) LC0 = %0;"

            "1: NOP;"

            :  

            : "a" (loops)

            : "LT0", "LB0", "LC0"

        ); 

}

QuoteReplyEditDelete

 

 

2009-10-06 13:22:35     Re: __delay unit of measurement

Mike Frysinger (UNITED STATES)

Message: 80907   

 

there is no "scale".  __delay() does what it's told -- it loops for the specified number of nops.  read the udelay() function if you want to figure out how to scale it.

Attachments

    Outcomes