From 224379a37e8091ce00c51deaf08ab3faf4653dc1 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 2 Mar 2017 08:21:17 +0100 Subject: [PATCH] Delay loop using 16 bit timer/counter --- Hardware.h | 5 +++-- hardware.cpp | 29 ++++++----------------------- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/Hardware.h b/Hardware.h index f05f570..737bd28 100644 --- a/Hardware.h +++ b/Hardware.h @@ -2,5 +2,6 @@ #define F_CPU 1000000 -void delay_ms(double delay); -void delay_us(double delay); \ No newline at end of file +#include + +void delay_us(const uint16_t delay); diff --git a/hardware.cpp b/hardware.cpp index 4a23f67..cb7ba62 100644 --- a/hardware.cpp +++ b/hardware.cpp @@ -1,34 +1,17 @@ #include "hardware.h" #include "avr/io.h" -void delay_ms(double delay) +void delay_us(uint16_t delay) { - // prescaler: 1024 - TCCR0B = (1 << CS02) | (1 << CS00); - TCNT0 = 0; + TCCR1B = (1 << CS10); + TCNT1 = 0; - while (TCNT0 <= delay) + while (true) { - if (TCNT0 >= 49) + if (TCNT1 >= delay) { - delay -= 50; - TCNT0 = 0; + return; } } } -void delay_us(double delay) -{ - // prescaler: 1 - TCCR0B = (1 << CS00); - TCNT0 = 0; - - while (TCNT0 <= delay) - { - if (TCNT0 >= 50) - { - delay -= 50; - TCNT0 = 0; - } - } -}