亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? liion.c

?? ATMEL AVR 單片機 ni-mh 電池充電控制原代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
    
    Device      : AT90S2333

    File name   : LiIon.c
    
    Ver nr.     : 1.0

    Description : Source file for LiIon charging algorithme
                    - FAST_charge
                    - TRICKLE_charge
                  
    Compiler    : IAR icca90
   
    Author      : Asmund Saetre / Terje Frostad / Dietmar Koenig
 
    Change log  : 02.02.2000 Changed to fit Battery Charger refrence    
                  design board   AS  
                  17.04.2000 Debugged by AS 
                  16.05.2000 Final test and review AS
 
*************************************************************************************/
#include "LiIon.h"                      //Battery specific definitions

// Extern struct prototypes
extern time_struct time;

#ifdef DEBUG 
extern int term_value1;
extern int term_value2;
extern int charge_current_min;
extern int charge_current_max;
#endif

// Fast	Charge Algorithme
//***************************************************************************
void FAST_charge(void)
{
    unsigned int temp = 0;
    unsigned char fast_finish_hour = 0;
    unsigned char fast_finish_min = 0;
    unsigned char delay_hour = 0;  
    unsigned char delay_min = 0;
    unsigned char last_min = 0;

    #ifdef DEBUG 
	term_value1=0;
	#endif
	
	time.sec = 0x00;
  	time.min = 0x00;
  	time.hour = 0x00;
  	time.t_count = 0x3878;


    SETBIT(CHARGE_STATUS,CONST_C);
    CLRBIT(CHARGE_STATUS,DELAY); 
    
    // if TEMPERATURE within absolute limits
    temp = Battery(TEMPERATURE); 
    if ((temp < MIN_TEMP_ABS) && (temp > MAX_TEMP_ABS))
    {
        // if VOLTAGE lower than absolute VOLTAGE
        temp = Battery(VOLTAGE);    
        if (temp <= (MAX_VOLT_ABS + VOLT_TOLERANCE))
        {
            // if FAST charge TEMPERATURE high enough
            temp = Battery(TEMPERATURE); 
            if (temp < MIN_TEMP_FAST)
            {
                OCR1 = 0x0; 
                TCCR1B = 0x01;              //counter1 clock prescale = 1

                // calculate FAST charge finish time
                fast_finish_min = (time.min + MAX_TIME_FAST);
                fast_finish_hour = time.hour;
                while (fast_finish_min > 60)
                {
                    fast_finish_min = fast_finish_min - 60;
                    fast_finish_hour++;
                }
                while ((CHKBIT(CHARGE_STATUS,FAST)) && (!(CHKBIT(CHARGE_STATUS,ERROR))))
                {
                    // Charge with constant current algorithme
                    if (CHKBIT(CHARGE_STATUS,CONST_C))
                    {
                        // set I_FAST (with "soft start")
                        do
                        {
                            temp = Battery(CURRENT);
                            if ((temp < I_FAST)&&(OCR1 < 0xFF))
                                OCR1++;
                            if ((temp > I_FAST)&&(OCR1 > 0x00))
                                OCR1--;
                        }while (temp != I_FAST);        // I_FAST is set now

                        #ifdef DEBUG
                        /*Save the min and max charge current for debug 
                        information*/					
			    		if (temp <= charge_current_min)
				    		charge_current_min = temp;
					    if (temp > charge_current_max)
        	   				charge_current_max = temp;           
        	   			#endif	
                 
                        /*if VOLTAGE within range change from constant 
                        CURRENT charge mode to constant VOLTAGE charge mode*/
                        temp = Battery(VOLTAGE_WITH_PWM_TURNOFF);            
                        if ((temp >= (VOLT_TRICKLE - VOLT_TOLERANCE)) && (temp <= (VOLT_TRICKLE + VOLT_TOLERANCE)))
                        {
                            CLRBIT(CHARGE_STATUS,CONST_C);
                            SETBIT(CHARGE_STATUS,CONST_V);
                        }            
                    }    

                    // Charge with constant voltage algorithme
                    else if (CHKBIT(CHARGE_STATUS,CONST_V))
                    {       
                        // set VOLT_FAST (with "soft start")
                        do                                              
                        {
                            temp = Battery(VOLTAGE);
                            if ((temp < VOLT_FAST)&&(OCR1 < 0xFF))
                                OCR1++;
                            else if ((temp > VOLT_FAST)&&(OCR1 > 0x00))
                                OCR1--;
                        }while ((temp <= (VOLT_FAST -(VOLT_TOLERANCE/4)))||(temp >= (VOLT_FAST+(VOLT_TOLERANCE/4))));                       
                        // VOLT_TRICKLE is set now
                    }

                    // Check for error and charge termination conditions
                    
                    //If above max charge time, flag error    
                    if ((time.hour == fast_finish_hour) && (time.min == fast_finish_min))                               
                    {
                    	/*Stop the PWM, flag max time charge termination and
                    	ERROR. Save the termination value and the max limit
                    	value for debug information*/
						Stop_PWM();
                        SETBIT(TERMINATION,TIME_MAX);
                        SETBIT(CHARGE_STATUS,ERROR);
                        #ifdef DEBUG 
 						term_value1 = time.min;
						term_value2 = fast_finish_min;
						#endif
                    }

                    //If above max charge temperature, flag error    
                    temp = Battery(TEMPERATURE);
					if ( temp	<	MAX_TEMP_ABS)
					{
						/*Stop the PWM, flag max temperature charge 
						termination and ERROR. Save the termination value and
						the max limit value for debug information*/
						Stop_PWM();
						SETBIT(TERMINATION,TEMP_MAX);
						SETBIT(CHARGE_STATUS,ERROR);
						#ifdef DEBUG 
						term_value1 = temp;
						term_value2 =	MAX_TEMP_ABS;
						#endif
					}
                    //If beyond min charge temperature, flag error    					
                    if (temp > MIN_TEMP_FAST)
					{
						/*Stop the PWM, flag min temperature charge 
						termination and ERROR. Save the termination value and
						the max limit value for debug information*/
						Stop_PWM();
						SETBIT(TERMINATION,TEMP_MIN);
						SETBIT(CHARGE_STATUS,ERROR);
						#ifdef DEBUG 
						term_value1 = temp;
						term_value2 =	MIN_TEMP_ABS;
						#endif
					}
                    /*Every min check if MIN_I_FAST is reached, if so 
                    calculate the delay time. 
                    Check every 60 seconds if delay time after reached 
                    MIN_I_FAST is over, if so change to trickle charge*/
                    if (time.min != last_min)   
                    {
                        last_min = time.min;
                        if (((CHKBIT(CHARGE_STATUS,CONST_V)) && (!(CHKBIT(CHARGE_STATUS,DELAY))) && (Battery(CURRENT) <= MIN_I_FAST)))
                        {
                            // calculate DELAY finish time
                            delay_min = (time.min + FAST_TIME_DELAY);
                            delay_hour = time.hour;
                            while (delay_min > 60)
                            {
                                delay_min = delay_min - 60;
                                delay_hour++;
                            }            
                            SETBIT(CHARGE_STATUS,DELAY);  
                        }

                        // Check if delay time after min_I_FAST is done, if so change to trickle charge
                        if ((time.hour == delay_hour)&&(time.min == delay_min)&&(CHKBIT(CHARGE_STATUS,DELAY)))
                        {
                            /*Stop PWM and change from constant VOLTAGE charge 
                            mode back to constant CURRENT charge mode. Change 
                            charge mode from "FAST" to "TRICKLE" Save the 
                            termination value and the max limit value for debug
                            information*/
						    Stop_PWM();
                            SETBIT(TERMINATION,DELAY);
                            CLRBIT(CHARGE_STATUS,CONST_V);
                            SETBIT(CHARGE_STATUS,CONST_C);
                            CLRBIT(CHARGE_STATUS,FAST);               
                            SETBIT(CHARGE_STATUS,TRICKLE);            
                            #ifdef DEBUG 
  						    term_value1 = time.min;
						    term_value2 = delay_min;
						    #endif
                        }                         
                    }                        
                }
            }
            else if(!(CHKBIT(CHARGE_STATUS,ERROR)))
	   		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国欧美一区二区| 不卡一区中文字幕| 懂色一区二区三区免费观看| 91成人免费在线| 国产亚洲精品免费| 日韩在线播放一区二区| 91在线精品一区二区| 精品剧情在线观看| 三级久久三级久久| 91麻豆swag| 国产婷婷一区二区| 免费的国产精品| 欧美三级电影在线看| 亚洲欧洲制服丝袜| 国产suv精品一区二区三区 | 日本伊人色综合网| 99精品一区二区三区| 国产欧美日韩另类一区| 精品一区二区三区免费播放| 91精品国产美女浴室洗澡无遮挡| 亚洲欧美二区三区| 91视频xxxx| 亚洲老妇xxxxxx| av电影在线不卡| 18欧美亚洲精品| 成人国产精品免费观看动漫| 久久久午夜精品理论片中文字幕| 久久99精品国产麻豆婷婷| 91精品国产91久久综合桃花| 丝瓜av网站精品一区二区 | 国产成人在线色| 久久只精品国产| 国产成人8x视频一区二区| 久久久久国产精品免费免费搜索| 黑人巨大精品欧美黑白配亚洲| 欧美成人三级在线| 国产九色精品成人porny| 久久综合九色综合97婷婷| 国产另类ts人妖一区二区| 国产欧美日韩综合精品一区二区| 大陆成人av片| 亚洲欧美乱综合| 欧美天堂一区二区三区| 日本aⅴ免费视频一区二区三区| 欧美一区二区三区性视频| 久久99国产精品尤物| 久久精品男人天堂av| av成人免费在线观看| 一区二区三区视频在线看| 欧美精品一卡二卡| 精品一区二区影视| 欧美国产禁国产网站cc| 91丨九色丨国产丨porny| 亚洲一区二区三区在线| 日韩三级在线免费观看| 国产精品综合视频| 亚洲黄色性网站| 日韩精品一区二区三区四区视频| 国产麻豆精品theporn| 中文字幕在线不卡一区| 91麻豆精品国产91久久久久| 国产美女久久久久| 亚洲午夜精品网| 久久久久青草大香线综合精品| av在线这里只有精品| 三级成人在线视频| 国产精品国产三级国产专播品爱网| 欧美中文字幕亚洲一区二区va在线| 免费观看在线综合色| 中文字幕制服丝袜一区二区三区| 欧美日韩午夜影院| 国产精品99久久久久久有的能看 | 9191精品国产综合久久久久久| 久久99热狠狠色一区二区| 成人欧美一区二区三区视频网页 | 北条麻妃国产九九精品视频| 亚洲va欧美va天堂v国产综合| 久久久综合视频| 欧美日本在线观看| 成人一区二区视频| 免费亚洲电影在线| 一区二区理论电影在线观看| 国产亚洲制服色| 5月丁香婷婷综合| 91网站最新网址| 国精产品一区一区三区mba视频| 亚洲免费高清视频在线| 久久久久久久久99精品| 91精品国产综合久久福利软件| 99在线精品免费| 韩国精品久久久| 奇米888四色在线精品| 玉米视频成人免费看| 欧美激情在线观看视频免费| 日韩精品资源二区在线| 欧美美女一区二区三区| 一本久道久久综合中文字幕| 国产精品羞羞答答xxdd| 黄网站免费久久| 蜜桃久久精品一区二区| 亚洲一二三四久久| 亚洲免费看黄网站| 国产精品天干天干在观线| 久久精品免视看| 亚洲国产成人在线| 国产精品欧美一级免费| 国产欧美综合在线| 久久久精品国产99久久精品芒果| 日韩欧美黄色影院| 精品久久久久久久久久久院品网 | 亚洲私人黄色宅男| 日韩一级在线观看| 日韩午夜精品电影| 日韩一区二区三区电影在线观看| 欧美疯狂性受xxxxx喷水图片| 欧洲在线/亚洲| 欧美中文字幕一区| 欧美精品久久天天躁| 91精品蜜臀在线一区尤物| 制服.丝袜.亚洲.中文.综合| 91精品国产一区二区三区| 欧美日本一区二区三区四区| 欧美一区三区二区| 欧美va在线播放| 久久久久久日产精品| 久久久精品免费网站| 欧美激情一区二区在线| 最新不卡av在线| 亚洲高清免费观看高清完整版在线观看| 一区二区三区影院| 首页国产欧美日韩丝袜| 久久狠狠亚洲综合| 国产成人免费视频网站| fc2成人免费人成在线观看播放| 色综合婷婷久久| 9191成人精品久久| 国产欧美日韩精品a在线观看| 国产精品国产a级| 亚洲国产成人av| 国产在线麻豆精品观看| 99久久综合精品| 欧美午夜不卡视频| 精品欧美乱码久久久久久| 国产精品婷婷午夜在线观看| 亚洲午夜免费福利视频| 韩国v欧美v亚洲v日本v| 一本色道久久综合亚洲精品按摩| 欧美精品亚洲一区二区在线播放| 久久奇米777| 亚洲一区在线视频| 黄色成人免费在线| 欧美专区亚洲专区| 久久久久综合网| 亚洲国产精品一区二区www | 午夜精品福利久久久| 精品一二三四在线| 一本到一区二区三区| 欧美va亚洲va| 亚洲一区二区三区四区五区中文| 久色婷婷小香蕉久久| 99re66热这里只有精品3直播| 欧美美女一区二区三区| 最新成人av在线| 国内精品伊人久久久久av影院| 91极品视觉盛宴| 久久久久久久国产精品影院| 午夜精品久久久久久久99水蜜桃 | 久久综合综合久久综合| 91免费精品国自产拍在线不卡| 日韩精品最新网址| 亚洲国产欧美在线| 99久久精品国产精品久久| 精品国产麻豆免费人成网站| 亚洲一卡二卡三卡四卡五卡| 国产69精品久久久久毛片 | 另类人妖一区二区av| 欧美影片第一页| 国产精品毛片久久久久久| 久久国产夜色精品鲁鲁99| 欧美伊人久久久久久午夜久久久久| 国产无一区二区| 久久99热狠狠色一区二区| 在线播放日韩导航| 亚洲自拍另类综合| 91美女片黄在线| 国产精品免费aⅴ片在线观看| 久久丁香综合五月国产三级网站| 欧美日韩极品在线观看一区| 亚洲另类在线一区| 92国产精品观看| 综合久久综合久久| 99精品视频在线播放观看| 国产亚洲一区二区三区在线观看| 久久国产综合精品| 精品日韩99亚洲| 国产在线视频一区二区三区| 精品国产免费视频| 丰满白嫩尤物一区二区| 中文字幕av一区 二区| av电影在线观看不卡|