00001 #ifndef _DELAY_H
00002 #define _DELAY_H
00003
00004 #include <stdint.h>
00005 #include <util/delay_basic.h>
00006 #include "watchdog.h"
00007
00008 #define WAITING_DELAY 100
00009
00010 #if F_CPU < 4000000UL
00011 # error Delay functions only work with F_CPU >= 4000000UL
00012 #endif
00013
00014
00015 void delay_us(uint16_t delay);
00016
00017
00018 void _delay(uint32_t delay);
00019
00020
00021 void _delay_ms(uint32_t delay);
00022
00023
00024
00025
00026 static void delay(uint32_t) __attribute__ ((always_inline));
00027 inline void delay(uint32_t d) {
00028 if (d > (65536L / (F_CPU / 4000000L))) _delay(d);
00029 else {
00030 wd_reset();
00031 if( d ) {
00032 _delay_loop_2(d * (F_CPU / 4000000L));
00033 wd_reset();
00034 }
00035 }
00036 }
00037
00038
00039
00040
00041 static void delay_ms(uint32_t) __attribute__ ((always_inline));
00042 inline void delay_ms(uint32_t d) {
00043 if (d > 65)
00044 _delay_ms(d);
00045 else
00046 delay(d * 1000);
00047 }
00048 #endif