/************************** Copyright (c) **********************************
|
** FUZHOU FUGUANG ELECTRONICS Co.,LTD.
|
** ¸£Öݸ£¹âµç×ÓÓÐÏÞ¹«Ë¾
|
** http://www.fuguang.com
|
**
|
**-------------- File Info -------------------------------------------------
|
** File name: main.c
|
** Last modified Date: 2008-11-16
|
** Last Version: 1.0
|
** Descriptions: The main functions
|
**
|
**--------------------------------------------------------------------------
|
** 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: The main functions
|
**
|
***************************************************************************/
|
//
|
#include <avr/io.h>
|
#include <util/delay.h>
|
#include <avr/pgmspace.h>
|
#include "Define.h"
|
#include "GB_Var.h"
|
#include "ZiKu24_24.h"
|
#include "ZiKu16_24.h"
|
#include "ZiKu32_32.h"
|
#include "ZiKu8_11.h"
|
#include "ZiKu12_16.h"
|
#include "TFT_Driver.h"
|
#include "Delay.h"
|
#include "MainMenu.h"
|
#include "SystemInit.h"
|
#include <avr/interrupt.h>
|
#include <avr/wdt.h>
|
#include "FileManage.h"
|
#include "M64USART_Driver.h"
|
#include "AdjustValuePage.h"
|
#include "NRF905_Driver.h"
|
#include "MessageBox.h"
|
#include "74HC595_Driver.h"
|
#include "M64ADC_Driver.h"
|
#include "M64PWM_Driver.h"
|
#include "WorkingPage.h"
|
#include "ProgressForm.h"
|
#include "Buzzer_Driver.h"
|
#include "CRC16.h"
|
#include "LogoPage.h"
|
#include "AD7843_Driver.h"
|
#include "ChargePage.h"
|
|
void RunMainTask(void)
|
{
|
static unsigned int Scedule = 0;
|
|
static unsigned int Scedule1 = 0;
|
|
static unsigned int fenon_Count = 0;
|
static unsigned int fenon_Count2 = 0;
|
wdt_reset(); //ι¹·
|
|
Scedule++;
|
|
BuzzerBeepTask();
|
|
//------------ ±£´æÊý¾Ýµ½flash -------------------
|
if(GB_SYS_State.SaveDateEN)
|
{
|
GB_SYS_State.SaveDateEN = 0;
|
SaveFile(&GB_FBO_Data);
|
}
|
|
//------------ ·¢ËÍ232ʵʱÊý¾Ý -------------------
|
if(GB_SYS_State.SendRTDataEN)
|
{
|
unsigned int datalen = sizeof(GB_FBO_Data)-1000+GB_FBO_Data.BattSum*2;
|
GB_SYS_State.SendRTDataEN = 0;
|
|
GB_FBO_Data.CRC16 = 0;
|
GB_FBO_Data.CRC16 = CalCRC16(&GB_FBO_Data, datalen);
|
|
SendSTR_M64USART0(&GB_FBO_Data, datalen);
|
}
|
|
//------------ Ôڷŵç¹ý³ÌÖмì²âÍ£»úÌõ¼þºÍ¸÷ÖÖÒì³£Çé¿ö ------------------
|
if((GB_SYS_State.TestType==TestTypeDischarge)&&(GB_SYS_State.WorkState==Discharging))
|
{
|
Scedule1 = 0;
|
CheckIfStop(&GB_FBO_Data, GB_TestingParm);
|
}
|
//------------ ÔÚ³äµç¹ý³ÌÖÐÒì³£Çé¿ö¼ì²â´¦Àí ----------------------------
|
else if((GB_SYS_State.TestType==TestTypeCharge)&&(GB_SYS_State.WorkState==Charging))
|
{
|
CPCheckAbnormalAlarm();
|
}
|
|
//------------ ÔÚ³äµç¹ý³ÌÖмòµ¥¿ØÖƳäµçµçÁ÷ ----------------------------
|
if(GB_SYS_State.WorkState == Charging)
|
{
|
CPControlChargeCurrent(&GB_FBO_Data);
|
}
|
|
//------------ »ñÈ¡²¢´¦Àí´¥ÃþÆÁºÍ¼üÅ̵ÄÊäÈë ----------------------------
|
if((Scedule%11) == 0)
|
{
|
GB_SYS_State.GetInput();
|
}
|
|
//------------ ²É¼¯±¾»úºÍǯ¿ÚµÄµçÁ÷µçѹ --------------------------------
|
if((Scedule%20) == 0)
|
{
|
GetVolCurrent(&GB_FBO_Data);
|
}
|
|
//------------ ÒÔÒ»¶¨µÄËÙÂʺÍÌõ¼þ²É¼¯ÎÞÏßµ¥Ìåµçѹ ----------------------
|
if((Scedule % 24) == 0)
|
{
|
Get_Vol_Datas(&GB_FBO_Data, &GB_SYS_State, GB_TestingParm[7]*10);
|
}
|
|
//------------ÓÃÓÚÖ÷»ú·¢³ö´Ó»úÐźźó¶Ï¿ª×Ô¼ºµÄ¼ÌµçÆ÷-----------------
|
if((GB_SYS_State.WorkState == Stopped)||(GB_SYS_State.WorkState == Paused))
|
{
|
Scedule1++;
|
if(Scedule1 >= 6000)
|
{
|
CloseSelfRelay();
|
Scedule1=0;
|
}
|
}
|
//------------ ¿ØÖÆ·çÉȵĿªºÍ¹Ø ----------------------------------------
|
if((GB_SYS_State.WorkState==Stopped) && ((Scedule%128)==0) && (GB_FBO_Data.SumCurrent>=50))
|
{
|
static unsigned char count = 0;
|
if((!(GetDischargePowerState()&WIND)) && (!(GetChargePowerState()&WIND)))//Èç¹û·çÉÈÊǹØ×ŵÄ
|
{
|
if(count++ >= 10)
|
{
|
SetDischargePowerState(WIND);
|
SendDataToHC595(GetDischargePowerState());
|
count = 0;
|
}
|
}
|
}
|
//Èç¹û·çÉÈÊÇ¿ª×ŵÄ,ÇÒϵͳ¹¤×÷״̬ÊÇÍ£Ö¹
|
/*if((GetDischargePowerState()&WIND)&&((GB_SYS_State.WorkState == Stopped)||(GetAdjVPWorkState()==AdjVPStopped))&&(GB_FBO_Data.SumCurrent<=50))
|
{
|
fenon_Count++;
|
if(fenon_Count>=64000)
|
{
|
fenon_Count2++;
|
fenon_Count = 0;
|
}
|
}
|
else
|
{
|
fenon_Count = 0;
|
fenon_Count2 = 0;
|
}
|
|
if((fenon_Count2 > 20)&&(GetDischargePowerState()&WIND))
|
{
|
ClearDischargePowerState(WIND);
|
SendDataToHC595(GetDischargePowerState());
|
BuzzerBeep(100);
|
fenon_Count=0;
|
fenon_Count2 = 0;
|
}*///20160715 ÐÞ¸Ä È¥µôϵͳֹͣ¹Ø±Õ·çÉȵŦÄܸù¾Ý¶¨ÖƱí2016071101 ˵Ã÷
|
}
|
//
|
|
int main(void)
|
{
|
//------- µ÷ÊÔʱʹÓõÄһЩ±äÁ¿ -------------
|
unsigned int Ncount = 5000;
|
//wdt_reset(); //ι¹·
|
_delay_ms(1);
|
|
InitSystem();
|
|
//-------- ÑÓʱ1000msʹϵͳ³ä·ÖÎȶ¨ ---------
|
BuzzerBeep(500);
|
|
DSPLogoPage();//ÏÔʾlogo
|
|
while(Ncount--)
|
{
|
_delay_ms(1);
|
if(NO_AD7843_PENIRQ)
|
{
|
wdt_reset(); //ι¹·
|
continue;
|
}
|
else
|
{
|
BuzzerBeep(100);
|
break;
|
}
|
}
|
|
//------------ LCDÇåÆÁºóÏÔʾÖ÷²Ëµ¥ ---------
|
GB_SYS_State.CurrentPage = DSPMainMenu;
|
BackColorCH();
|
GB_SYS_State.CurrentPage();
|
|
do
|
{
|
RunMainTask();
|
}
|
while(1);
|
|
return 0;
|
}
|
//
|
|
/************************* END OF FILE (main.c)****************************/
|