diff options
Diffstat (limited to 'source/ct-Bot/mcu/delay.c')
-rw-r--r-- | source/ct-Bot/mcu/delay.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/source/ct-Bot/mcu/delay.c b/source/ct-Bot/mcu/delay.c new file mode 100644 index 0000000..4d7ade3 --- /dev/null +++ b/source/ct-Bot/mcu/delay.c @@ -0,0 +1,69 @@ +/* + * c't-Bot + * + * 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. + * + */ + +/*! @file delay.c + * @brief Hilfsroutinen + * @author Benjamin Benz (bbe@heise.de) + * @date 20.12.05 +*/ + +#ifdef MCU + +#include "ct-Bot.h" + +#ifdef NEW_AVR_LIB + #include <util/delay.h> +#else + #include <avr/delay.h> +#endif + +#include "timer.h" + +/*! + * Warte 100 ms + */ +void delay_100ms(void){ + char counter; + //wait (10 * 120000) cycles = wait 1200000 cycles + counter = 0; + while (counter != 5) + { + //wait (30000 x 4) cycles = wait 120000 cycles + _delay_loop_2(30000); + counter++; + } +} + + +/*! + * Delays for ms milliseconds + * @param ms Anzahl der Millisekunden + */ +void delay(uint16 ms){ + uint32 start = TIMER_GET_TICKCOUNT_32; + if ((uint8)start != TIMER_GET_TICKCOUNT_8) start = TIMER_GET_TICKCOUNT_32; + uint32 ticksToWait = MS_TO_TICKS((uint32)ms); + uint32 now; + do { + now = TIMER_GET_TICKCOUNT_32; + if ((uint8)now != TIMER_GET_TICKCOUNT_8) now = TIMER_GET_TICKCOUNT_32; + } while (now-start < ticksToWait); + +} +#endif |