D/A螟画鋤繝懊�シ繝峨�ョ菴ソ縺�譁ケ
FRONT PAGE

繧ウ繝ャ縺ッ菴包シ�
縲�RTAI縺ァD/A螟画鋤繝懊�シ繝峨r菴ソ縺�縺溘a縺ョ隗」隱ャ縺ァ縺吶�� RTAI縺ァ繝「繝シ繧ソ�シ後Ο繝懊ャ繝医r蛻カ蠕。縺吶k縺溘a縺ォDAC繝懊�シ繝峨�ッ蠢�鬆医〒縺吶�� 縺薙%縺ァ縺ッ�シ栗nterface遉セ陬ス縺ョ PCI-3340 (8ch 16bit) 繧坦TAI荳翫〒蜍穂ス懊&縺帙k縺薙→繧定��縺医∪縺吶�� 譛ャ遽�縺ァ縺ッ PCI-3340 縺ォ縺、縺�縺ヲ霑ー縺ケ縺セ縺吶′�シ御サ悶�ョ蝙狗分縺ォ縺、縺�縺ヲ繧ょー代@縺�縺倥l縺ー蠢懃畑蜿ッ閭ス縺ィ諤昴o繧後∪縺吶��



D/A螟画鋤繝懊�シ繝峨�ョ螟冶ヲウ


繝上�シ繝峨え繧ァ繧「/繧ス繝輔ヨ繧ヲ繧ァ繧「讒区�蝉セ�
縲�菴ソ逕ィ縺励◆繝代た繧ウ繝ウ縺ョ繝上�シ繝峨え繧ァ繧「縺翫h縺ウ繧ス繝輔ヨ繧ヲ繧ァ繧「讒区�舌�ッ莉・荳九�ョ騾壹j縺ァ縺吶��
繝上�シ繝峨え繧ァ繧「讒区�撰シ啀entium4 �シ� 845G �シ� Intel EtherExpressPro �シ� PCI-3340
繧ス繝輔ヨ繧ヲ繧ァ繧「讒区�撰シ嗅ernel-2.6.23 �シ� Slackware-12.2 �シ� rtai-3.7
荳願ィ倥〒蜍穂ス懊r遒コ隱阪@縺ヲ縺�縺セ縺吶��


PCI-3340
縲�PCI-3340縺ッ繧、繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ遉セ縺悟�コ闕キ縺励※縺�繧汽/A繧ウ繝ウ繝舌�シ繧ソ繝懊�シ繝峨〒縺ゅj�シ� 荳�闊ャ逧�縺ェPC縺ョPCI縺ォ蛻コ縺吶%縺ィ縺ァ�シ瑚�ェ菴懊�励Ο繧ー繝ゥ繝�縺九i螂ス縺阪↑髮サ蝨ァ繧定�ェ逕ア縺ォ蜃コ蜉帙〒縺阪k繧医≧縺ォ縺ェ繧翫∪縺吶�� 縺薙�ョDAC縺ォ繧医▲縺ヲ繝「繝シ繧ソ縺ョ髮サ豬∵欠莉、蛟、繧ゅ@縺上�ッ繝医Ν繧ッ謖�莉、蛟、繧剃ク弱∴縺ヲ繝「繝シ繧ソ縺ョ蛻カ蠕。縺瑚。後∴縺セ縺吶�� 螳滄圀縺ョ蛻カ蠕。縺ォ縺ッ菴咲スョ繧サ繝ウ繧オ繧�騾溷コヲ繧サ繝ウ繧オ�シ悟刈騾溷コヲ繧サ繝ウ繧オ遲峨��繧ょソ�隕√〒縺吶�ョ縺ァ�シ� A/D繧ウ繝ウ繝舌�シ繧ソ繝懊�シ繝峨d繧ィ繝ウ繧ウ繝シ繝�繧ォ繧ヲ繝ウ繧ソ繝懊�シ繝峨b荳�邱偵↓菴ソ縺�縺薙→縺ォ縺ェ繧翫∪縺吶′�シ後%繧後i縺ォ縺、縺�縺ヲ縺ッ蛻・縺ョ鬆�逶ョ縺ァ霑ー縺ケ縺セ縺吶��


繧「繝峨Ξ繧ケ繧定ェソ縺ケ繧�
縲�縺セ縺啀CI繝舌せ縺ォ蛻コ縺励◆PCI-3340縺後←縺ョ逡ェ蝨ー縺ォ螻�繧九�ョ縺具シ後�茎canpci縲崎凶縺励¥縺ッ縲畦spci縲阪r菴ソ縺」縺ヲ隱ソ縺ケ縺セ縺吶��
scanpci -v
荳翫�ョ繧呈遠縺。霎シ繧�縺ィ莉・荳九�ョ繧医≧縺ェ逕サ髱「縺悟�コ縺ヲ縺阪∪縺吶��(scanpci縺後↑縺代l縺ーlspci)



