You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1015 B
48 lines
1015 B
/** @file piezo_beep.c
|
|
@author M. P. Hayes, UCECE
|
|
@date 12 April 2007
|
|
@brief Piezo beeping routines (blocking).
|
|
*/
|
|
|
|
#include "piezo_beep.h"
|
|
#include "pio.h"
|
|
|
|
|
|
/** Generate a beep, */
|
|
void piezo_beep (piezo_t piezo, uint16_t duration_ms)
|
|
{
|
|
uint16_t i;
|
|
|
|
for (i = 0; i < duration_ms * PIEZO_BEEP_FREQ_KHZ * 2; i++)
|
|
{
|
|
pio_output_toggle (piezo->pio);
|
|
DELAY_US (500 / PIEZO_BEEP_FREQ_KHZ);
|
|
}
|
|
}
|
|
|
|
|
|
/** Generate a short beep, */
|
|
void piezo_beep_short (piezo_t piezo)
|
|
{
|
|
uint16_t i;
|
|
|
|
for (i = 0; i < PIEZO_BEEP_SHORT_PERIOD_MS * PIEZO_BEEP_FREQ_KHZ * 2; i++)
|
|
{
|
|
pio_output_toggle (piezo->pio);
|
|
DELAY_US (500 / PIEZO_BEEP_FREQ_KHZ);
|
|
}
|
|
}
|
|
|
|
|
|
/** Generate a long beep, */
|
|
void piezo_beep_long (piezo_t piezo)
|
|
{
|
|
uint16_t i;
|
|
|
|
for (i = 0; i < PIEZO_BEEP_LONG_PERIOD_MS * PIEZO_BEEP_FREQ_KHZ * 2; i++)
|
|
{
|
|
pio_output_toggle (piezo->pio);
|
|
DELAY_US (500 / PIEZO_BEEP_FREQ_KHZ);
|
|
}
|
|
}
|