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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? analog.c

?? 一個非常好的電源設(shè)計程序
?? C
字號:
/* vim: set sw=8 ts=8 si : *//********************************************** Author: Guido Socher, Copyright: GPL ** Digital analog conversion of channel ADC0 and ADC1 in* free running mode. **********************************************/#include <inttypes.h> #include <avr/signal.h>#include <avr/interrupt.h>#include <avr/io.h>#include "avr_compat.h"#include "dac.h"#include "hardware_settings.h"volatile static unsigned char channel=0; volatile static unsigned char voltagecontrol=0; // 0=current limit, 1=voltage controlvolatile static uint16_t conversioncount=0; // changed at every conversionvolatile static unsigned char prev_voltagecontrol=0; // adc measurement results:volatile static int analog_result[2];  // datatype int is 16 bit// the value that is requested (control loop calibrates to this).volatile static unsigned int target_val[2];  // datatype int is 16 bitstatic unsigned char adlow,adhigh;static int dac_val=0;/* You must enable interrupt with sei() in the main program  * before you call init_analog  */void init_analog(void) {	// initialize the adc result to very high values	// to keep the control-loop down until proper measurements	// are done:	analog_result[0]=0; 	analog_result[1]=1025; 	target_val[0]=0; // initialize to zero	target_val[1]=0; // initialize to zero        /* enable analog to digital conversion in free run mode        *  without noise canceler function. See datasheet of atmega8 page 195        * We set ADPS2=1,ADPS1=0,ADPS0=1 to have a clock division factor of 32.        * This is needed to stay in the recommended range of 50-200kHz         * ADEN: Analog Digital Converter Enable        * ADIE: ADC Interrupt Enable        * ADIF: ADC Interrupt Flag        * ADFR: ADC Free Running Mode        * ADCSR: ADC Control and Status Register        * ADPS2..ADPS0: ADC Prescaler Select Bits	* REFS: Reference Selection Bits (page 203)        */	// int-ref with external capacitor at AREF pin: 	// 2.56V int ref=REFS1=1,REFS0=1	// write only the lower 3 bit for channel selection		// 2.56V ref, start with channel 0	ADMUX=(1<<REFS1)|(1<<REFS0)|(channel & 0x07);        ADCSR=(1<<ADEN)|(1<<ADIE)|(1<<ADFR)|(1<<ADIF)|(1<<ADPS2)|(1<<ADPS0);	/*  start conversion */	sbi(ADCSR,ADSC);	//wait until both channels are measured twice	while(conversioncount < 4);}int is_dacval(void) {	return(dac_val);}signed char is_current_limit(void) {	// return 1 if current control loop active	if (voltagecontrol==0){		return(1);	}	return(0);}/* set the target adc value for the control loop * values for item: 0 = u, 1 = i, units must be of the same as the values  * from the dac. */void set_target_adc_val(unsigned char item,unsigned int val) {	// here we can directly write to target_val 	target_val[item]=val;}/* get the result of an analog conversion. * The problem here is that we need to read more than 8 bit. Therefore * it will always result in two assembler instruction. In other words * it is not an atomic operation. To get it atomic we use the  * conversion count variable. If it was unchanged then the reading was * like an atomic read. */int getanalogresult(unsigned char channel) {	int rval;	uint16_t conv_cnt_before;	while(1){		conv_cnt_before=conversioncount;		rval=analog_result[channel];		// make sure there was no AD conversion		// while we were reading the result. If so then		// read again. conversioncount is volatile.		if (conversioncount == conv_cnt_before){			break;		}	}	return(rval);}// the control loop changes the dac:static void control_loop(unsigned char channel){	int tmp;	tmp=target_val[0] - analog_result[0];	if (tmp < 1){		voltagecontrol=0; // I control	}else{		voltagecontrol=1; // U control		tmp=target_val[1] - analog_result[1];	}	if (conversioncount>2){ 		// go only once in a while close		// to prevent permanent lsb toggle		if (tmp > -2 && tmp < 2){			tmp=0;		}	}	// slowly up:	if (tmp >2){		tmp=1;	}	if (tmp <-2){		tmp=-1;	}	dac_val=dac_val + tmp;	if (dac_val<0){		dac_val=0;	}	dac(dac_val);}/* the following function will be called when analog conversion is done. * It will be called every 13th cycle of the converson clock. At 4Mhz * and a ADPS factor of 32 this is: ((4000 kHz/ 32) / 13)= 9.6KHz intervalls */SIGNAL(SIG_ADC) {	adlow=inp(ADCL); /* read low first !! */	adhigh=inp(ADCH); /* read low first !! */	// toggel the channel between 0 an 1. This will however	// not effect the next conversion as that one is already	// ongoing.	channel++;	if (channel>1){		channel=0;	}	// 2.56V ref	ADMUX=(1<<REFS1)|(1<<REFS0)|(channel & 0x07);	// channel=1 = U, channel=0 = I	analog_result[channel]=((adhigh<<8)|(adlow & 0xFF));	// short circuit protection at about 4.5A (with 0.5 Ohm shunt):	if (analog_result[0] > 900){		dac(30);		dac_val=30;		goto ENDSIG;	}	if (channel == 1){		// only when we have new current measurements		goto ENDSIG;	}	control_loop(voltagecontrol);	// end of interrupt handlerENDSIG:	conversioncount++; }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色在线视频| 三级不卡在线观看| 成人免费毛片片v| 欧美激情在线一区二区三区| 国产一区不卡在线| 国产亚洲综合色| 风间由美一区二区三区在线观看| 久久久国产精品午夜一区ai换脸| 欧美一区二区性放荡片| 无码av免费一区二区三区试看| 欧美三区在线视频| 日韩电影在线免费观看| 日韩免费观看2025年上映的电影 | 色综合天天综合狠狠| 国产精品国模大尺度视频| 91麻豆精品在线观看| 亚洲国产三级在线| 日韩欧美综合在线| 国产成人精品网址| 亚洲精选视频在线| 51久久夜色精品国产麻豆| 激情五月播播久久久精品| 欧美国产成人在线| 在线欧美一区二区| 蜜桃av一区二区在线观看| 国产女人aaa级久久久级| 日本电影欧美片| 美女网站色91| 亚洲图片激情小说| 日韩天堂在线观看| 国产日本一区二区| 欧美日韩在线观看一区二区| 极品少妇一区二区| 亚洲另类一区二区| 精品av综合导航| 色拍拍在线精品视频8848| 久久成人av少妇免费| 亚洲人成网站在线| 精品福利视频一区二区三区| 日本久久精品电影| 国产在线不卡视频| 亚洲成人自拍网| 中文在线资源观看网站视频免费不卡 | 日韩欧美在线不卡| 91片黄在线观看| 韩国欧美国产1区| 亚洲成人自拍网| 亚洲视频狠狠干| 久久精品一区八戒影视| 欧美猛男gaygay网站| 成人妖精视频yjsp地址| 日本色综合中文字幕| 日韩理论电影院| 久久色视频免费观看| 欧美夫妻性生活| 日本道色综合久久| 99久久99精品久久久久久 | 日韩欧美成人激情| 在线精品视频一区二区三四| 成人在线视频首页| 国产一区二区在线视频| 日韩中文字幕一区二区三区| 亚洲另类中文字| 成人欧美一区二区三区小说| 久久久91精品国产一区二区精品 | 国产91丝袜在线18| 精品亚洲aⅴ乱码一区二区三区| 一区二区三区在线免费播放| 国产日产亚洲精品系列| 久久婷婷国产综合精品青草| 日韩欧美一二区| 337p亚洲精品色噜噜噜| 欧美日韩视频在线观看一区二区三区| 91女厕偷拍女厕偷拍高清| 成人亚洲一区二区一| 国产乱子伦一区二区三区国色天香| 热久久一区二区| 日韩在线一区二区| 日韩av中文字幕一区二区| 亚洲成人在线观看视频| 亚洲综合色丁香婷婷六月图片| 亚洲欧洲综合另类| 日韩伦理电影网| 综合激情成人伊人| 亚洲视频图片小说| 一区二区三区在线影院| 亚洲精品一二三区| 亚洲国产精品久久不卡毛片| 亚洲国产精品久久不卡毛片| 亚洲不卡一区二区三区| 日韩在线一区二区三区| 蜜臀91精品一区二区三区 | 老色鬼精品视频在线观看播放| 偷拍一区二区三区| 日韩av午夜在线观看| 久久精品99国产国产精| 国产精品影视在线| www.视频一区| 色94色欧美sute亚洲线路二| 欧美日韩亚洲综合在线| 日韩一区二区三区视频在线| 亚洲精品一区二区三区精华液| 国产亚洲一本大道中文在线| 国产精品的网站| 亚洲成人免费看| 精油按摩中文字幕久久| 成人永久aaa| 欧美曰成人黄网| 日韩一区二区三免费高清| 久久一区二区三区国产精品| 欧美国产日韩a欧美在线观看| 亚洲人123区| 免费欧美日韩国产三级电影| 国产成人高清在线| 欧美在线不卡视频| 欧美xfplay| 亚洲素人一区二区| 日本成人超碰在线观看| 国产精品一区久久久久| 色综合久久精品| 精品国产凹凸成av人导航| 自拍偷拍亚洲综合| 免费成人在线网站| 91在线视频官网| 欧美不卡在线视频| 亚洲男人的天堂在线观看| 日本不卡123| 99国产欧美久久久精品| 日韩欧美一级二级三级| 1024精品合集| 国模无码大尺度一区二区三区| 色丁香久综合在线久综合在线观看| 日韩一区二区精品葵司在线 | 99久久精品国产毛片| 日韩一区二区电影网| 中文字幕制服丝袜一区二区三区| 日本大胆欧美人术艺术动态 | 蜜桃视频在线观看一区| 91蜜桃网址入口| www国产成人| 日韩精品高清不卡| 色噜噜久久综合| 日本一区免费视频| 另类综合日韩欧美亚洲| 91成人看片片| 国产精品国产三级国产a | 亚洲视频免费在线| 国产精品一品二品| 日韩欧美在线综合网| 无码av中文一区二区三区桃花岛| 91在线播放网址| 国产精品久久久久aaaa| 国产一区999| 精品国产伦一区二区三区观看体验| 亚洲国产日韩综合久久精品| 不卡欧美aaaaa| 欧美国产日韩在线观看| 精品一区二区免费视频| 欧美一区二区在线看| 亚洲成人一区二区在线观看| 色综合咪咪久久| 最新热久久免费视频| 不卡av免费在线观看| 欧美韩国日本一区| 成人综合婷婷国产精品久久免费| 精品区一区二区| 极品少妇一区二区| xfplay精品久久| 国产美女精品一区二区三区| 欧美变态tickling挠脚心| 六月丁香婷婷久久| 精品国产欧美一区二区| 国产在线观看一区二区| 久久精品一二三| 国产成人免费av在线| 中文字幕巨乱亚洲| 波多野结衣中文字幕一区| 中文字幕一区二区不卡| 色婷婷av一区二区三区大白胸| 亚洲伦理在线免费看| 91成人免费在线视频| 天堂午夜影视日韩欧美一区二区| 在线成人小视频| 久久 天天综合| 欧美极品少妇xxxxⅹ高跟鞋| 成人v精品蜜桃久久一区| 中文字幕制服丝袜成人av| 色噜噜狠狠一区二区三区果冻| 亚洲国产成人精品视频| 日韩一区国产二区欧美三区| 久久精品av麻豆的观看方式| 久久―日本道色综合久久| 丁香六月久久综合狠狠色| 日韩美女视频一区二区| 欧美体内she精高潮| 另类专区欧美蜜桃臀第一页| 亚洲国产精华液网站w| 在线这里只有精品| 免费在线观看成人| 国产欧美日韩一区二区三区在线观看|