scanpci -v 縺ョ螳溯。檎オ先棡

蛻コ縺輔▲縺ヲ繧九ョ繝舌う繧ケ縺斐→縺ォ縺壹i縺壹i荳願ィ倥�ョ邨先棡縺悟�コ縺ヲ縺上k縺ッ縺壹〒縺吶�� 縺昴�ョ荳ュ縺ァ�シ碁サ�濶イ縺�邱壹′蠑輔>縺ヲ縺ゅk驛ィ蛻�縺ォ豕ィ逶ョ縺励※�シ� Interface Corp�シ計endor ID 0x1147�シ� device ID 0x0d0c 縺ョ繧ゅ�ョ繧呈爾縺励∪縺吶�� 0x1147縺ッ繧、繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ遉セ繧呈э蜻ウ縺暦シ�0x0d0c縺ッPCI-3340繧呈э蜻ウ縺励※縺�縺セ縺吶��(0x0d0c繧�10騾イ謨ー縺ォ縺吶k縺ィ縺ェ繧薙→3340�シ�)
縲�縺薙%縺ァ�シ沓ASE0縺ョ谺�縺ョaddr縺ョ蠕後�ョ謨ー蟄�(邱代〒蝗イ縺」縺滄Κ蛻�)縺後�吶�シ繧ケ繧「繝峨Ξ繧ケ縺ェ縺ョ縺ァ�シ後%繧後r縺ゥ縺薙°縺ォ繝。繝「縺励∪縺吶�� 縺薙�ョ繧「繝峨Ξ繧ケ繧貞渕縺ォ縺励※in/out髢「謨ー縺ァ蜿ゥ縺�縺ヲ縺�縺阪∪縺吶��


DACsettings髢「謨ー (D/A螟画鋤繝懊�シ繝芽ィュ螳夂畑)
縲�D/A螟画鋤繝懊�シ繝峨�ョ蛻晄悄險ュ螳夂畑髢「謨ー繧剃サ・荳九↓鄂ョ縺�縺ヲ縺翫″縺セ縺吶�� 縺薙�ョ髢「謨ー縺ッ PCI-3340逕ィ縺ァ縺吶�� 縺昴�ョ縺セ縺セ菴ソ縺医k縺ッ縺壹〒縺吶�� 莉悶�ョ蝙狗分縺ョD/A螟画鋤繝懊�シ繝峨〒繧ゅ■繧�縺」縺ィ縺励◆謾ケ騾�縺ァ菴ソ縺医k縺ィ諤昴o繧後∪縺吶′�シ栗F遉セ縺ョI/O蜈ャ髢玖ウ�譁吶r蜿ら�ァ縺励※縺上□縺輔>縲� 縺薙l繧貞盾閠�縺ォ縺励※螂ス縺阪↑繧医≧縺ォ謾ケ濶ッ�シ梧眠騾�縺励※縺上□縺輔>縲�

void DACsettings(unsigned int BASE0){
	// DAC縺ョ險ュ螳壹r陦後≧髢「謨ー
	
	iopl(3);		// I/O蜈ィ繧「繝峨Ξ繧ケ遨コ髢薙↓繧「繧ッ繧サ繧ケ險ア蜿ッ
	//------- DAC 險ュ螳�
	// DAC 繝√Ε繝阪Ν 1
	outb(0x00,BASE0+0x07);	// CH1 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 2
	outb(0x01,BASE0+0x07);	// CH2 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 3
	outb(0x02,BASE0+0x07);	// CH3 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 4
	outb(0x03,BASE0+0x07);	// CH4 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 5
	outb(0x04,BASE0+0x07);	// CH5 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 6
	outb(0x05,BASE0+0x07);	// CH6 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 7
	outb(0x06,BASE0+0x07);	// CH7 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	// DAC 繝√Ε繝阪Ν 8
	outb(0x07,BASE0+0x07);	// CH8 險ュ螳�
	outb(0x03,BASE0+0x06);	// 蜃コ蜉幃崕蝨ァ遽�蝗イ繧陳ア10V縺ォ險ュ螳�
	usleep(100);		// 險ュ螳壼セ後↓蠢�隕√↑100ホシs縺ョ蠕�讖�
	
	outb(0x03,BASE0+0x05);	// 蜈ィ繝√Ε繝阪Ν蜷梧凾蜃コ蜉幄ィュ螳�
	
	return;
}
			
