Subversion Repositories svnkaklik

Rev

Rev 409 | Blame | Compare with Previous | Last modification | View Log | Download

/*
    Copyright (C) 2004    John Orlando
    
   AVRcam: a small real-time image processing engine.

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public
    License along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

   For more information on the AVRcam, please contact:

   john@jrobot.net

   or go to www.jrobot.net for more details regarding the system.
*/
/***********************************************************
        Module Name: Utility.c
        Module Date: 04/13/2004
        Module Auth: John Orlando
        
        Description: This module provides a basic set of
        general purpose utilities that can be used by any
        module needing them.
    
    Revision History:
    Date        Rel Ver.    Notes
    4/10/2004      0.1     Module created
    6/30/2004      1.0     Initial release for Circuit Cellar
                           contest.
***********************************************************/

/*      Includes */
#include "CommonDefs.h"

/*  Local Variables */

/*      Local Structures and Typedefs */

/*  Extern Variables */

/*  Definitions */

/***********************************************************
        Function Name: Utility_delay
        Function Description: This function provides a busy-wait
        delay for a specified number of milliseconds.
        Inputs:  numMs - the number of milliseconds to delay
        Outputs: none
        NOTES: The delay_loop_1 and delay_loop_2 functions found
        in avr/delay.h provide accurate 3 and 4 cycle delay loops
        if needed...this isn't really a millisecond, so DON'T
    depend on it for exact timing...
***********************************************************/    
void Utility_delay(unsigned short numMs)
{
        volatile unsigned short i=0,j=0;
#ifndef SIMULATION
        for (i=0; i<numMs; i++)
        {
                for (j=0; j<1000; j++)
                {
                        asm volatile("nop"::);
                }
        }
#endif  
}