/[avr-libc]/avr-libc/include/avr/delay.h
ViewVC logotype

Diff of /avr-libc/include/avr/delay.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by joerg_wunsch, Sun Aug 14 21:44:54 2005 UTC revision 1.11 by joerg_wunsch, Tue Sep 6 21:08:25 2005 UTC
# Line 1  Line 1 
1  /* Copyright (c) 2002, Marek Michalkiewicz  /* Copyright (c) 2002, Marek Michalkiewicz
2     Copyright (c) 2004, Joerg Wunsch     Copyright (c) 2004,2005 Joerg Wunsch
3     All rights reserved.     All rights reserved.
4    
5     Redistribution and use in source and binary forms, with or without     Redistribution and use in source and binary forms, with or without
# Line 47  Line 47 
47      #include <avr/delay.h>      #include <avr/delay.h>
48      \endcode      \endcode
49    
50        \note As an alternative method, it is possible to pass the
51        F_CPU macro down to the compiler from the Makefile.
52        Obviously, in that case, no \c #define statement should be
53        used.
54    
55      The functions in this header file implement simple delay loops      The functions in this header file implement simple delay loops
56      that perform a busy-waiting.  They are typically used to      that perform a busy-waiting.  They are typically used to
57      facilitate short delays in the program execution.  They are      facilitate short delays in the program execution.  They are
# Line 70  Line 75 
75      operate on double typed arguments, however when optimization is      operate on double typed arguments, however when optimization is
76      turned on, the entire floating-point calculation will be done at      turned on, the entire floating-point calculation will be done at
77      compile-time.      compile-time.
78    
79        \note When using _delay_us() and _delay_ms(), the expressions
80        passed as arguments to these functions shall be compile-time
81        constants, otherwise the floating-point calculations to setup the
82        loops will be done at run-time, thereby drastically increasing
83        both the resulting code size, as well as the time required to
84        setup the loops.
85  */  */
86    
87    #if !defined(DOXYGEN)
88    static void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
89    static void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
90    static void _delay_us(double __us) __attribute__((always_inline));
91    static void _delay_ms(double __ms) __attribute__((always_inline));
92    #endif
93    
94  /** \ingroup avr_delay  /** \ingroup avr_delay
95    
96      Delay loop using an 8-bit counter \c __count, so up to 256      Delay loop using an 8-bit counter \c __count, so up to 256
# Line 83  Line 102 
102      Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds      Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
103      can be achieved.      can be achieved.
104  */  */
105  static __inline__ void  void
106  _delay_loop_1(uint8_t __count)  _delay_loop_1(uint8_t __count)
107  {  {
108          __asm__ volatile (          __asm__ volatile (
# Line 105  _delay_loop_1(uint8_t __count) Line 124  _delay_loop_1(uint8_t __count)
124      Thus, at a CPU speed of 1 MHz, delays of up to about 262.1      Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
125      milliseconds can be achieved.      milliseconds can be achieved.
126   */   */
127  static __inline__ void  void
128  _delay_loop_2(uint16_t __count)  _delay_loop_2(uint16_t __count)
129  {  {
130          __asm__ volatile (          __asm__ volatile (
# Line 132  _delay_loop_2(uint16_t __count) Line 151  _delay_loop_2(uint16_t __count)
151    
152     The maximal possible delay is 768 us / F_CPU in MHz.     The maximal possible delay is 768 us / F_CPU in MHz.
153   */   */
154  static __inline__ void  void
155  _delay_us(double __us)  _delay_us(double __us)
156  {  {
157          uint8_t __ticks;          uint8_t __ticks;
# Line 157  _delay_us(double __us) Line 176  _delay_us(double __us)
176    
177     The maximal possible delay is 262.14 ms / F_CPU in MHz.     The maximal possible delay is 262.14 ms / F_CPU in MHz.
178   */   */
179  static __inline__ void  void
180  _delay_ms(double __ms)  _delay_ms(double __ms)
181  {  {
182          uint16_t __ticks;          uint16_t __ticks;

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26