險ュ螳壼セ後↓100ホシs縺ョ蠕�讖溘′縺ゅj縺セ縺吶′�シ後%繧後�ッIO蜈ャ髢玖ウ�譁吶↓縲悟�コ蜉帙Ξ繝ウ繧ク繧定ィュ螳壹@縺溷セ後↓縲∵怙菴�100ホシs縺ョ繧ヲ繧ァ繧、繝医′蠢�隕√〒縺吶�ゅ�� 縺ィ譖ク縺�縺ヲ縺ゅk縺ョ縺ァusleep縺梧諺蜈・縺励※縺ゅj縺セ縺吶�� (縺ィ縺ッ縺�縺�繧ゅ�ョ縺ョ�シ悟推縲�縺ョ繝√Ε繝阪Ν縺ョ繝ャ繝ウ繧ク縺ョ險ュ螳壼セ後↓蠕�讖溘☆繧九�ョ縺具シ溷�ィ繝√Ε繝阪Ν縺ョ繝ャ繝ウ繧ク縺ョ險ュ螳壼セ後↓蠕�讖溘☆繧九�ョ縺具シ溘h縺丞�縺九j縺セ縺帙s窶ヲ)


DACout髢「謨ー (髮サ蝨ァ蜃コ蜉帷畑)
縲�D/A螟画鋤繝懊�シ繝峨°繧画欠螳壹@縺滄崕蝨ァ繧貞�コ蜉帙☆繧矩未謨ー繧剃ク九↓鄂ョ縺�縺ヲ縺翫″縺セ縺吶��

