/************************** Copyright (c) **********************************
|
** FUZHOU FUGUANG ELECTRONICS Co.,LTD.
|
** ¸£Öݸ£¹âµç×ÓÓÐÏÞ¹«Ë¾
|
** http://www.fuguang.com
|
**
|
**-------------- File Info -------------------------------------------------
|
** File name: Buzzer_Driver.c
|
** Last modified Date: 2008-11-16
|
** Last Version: 1.0
|
** Descriptions: Buzzer Beep Drivers lib
|
**
|
**--------------------------------------------------------------------------
|
** Created by: mxpopstar
|
** Created date: 2008-11-16
|
** Version: 1.0
|
** Descriptions: The original version
|
**
|
**--------------------------------------------------------------------------
|
** Modified by: mxpopstar
|
** Modified date: 2008-11-20
|
** Version:
|
** Descriptions: Buzzer Beep Drivers lib
|
**
|
***************************************************************************/
|
//
|
#include "Buzzer_Driver.h"
|
#include <avr/io.h>
|
#include "main.h"
|
#include "Delay.h"
|
|
static unsigned char BeepEN = 0;
|
static unsigned char BeepCount = 0;
|
|
static unsigned int BeepONTime = 1000;
|
static unsigned int BeepOFFTime = 1000;
|
|
void InitIO_Buzzer(void)
|
{
|
DDRF |= 0x40;
|
PORTF &= (~0x40);
|
_delay_ms(1);
|
}
|
//
|
|
void InitAlarmBeep(void)
|
{
|
TIFR |= 0x40; //Çå³ýT2µÄ¼ÆÊýÒç³öÖжÏ
|
TCNT2 = 0; //¼ÆÊý³õʼֵÖÃΪ0
|
TIMSK &= (~0x40); //½ûÖ¹T2¼ÆÊýÒç³öÖжÏ
|
TCCR2 = 0x05; //ϵͳʱÖÓµÄ1024·ÖƵֵ,²¢¿ªÊ¼¼ÆÊý
|
}
|
//
|
|
SIGNAL(SIG_OVERFLOW2)
|
{
|
|
}
|
//
|
|
void BuzzerBeep(const unsigned int ms)
|
{
|
Buzzer_ON;
|
Delay_MS(ms);
|
Buzzer_OFF;
|
}
|
//
|
|
void StartAlarmBeep(const unsigned char type)
|
{
|
switch(type)
|
{
|
case BeepNull: return;
|
|
case FDLineConnectError: BeepONTime = 6;
|
BeepOFFTime = 10;
|
break;
|
case FDVolTooHight: BeepONTime = 6;
|
BeepOFFTime = 10;
|
break;
|
case FDTimeFinished: BeepONTime = 14;
|
BeepOFFTime = 28;
|
break;
|
case FDCapFinished: BeepONTime = 14;
|
BeepOFFTime = 28;
|
break;
|
case FDMonomerVolLimit: BeepONTime = 14;
|
BeepOFFTime = 28;
|
break;
|
case FDSumVolLimit: BeepONTime = 14;
|
BeepOFFTime = 28;
|
break;
|
case PowerOFFStop: BeepONTime = 14;
|
BeepOFFTime = 28;
|
break;
|
case FlashUPStop: BeepONTime = 14;
|
BeepOFFTime = 28;
|
break;
|
case MonomerModleDrop: BeepONTime = 5;
|
BeepOFFTime = 112;
|
break;
|
case MonomerModleDrop2: BeepONTime = 5;
|
BeepOFFTime = 112;
|
break;
|
}
|
|
BeepCount = 0;
|
BeepEN = 1;
|
}
|
//
|
|
void StopAlarmBeep(void)
|
{
|
Buzzer_OFF;
|
BeepCount = 0;
|
BeepEN = 0;
|
}
|
//
|
|
void BuzzerBeepTask(void)
|
{
|
if(BeepEN > 0)
|
{
|
if(TIFR & 0x40)
|
{
|
TIFR |= 0x40;//Çå³ýT2µÄ¼ÆÊýÒç³öÖжÏ
|
BeepCount++;
|
}
|
|
if(BeepCount <= BeepONTime)
|
{
|
Buzzer_ON;
|
}
|
else if((BeepCount>BeepONTime) && (BeepCount<=BeepOFFTime))
|
{
|
Buzzer_OFF;
|
}
|
else
|
{
|
BeepCount = 0;
|
}
|
}
|
}
|
//
|