From e7e1634240c78c7abbdc7fc6e0af1beddaea1d45 Mon Sep 17 00:00:00 2001 From: neoraider Date: Tue, 17 Apr 2007 22:10:05 +0000 Subject: Linienverfolgung implementiert --- avr.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'avr.cpp') diff --git a/avr.cpp b/avr.cpp index fca50fb..cd528ba 100644 --- a/avr.cpp +++ b/avr.cpp @@ -1,5 +1,6 @@ #include "avr.h" #include "adc.h" +#include "global.h" #include "util.h" #include @@ -21,3 +22,22 @@ void waitForButton(int i) { while(getButton() != CLAMP(0, i, 5)); while(getButton() != 0); } + +void beep(unsigned long freq) { + const int prescalers[7] = {1, 8, 32, 64, 128, 256, 1024}; + + for(int i = 0; i < 7; i++) { + if(F_CPU/freq/2/prescalers[i] <= 256) { + TCCR2 = (TCCR2&~0x07)|(i+1); + OCR2 = F_CPU/freq/2/prescalers[i] - 1; + + return; + } + } + + beepOff(); +} + +void beepOff() { + TCCR2 &= ~0x07; +} -- cgit v1.2.3