void DACout(unsigned int BASE0, unsigned short DACdata[8]){
	// DAC縺九i謖�螳壹@縺滄崕蝨ァ繧貞�コ蜉帙☆繧矩未謨ー
	
	//------- DAC 蜃コ蜉�
	// DAC 繝√Ε繝阪Ν 1
	outb(0x00,BASE0+0x02);			// CH1 險ュ螳�
	outb(IIbyteLo(DACdata[0]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[0]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 2
	outb(0x01,BASE0+0x02);			// CH2 險ュ螳�
	outb(IIbyteLo(DACdata[1]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[1]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 3
	outb(0x02,BASE0+0x02);			// CH3 險ュ螳�
	outb(IIbyteLo(DACdata[2]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[2]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 4
	outb(0x03,BASE0+0x02);			// CH4 險ュ螳�
	outb(IIbyteLo(DACdata[3]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[3]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 5
	outb(0x04,BASE0+0x02);			// CH5 險ュ螳�
	outb(IIbyteLo(DACdata[4]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[4]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 6
	outb(0x05,BASE0+0x02);			// CH6 險ュ螳�
	outb(IIbyteLo(DACdata[5]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[5]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 7
	outb(0x06,BASE0+0x02);			// CH7 險ュ螳�
	outb(IIbyteLo(DACdata[6]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[6]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	// DAC 繝√Ε繝阪Ν 8
	outb(0x07,BASE0+0x02);			// CH8 險ュ螳�
	outb(IIbyteLo(DACdata[7]),BASE0+0x00);	// DAC蜃コ蜉� 荳倶ス�
	outb(IIbyteHi(DACdata[7]),BASE0+0x01);	// DAC蜃コ蜉� 荳贋ス�
	
	outb(0x01,BASE0+0x05);			// 蜈ィ繝√Ε繝阪Ν蜷梧凾蜃コ蜉帛ョ溯。�
	
	return;
}
			
縺薙%縺ァ縲栗IbyteHi縲阪→縲栗IbyteLo縲阪�ョ莠後▽縺ョ髢「謨ー縺後≠繧翫∪縺吶′�シ後%繧後�ッ�シ偵ヰ繧、繝医ョ繝シ繧ソ縺ョ荳贋ス阪♀繧医�ウ荳倶ス搾シ代ヰ繧、繝亥�繧呈歓蜃コ縺励※蜃コ蜉帙☆繧矩未謨ー縺ァ縺吶�� 縺薙�ョ髢「謨ー縺ッ莉・荳九�ョ繧医≧縺ォ螳溯」�縺励∪縺吶��
			
unsigned short IIbyteLo(unsigned short in){
	// 2byte繝�繝シ繧ソ縺ョ荳倶ス�1byte繧呈歓蜃コ縺励※蜃コ蜉�
	return 0x00FF & in;
}

unsigned short IIbyteHi(unsigned short in){
	// 2byte繝�繝シ繧ソ縺ョ荳贋ス�1byte繧呈歓蜃コ縺励※蜃コ蜉�
	return 0x00FF & (in >> 8);
}
			
縺薙�ョ髢「謨ー縺ァ荳贋ス阪→荳倶ス阪↓蛻�縺代※縺九iDAC縺ォ謾セ繧願セシ繧薙〒縺�縺セ縺吶��


菴ソ縺�譁ケ
縲�荳願ィ倥�ョ髢「謨ー縺ョ螳滄圀縺ョ菴ソ縺�譁ケ縺ォ縺、縺�縺ヲ隱ャ譏弱@縺セ縺吶�� 縺セ縺嘖canpci縺ァ隱ソ縺ケ縺檻ASE0縺ョ蛟、繧偵←縺薙°縺ォ螳夂セゥ縺励※縺翫″縺セ縺吶�� 谺。縺ォRTAI縺ョ蛻カ蠕。繝ォ繝シ繝励↓蜈・繧句燕縺ョ驛ィ蛻�縺ァ�シ轡ACsettings髢「謨ー繧貞ョ溯。後@縺セ縺吶�� 縺昴�ョ谺。縺ォ�シ悟宛蠕。繝ォ繝シ繝励�ョ荳ュ縺ァDACout髢「謨ー縺ァ謇�譛帙�ョ髮サ蝨ァ繧貞�コ蜉帙@縺セ縺吶�� 縺ィ縺�縺�縺薙→縺ァ莉・荳九�ョ繧医≧縺ェ諢溘§縺ォ縺ェ繧翫∪縺吶��

#define BASE0 縺薙%縺ォscanpci縺ョ蛟、

RTAI螳滓凾髢薙せ繝ャ繝�繝閲
	unsigned short data[8]={0};
	
	DACsettings(BASE0);		// DAC縺ョ險ュ螳�
	
	while(1){
		縺ェ縺ォ縺九�ョ蛻カ蠕。繝励Ο繧ー繝ゥ繝�
		
		data[0]=CH1縺ョ謇�譛帙�ョ髮サ蝨ァ
		data[1]=CH2縺ョ謇�譛帙�ョ髮サ蝨ァ
		data[2]=CH3縺ョ謇�譛帙�ョ髮サ蝨ァ
			繝サ
			繝サ
			繝サ
		DACout(BASE0, data);	// 髮サ蝨ァ蜃コ蜉帛ョ溯。�

	}
}
			
髮サ蝨ァ縺ッ 0x0000縺ァ�シ�10V�シ�0xFFFF縺ァ�シ�10V縺ォ縺ェ繧翫∪縺吶�� 縺ェ縺ョ縺ァ螳滄圀縺ォ菴ソ縺�縺ィ縺阪�ッ謠帷ョ励ご繧、繝ウ繧呈寺縺代∪縺励g縺�縲� 縺セ縺滂シ御ク倶ス阪�ョ蛻カ蠕。邉サ(萓九∴縺ー縺ゥ縺薙°縺ョ繝。繝シ繧ォ陬ス縺ョ繧オ繝シ繝懊い繝ウ繝�/繝峨Λ繧、繝�)縺ァ髮サ豬∝宛蠕。繧�繝医Ν繧ッ蛻カ蠕。繧定。後▲縺ヲ縺�繧句�エ蜷医�ッ�シ� 髮サ豬∵欠莉、蛟、繧�繝医Ν繧ッ謖�莉、蛟、縺九i蜃コ蜉幃崕蝨ァ蛟、縺ォ螟画鋤縺吶k蠢�隕√b縺ゅj縺セ縺吶�� 縺薙�ョ謠帷ョ励ご繧、繝ウ縺ォ縺、縺�縺ヲ縺ッ莉悶〒隱ャ譏弱@縺溘>縺ィ諤昴>縺セ縺吶�� 縺昴l縺九iiopl縺ィin/out髢「謨ー繧剃スソ縺�縺ォ縺ッroot讓ゥ髯舌′蠢�隕√↑縺ョ縺ァ豕ィ諢上@縺ヲ荳九&縺�縲�
縲�縺ィ縺�縺�縺薙→縺ァ�シ御ク願ィ倥�ョ謇区ウ輔↓繧医jRTAI荳翫〒繧る撼蟶ク縺ォ邁。蜊倥↓DAC縺御スソ縺医k繧医≧縺ォ縺ェ繧翫∪縺吶��

繧ウ繝シ繝�繧」繝ウ繧ー萓�
縲�蜈キ菴鍋噪縺ェ繧ウ繝シ繝�繧」繝ウ繧ー萓九�ッ�シ�ARCS 縺ョ繧ス繝シ繧ケ繧ウ繝シ繝峨r蜿ら�ァ縺励※荳九&縺�縲� C++縺ョ繧ッ繝ゥ繧ケ縺ォ縺吶k蝣エ蜷医�ッ�シ�縺薙s縺ェ諢溘§縺ォ縺励※縺翫¥縺ィ萓ソ蛻ゥ縺ァ縺吶�� (2012/01/25霑ス險�)





- -

遐皮ゥカ螳、縺ョ讓ェ縺ョ蛟牙コォ - Side Warehouse of Laboratory
Copyright(C), Side Warehouse, All rights reserved.