// Using a buzzer (beeper) USMT-9043A (DELTRON) // Buzzer resonance freq. is 2,7kHz // Routines for ATMEGA16 @ 4MHz, Port B, Pin1 // Last modified: 04-MAY-06 // D. Kleine-Beck /* Includes */ #include "iom16v.h" #include "gmeter_II.h" #define BUZZER (1 << 1) #define buzzer_on() (PORTB &= ~BUZZER) #define buzzer_off() (PORTB |= BUZZER) // -------- TONES --------- // user defined beep // in: Frequency in 1-10 kHz and duration in ms void buzzer_beep (unsigned char freq, unsigned int duration) // { unsigned int ticks, i; // 0,0015ms/delay(x) ticks = ((int)((100/freq)/2)*6); // not exactly (+5% in freq...) max=300 // duration: 667*ticks from delay(ticks) per ms // max 5s@10kHz, 50s@1kHz i = ((long)duration*334)/ticks; // while (i--) // 1000*0,5ms = 0,5s { delay(ticks); // approx 0.25ms delay buzzer_on(); delay(ticks); buzzer_off(); } } //----------------------------- // multi purpose delay - main loop = 6clocks void delay(int ticks) { while(ticks--); }