<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Thai Embedded</title>
	<atom:link href="http://www.thaiembedded.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.thaiembedded.com/blog</link>
	<description>Embedded Electronics, Microcontroller</description>
	<pubDate>Fri, 03 Sep 2010 07:55:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>ออกแบบ Power save mode dsPIC</title>
		<link>http://www.thaiembedded.com/blog/?p=697</link>
		<comments>http://www.thaiembedded.com/blog/?p=697#comments</comments>
		<pubDate>Fri, 03 Sep 2010 07:54:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PIC]]></category>

		<category><![CDATA[dsPIC]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=697</guid>
		<description><![CDATA[ลองออกแบบลดพลังงาน MCU dsPIC30F4011 ให้ใช้กับ Battery 9V โดยออกแบบทั้ง Software และ Hardware ให้ประหยัดพลังงานแบบสุดๆ
ตั้งค่า TRIS register กำหนดให้เป็น Output จะกินไฟน้อยกว่า Config เป็น Input
TRISB = 0;
TRISC = 0;
TRISD = 0;
TRISE = 0;
TRISF = 0;
ลองวัดกระแสดูแล้วกินไฟสถานะ Idle เฉพาะ dsPIC เพียง 19 uA ก็กินไฟน้อย แต่คงไม่เท่ากับ TI
]]></description>
			<content:encoded><![CDATA[<p>ลองออกแบบลดพลังงาน MCU dsPIC30F4011 ให้ใช้กับ Battery 9V โดยออกแบบทั้ง Software และ Hardware ให้ประหยัดพลังงานแบบสุดๆ</p>
<p><strong><span style="color: #008000;">ตั้งค่า TRIS register</span> </strong>กำหนดให้เป็น Output จะกินไฟน้อยกว่า Config เป็น Input</p>
<p>TRISB = 0;<br />
TRISC = 0;<br />
TRISD = 0;<br />
TRISE = 0;<br />
TRISF = 0;</p>
<p>ลองวัดกระแสดูแล้วกินไฟสถานะ Idle เฉพาะ <a href="http://www.thaiembedded.com/blog/?tag=dspic" class="st_tag internal_tag"  title="Posts tagged with dsPIC">dsPIC</a> เพียง 19 uA ก็กินไฟน้อย แต่คงไม่เท่ากับ TI</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=697</wfw:commentRss>
		</item>
		<item>
		<title>สอนการใช้งาน Protel99SE ตอนที่ 3 สร้าง Net และเดินลาย PCB</title>
		<link>http://www.thaiembedded.com/blog/?p=665</link>
		<comments>http://www.thaiembedded.com/blog/?p=665#comments</comments>
		<pubDate>Sat, 27 Jun 2009 09:39:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PCB]]></category>

		<category><![CDATA[Protel 99SE]]></category>

		<category><![CDATA[สอนใช้งานProtel99SE]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=665</guid>
		<description><![CDATA[หลังจากที่ไม่ได้ update บทความซะนาน วันนี้พอมีเวลาเลยมา update บทความกันต่อ สำหรับบทความ Protel99SE ตอนนี้ก็เป็นตอนที่ 3 แล้ว ใครที่อ่านแล้วงงๆ สามารถย้อนกลับไปอ่านตอนที่1 และ 2 ได้ที่ Link ข้างล่างนี้ครับ

สอนการใช้งาน Protel99SE ตอนที่ 1 เริ่มใช้งาน ความรู้เบื้องต้นในการออกแบบ PCB
สอนการใช้งาน Protel99SE ตอนที่ 2 เริ่มออกแบบด้วย Schematic

ในตอนนี้ก็เข้มข้นขึ้นเรื่อยๆ เราจะมาเรียนรู้การสร้าง Net และเดินลาย PCB ผมมีคำถามมาถามท่านผู้อ่านครับ Net คืออะไร? ถ้าเปิด Dictionary แปลก็คงจะบอกว่าตาข่าย ก็ไม่ผิดครับ แต่ใน schematic เรานิยามว่ามันคือ ส่วนที่เชื่อมถึงกัน เพื่อให้ดูแล้วเข้าใจง่ายๆ ลองดูภาพด้านล่างประกอบครับ




บริเวณที่เน้นสีเขียวเป็นเส้นที่เชื่อมต่อขา K ของ LED1, ขา C ของ Q1 และ ขา+ [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากที่ไม่ได้ update บทความซะนาน วันนี้พอมีเวลาเลยมา update บทความกันต่อ สำหรับบทความ Protel99SE ตอนนี้ก็เป็นตอนที่ 3 แล้ว ใครที่อ่านแล้วงงๆ สามารถย้อนกลับไปอ่านตอนที่1 และ 2 ได้ที่ Link ข้างล่างนี้ครับ</p>
<ul>
<li><a title="สอนการใช้งาน Protel99SE ตอนที่ 1" href="http://www.thaiembedded.com/blog/?p=555" target="_self">สอนการใช้งาน Protel99SE ตอนที่ 1 เริ่มใช้งาน ความรู้เบื้องต้นในการออกแบบ PCB</a></li>
<li><a title="สอนการใช้งาน Protel99SE ตอนที่ 2" href="http://www.thaiembedded.com/blog/?p=568" target="_self">สอนการใช้งาน Protel99SE ตอนที่ 2 เริ่มออกแบบด้วย Schematic</a></li>
</ul>
<p>ในตอนนี้ก็เข้มข้นขึ้นเรื่อยๆ เราจะมาเรียนรู้การสร้าง Net และเดินลาย <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> <strong>ผมมีคำถามมาถามท่านผู้อ่านครับ Net คืออะไร? </strong>ถ้าเปิด Dictionary แปลก็คงจะบอกว่าตาข่าย ก็ไม่ผิดครับ แต่ใน <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">schematic</a> เรานิยามว่ามันคือ <span style="color: #008000;"><strong>ส่วนที่เชื่อมถึงกัน </strong><span style="color: #000000;">เพื่อให้ดูแล้วเข้าใจง่ายๆ ลองดูภาพด้านล่างประกอบครับ</span></span></p>
<table style="height: 419px;" border="0" cellpadding="5" width="520">
<tbody>
<tr>
<td><img class="alignnone size-medium wp-image-668" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_17.jpg" alt="" width="300" height="379" /></td>
<td>บริเวณที่เน้นสีเขียวเป็นเส้นที่เชื่อมต่อขา K ของ LED1, ขา C ของ Q1 และ ขา+ ของ C2 ส่วนที่เชื่อมถึงกันนี้เราเรียกว่า Net ครับ</td>
</tr>
</tbody>
</table>
<p>ในการออกแบบ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> โดย Protel99SE เราสามารถตั้งชื่อ Net ได้เองหรือให้โปรแกรมสร้าง Net ให้ก็ได้ ผมแนะนำว่าส่วนสำคัญของวงจรที่ใช้อ้างอิงเราควรจะสร้าง Net เองครับ ชื่อมันจะได้สื่อให้เข้าใจง่าย เช่น VCC, GND เป็นต้น</p>
<p><img class="alignnone size-medium wp-image-670" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_19.jpg" alt="" width="300" height="108" /></p>
<p>เพื่อให้เข้าใจง่ายขึ้นผมจะสร้าง Net มา 2 อัน โดยการกดปุ่ม Net จาก Wiring Tools แล้วไปวางตำแหน่งดังรูปข้างล่าง ตั้งชื่อ Net ว่า LED1 และ LED2</p>
<p><img class="alignnone size-medium wp-image-669" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_18.jpg" alt="" width="300" height="127" /></p>
<p>งานต่อไปของเราก็คือกำหนด Footprint ให้กับอุปกรณ์อย่างเช่น LED1 ใช้ Footprint แบบไหน Surface หรือแบบมีขา เราต้องไปกำหนดไว้ก่อนครับ <span style="color: #0000ff;">วิธีการใส่ Footprint ลงไปในแต่ละอุปกรณ์ก็ทำได้ง่ายๆ โดยการ double click เข้าไปที่อุปกรณ์</span> แล้วใส่ Footprint ที่ต้องการลงไป <span style="color: #ff0000;">Footprint ที่ใส่ลงไปต้องมีอยู่ในโปรแกรมแล้วนะครับถึงจะใช้ได้ ถ้าไม่มีก็ต้องสร้างขึ้นมาใหม่</span></p>
<p><img class="alignnone size-medium wp-image-671" title="ใส่ Footprint" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_20.jpg" alt="" width="300" height="211" /></p>
<p><strong>ใส่ค่า Footprint ลงไปจนครบ ตามนี้ครับ</strong></p>
<blockquote><p>C1 = RAD-0.1<br />
C2 = RAD-0.1</p>
<p>LED1 = RAD-0.1<br />
LED2 = RAD-0.1</p>
<p>R1 = AXIAL-0.4<br />
R2 = AXIAL-0.4<br />
R3 = AXIAL-0.4<br />
R4 = AXIAL-0.4<br />
R5 = VR-4</p>
<p>Q1 = TO92C<br />
Q2 = TO92C</p></blockquote>
<p>ต่อไปเป็นขั้นตอนสร้าง Net เนื่องจากเราไม่ได้สร้าง Net ครบทุก Net ดังนั้นเราต้องให้โปรแกรมสร้าง Net ที่เหลือให้ครบ ไปที่ <strong>Design &#8212;&gt; Create Netlist&#8230;</strong> แล้วกด OK</p>
<p><img class="alignnone size-medium wp-image-673" title="สร้าง Net" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_21.jpg" alt="" width="272" height="366" /></p>
<p>จากนั้นโปรแกรมก็จะสร้างไฟล์ .NET ขึ้นมา 1 ไฟล์ก็ยังไม่ต้องไปสนใจไฟล์นี้นะครับ มันเป็นรายละเอียดว่า Net นี้ต่อกับอุปกรณ์ไหนบ้าง จากนั้นออกไปที่หน้า Documents โดยการคลิก TAB ด้านบน</p>
<p><img class="alignnone size-medium wp-image-674" title="TAB Documents" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_22.jpg" alt="" width="389" height="115" /></p>
<p>เราจะสร้างไฟล์ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> กันต่อ คลิกขวา New&#8230;  เลือก <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> Document แล้ว OK  ตั้งชื่อง่ายๆว่า PCB1.<a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> ละกัน ถ้า double click PCB1.<a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> ก็จะเจอกับความว่างเปล่า กลับมาที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> กันต่อ เราจะเอา <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">schematic</a> ที่สร้างไว้ไปทำเป็น <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a></p>
<p>ไปที่ <strong>Design &#8212;&gt; Update <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a>&#8230;</strong> แล้วกดปุ่ม Execute</p>
<p><img class="alignnone size-medium wp-image-676" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_23.jpg" alt="" width="300" height="300" /></p>
<p>ถ้าไม่มีอะไรผิดพลาด อุปกรณ์จะไปโผลที่หน้า PCB1.<a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> แล้ว ถ้าไม่เจออุปกรณ์ให้กดปุ่ม Page Down(ย่อลง) เพื่อย่อขนาดจอ หาอุปกรณ์ ส่วนมากมันจะชอบวางให้ที่ตำแหน่ง ขวา-บน เมื่อหาเจอแล้ว ให้กดปุ่ม Page Up(ซูม) เพื่อขยาย</p>
<p><img class="alignnone size-medium wp-image-677" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_24.jpg" alt="" width="400" height="383" /></p>
<p>จะเห็นได้ว่าอุปกรณ์อยู่ใน Room หรือซี่สีเขียวๆ ให้กด E แล้วตามด้วย D แล้วไปจิ้มที่ Room ซะเพื่อลบมั้นทิ้งไป</p>
<p>ต่อไปเราก็จัดวางอุปกรณ์ใหม่เพื่อความสวยงามและง่ายต่อการเดินลายทองแดง<span style="color: #008000;"> <span style="color: #0000ff;">มี Tip นิดนึงว่า การหมุนอุปกรณ์ไปเป็นมุม 90 องศาทำได้ง่ายๆโดยการ เอาเมาส์คลิกค้างที่อุปกรณ์ตัวนั้นแล้วกด spacebar อุปกรณ์จะหมุนไปครั้งละ 90 องศา</span></span></p>
<p><img class="alignnone size-medium wp-image-679" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_25.jpg" alt="" width="400" height="438" /></p>
<p><span style="color: #ff6600;">ใครที่สังเกตุหน่อยอาจจะมาท้วงผมว่า BC547 ตำแหน่งขาไม่ได้เป็นแบบนี้ และ LED ก็ไม่ได้หน้าตาแบบนี้ ใช่แล้วครับที่มันไม่ match กันเป็นเพราะว่าเรายังไม่ได้สร้าง Library ของอุปกรณ์เหล่านั้นขึ้นมา ก็เลยใช้ Footprint ที่มีอยู่ในโปรแกรมไปก่อน แล้วในตอนต่อไปเราจะมาคุยกันถึงเรื่องการสร้าง Library</span></p>
<p>เมื่อจัดอุปกรณ์เข้าที่เข้าทางแล้ว เราจะสร้างกรอบของ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> ขึ้นมาเพื่อเป็นพื้นที่ของ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> ขอบของ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> เราจะใช้ Layer KeepOutLayer ครับ</p>
<p><img class="alignnone size-medium wp-image-680" title="KeepOutLayer" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_26.jpg" alt="" width="400" height="158" /></p>
<p>ให้คลิก KeepOutLayer และที่ PlacementTools เลือก Place lines&#8230;.. จากนั้นลากเส้นตีกรอบเลยครับ</p>
<p><img class="alignnone size-medium wp-image-681" title="KeepOutLayer" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_27.jpg" alt="" width="200" height="223" /></p>
<p>เริ่มเห็นเป็นรูปเป็นร่างขึ้นมาแล้ว ต่อไปเรามาลากเส้นทองแดงกัน ก่อนที่จะลากเส้นทองแดงเห็นข้อผิดพลาดอย่างหนึ่ง ที่ R5 ขา 2 ไม่มี Net ไปถึง จริงๆแล้วขา 1-2 ต้องเป็น Net เดียวกัน ไม่เป็นไรผิดได้ก็แก้ได้ครับ</p>
<p>ย้อนกลับไปที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">schematic</a> ใหม่ลากสายใหม่ให้เหมือนรูปด้านล่าง ตรงที่ผม hi light สีแดงไว้</p>
<p><img class="alignnone size-medium wp-image-683" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_28.jpg" alt="" width="353" height="185" /></p>
<p>จากนั้น <strong>Design &#8212;&gt; Create Netlist&#8230;</strong> และ <strong>Design &#8212;&gt; Update <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a>&#8230; </strong>เหมือนที่ทำก่อนหน้านี้แหล่ะครับ ในหน้า <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> ก็จะถูกแก้ไขตาม <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">schematic</a></p>
<p>ในการเดินลายทองแดงสำหรับ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> หน้าเดียวเรานิยมใช้ Bottom Layer แต่ถ้าเป็น <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> 2 หน้าเราจะใช้ Top Layer และ Bottom Layer เลือก BottomLayer ที่ TAB ด้านล่างแล้วตามด้วย Interactively route connections</p>
<p><img class="alignnone size-medium wp-image-684" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_29.jpg" alt="" width="400" height="132" /></p>
<p>การเดินลายทองแดงโดยใช้ Interactively route connections จะเดินตาม Net เดียวกัน ถ้ามีการลากลายทองแดงไปยังจุดที่ไม่ใช่ Net เดียวกันจะขึ้น Error สีเขียว</p>
<p><img class="alignnone size-medium wp-image-685" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/06/protel99se_30.jpg" alt="" width="400" height="442" /></p>
<p>2 นาทีผ่านไปผมก็ลากเส้นแบบคร่าวๆ ไม่เน้นสวยงามเสร็จแล้ว เขียนไปเขียนมาชักยาว ไว้ตอนหน้ามาเรียนรู้เรื่อง Rule กันหน่อย เป็นกฏต่างๆของการเดินลาย <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> เช่นจะให้ Track กว้างเท่าไหร่ ระยะห่างระหว่างอุปกรณ์เท่าไหร่ แล้วตอนสุดท้ายค่อยมาสร้าง Library กัน บทความตอนนี้จะไม่เน้นเรื่องความถูกต้องของรูปร่างอุปกรณ์เท่าไหร่นัก ต้องการให้เข้าใจถึงกระบวนการสร้าง <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a>, Net และ <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> หากใครทำตามแล้วมีข้อสงสัยก็ comment มาถามได้ครับ ถ้าตอบได้ก็จะตอบให้ ตอนหน้าเจอกันใหม่ครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=665</wfw:commentRss>
		</item>
		<item>
		<title>เขียนโปรแกรม MCS-51 ขยาย Port Input แบบไม่จำกัดด้วย CD4021</title>
		<link>http://www.thaiembedded.com/blog/?p=646</link>
		<comments>http://www.thaiembedded.com/blog/?p=646#comments</comments>
		<pubDate>Thu, 26 Mar 2009 15:54:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MCS-51]]></category>

		<category><![CDATA[MCU]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[89S52]]></category>

		<category><![CDATA[CD4021]]></category>

		<category><![CDATA[ขยายport input]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=646</guid>
		<description><![CDATA[ในการออกแบบให้ microcontroller รับอินพุตดิจิตอลวิธีที่ตรงไปตรงมาที่สุดคือการต่อกับ Port ของ microcontroller โดยตรง แต่ถ้าอินพุตมีจำนวนมากซัก 10-20 อินพุต เราจะทำยังไง หลายคนอาจจะใช้วิธี Scan Keyboard เอา วิธีนี้มีข้อจำกัดตรงที่แต่ละอินพุตไม่อิสระต่อกัน เพราะต่อแบบ matrix
แล้วมีวิธีที่ดีกว่านี้อีกไหม? คำตอบคือมีครับ คือใช้ Shift register รับข้อมูลแบบขนาน แล้วให้สัญญาณออกมาเป็นแบบอนุกรม (Parallet in/ Serial put) โดยใช้ IC CD4021 ภายใน IC จะประกอบไปด้วย flip-flop เมื่อเราส่ง clock ไป 1ลูก data ที่ flip-flop จะส่งไปยังตัวถัดไป ถ้าเราส่ง clock ไป 8 ลูก เราก็จะได้ data จาก 8 อินพุต
จากรูปจะเห็นว่าเอาต์พุตของ flip-flop ตัวซ้าย [...]]]></description>
			<content:encoded><![CDATA[<p>ในการออกแบบให้ <strong>microcontroller</strong> รับอินพุตดิจิตอลวิธีที่ตรงไปตรงมาที่สุดคือการต่อกับ Port ของ <strong>microcontroller</strong> โดยตรง แต่ถ้าอินพุตมีจำนวนมากซัก 10-20 อินพุต เราจะทำยังไง หลายคนอาจจะใช้วิธี Scan Keyboard เอา วิธีนี้มีข้อจำกัดตรงที่แต่ละอินพุตไม่อิสระต่อกัน เพราะต่อแบบ matrix</p>
<p>แล้วมีวิธีที่ดีกว่านี้อีกไหม? คำตอบคือมีครับ คือใช้ Shift register รับข้อมูลแบบขนาน แล้วให้สัญญาณออกมาเป็นแบบอนุกรม (<strong>Parallet in/ Serial put</strong>) โดยใช้ IC <strong><a href="http://www.thaiembedded.com/blog/?tag=cd4021" class="st_tag internal_tag"  title="Posts tagged with CD4021">CD4021</a></strong> ภายใน IC จะประกอบไปด้วย <strong>flip-flop</strong> เมื่อเราส่ง clock ไป 1ลูก data ที่ <strong>flip-flop</strong> จะส่งไปยังตัวถัดไป ถ้าเราส่ง clock ไป 8 ลูก เราก็จะได้ data จาก 8 อินพุต<a href="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-shift.jpg"><img class="alignnone size-medium wp-image-650" title="CD4021" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-shift-600x336.jpg" alt="" width="420" height="235" /></a></p>
<p>จากรูปจะเห็นว่าเอาต์พุตของ flip-flop ตัวซ้าย จะเป็นอิพุตของ flip-flop ตัวขวาไปเรื่อยๆ สำหรับ data จะอยู่ที่ขา Q6, Q7, Q8 เวลาใช้งานจริงเราต่อที่ Q8 ตัวเดียวก็พอครับ ส่วน Q6, Q7 ก็ปล่อยลอยไว้ IC <a href="http://www.thaiembedded.com/blog/?tag=cd4021" class="st_tag internal_tag"  title="Posts tagged with CD4021">CD4021</a> 1 ตัวจะต่ออินพุตได้ 8 อินพุต แต่เราสามารถต่อ IC <strong><a href="http://www.thaiembedded.com/blog/?tag=cd4021" class="st_tag internal_tag"  title="Posts tagged with CD4021">CD4021</a></strong>อนุกรมกันไปได้เรื่อยๆ โดยต่อ Q8 เข้ากับ Serial input ไปเรื่อยๆ</p>
<p><a href="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-serial.jpg"><img class="alignnone size-medium wp-image-651" title="CD4021-serial" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-serial.jpg" alt="" width="420" height="190" /></a></p>
<p>ทีนี้มาดูในส่วนของการเขียนโปรแกรมกัน โปรแกรมตัวอย่างจะใช้ <a href="http://www.thaiembedded.com/blog/?tag=89s52" class="st_tag internal_tag"  title="Posts tagged with 89S52">89S52</a> <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> เบอร์ยอดนิยมของผม</p>
<p>ด้านล่างจะเป็น function อ่านค่าจาก <a href="http://www.thaiembedded.com/blog/?tag=cd4021" class="st_tag internal_tag"  title="Posts tagged with CD4021">CD4021</a> ที่ที่อ่านได้จะ return กลับมา</p>
<blockquote><p>//===============================================//<br />
//                                   Read data from <a href="http://www.thaiembedded.com/blog/?tag=cd4021" class="st_tag internal_tag"  title="Posts tagged with CD4021">CD4021</a><br />
//===============================================//<br />
unsigned char read_cd4021()<br />
{<br />
unsigned char i,a,inport,dat;</p>
<p>STR = 1;<br />
STR = 0;<br />
a = 4;    while(a)    a&#8211;;<br />
dat = 0;<br />
for (i=0;i&lt;8;i++)<br />
{<br />
inport = DAT;<br />
dat &lt;&lt;= 1;<br />
dat |= inport;</p>
<p>CLK = 1;     a = 4;    while(a)    a&#8211;;<br />
CLK = 0;        a = 4;    while(a)    a&#8211;;</p>
<p>}<br />
STR = 1;</p>
<p>return(dat);<br />
}</p></blockquote>
<p>อันนี้ main()</p>
<blockquote><p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;//<br />
// Main<br />
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;//<br />
void main()<br />
{<br />
init();<br />
dmsec(200);            //at least 100 mS<br />
init_lcd();<br />
dmsec(200);            //at least 100 mS</p>
<p>show_portval_lcd();<br />
while(1)<br />
{<br />
port_present = read_cd4021();<br />
if(port_last!=port_present)<br />
{<br />
port_last = port_present;<br />
show_portval_lcd();<br />
dmsec(200);<br />
}<br />
}<br />
}</p></blockquote>
<p>ในการทดลองนี้ผมจะต่อ LCD 16&#215;2 แสดงผลค่าที่อ่านได้จาก port โดยใช้อินพุตเป็น DIP Switch ขนาด 8 สวิตช์ มาดูส่วนของวงจรกันต่อ</p>
<p><a href="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-schematic.jpg"><img class="alignnone size-medium wp-image-655" title="CD4021 schematic" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-schematic-600x405.jpg" alt="" width="420" height="284" /></a></p>
<p>การทดลองนี้ต่อ IC <a href="http://www.thaiembedded.com/blog/?tag=cd4021" class="st_tag internal_tag"  title="Posts tagged with CD4021">CD4021</a> ลง Proto board ครับ ทดลองเสร็จก็ไปใช้งานอื่นๆได้ต่อสะดวกดี ต่ออุปกรณ์เสร็จแล้ว ทดลองกันเลยดีกว่า</p>
<p>ในตอนสวิตช์ไม่สับลง GND ก็แสดงค่า 255 อันนี้ถูกต้องครับ ต่อมาสับสวิตช์ 1 และ 2 ไปที่ GND ถ้าเทียบเป็นเลขฐาน 2 จะได้ 11111100 = 252 สังเกตุว่าเท่ากับที่หน้าจอ LCD แสดงผล เป็นอันว่าอ่านค่าได้ถูกต้อง</p>
<p><img class="alignnone size-medium wp-image-657" title="ทดสอบ CD4021" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-lab1.jpg" alt="" width="400" height="326" /></p>
<p><img class="alignnone size-medium wp-image-658" title="ทดสอบ CD4021" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/cd4021-lab2.jpg" alt="" width="400" height="243" /></p>
<p><strong>Download</strong></p>
<p>datasheet <strong><a title="CD4021" href="http://www.thaiembedded.com/pdf/CD4014-21-TI.pdf" target="_self">CD4021</a></strong><img style="border: 0pt none;" src="http://www.thaiembedded.com/picture/pdf.gif" border="0" alt="" width="16" height="16" /></p>
<p>source code <a title="Code CD4021" href="http://www.thaiembedded.com/download/lab-cd4021.zip" target="_blank"><strong>CD4021</strong></a>(zip)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=646</wfw:commentRss>
		</item>
		<item>
		<title>สร้างวงจรไฟกระพริบอย่างง่าย (2 LED Blink)</title>
		<link>http://www.thaiembedded.com/blog/?p=639</link>
		<comments>http://www.thaiembedded.com/blog/?p=639#comments</comments>
		<pubDate>Wed, 25 Mar 2009 12:29:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Electronics]]></category>

		<category><![CDATA[LED Blink]]></category>

		<category><![CDATA[Multivibrator]]></category>

		<category><![CDATA[ไฟกระพริบ]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=639</guid>
		<description><![CDATA[วันนี้ว่างๆครับ ไม่รู้จะทำอะไรเลยหาอุปกรณ์อิเล็กทรอนิกส์มาต่ออะไรเล่น ในหัวก็นึกถึงวงจรไฟกระพริบที่เคยต่อเล่นตอนเด็กๆ เป็นวงจรพื้นฐาน ง่ายๆ ใครที่เล่นอิเล็กทรอนิกส์ตั้งแต่เด็กๆคงคุ้นเคยกับวงจรแบบนี้ดี

จากวงจรจะเห็นว่ามีเพียงอุปกรณ์ไม่กี่ตัวเท่านั้น มีทรานซิสเตอร์ (TR) 2 ตัว BC547 ตัวต้านทาน (R) อีก 5 ตัว ตัวเก็บประจุอิเล็กทรอไลต์ (C) 2 ตัว และสุดท้าย LED อีก 2 ตัว

ใครจะต่อลงแผ่นปริ๊นอเนกประสงค์หรือต่อลง Proto board ก็สะดวกทั้งสองอย่างครับ แต่ผมต่อลง Proto board เอา ง่ายดี
เมื่อต่อเสร็จแล้วลองจ่ายไฟ 12V เข้าที่ VPP ดูจะเห็น LED 2 ดวงกระพริบสลับกันไป เป็นวงจรกำเนิดความถี่ต่ำ วงจรมัลติไวเบรเตอร์(Multivibrator) ลองปรับ R5 ดูก็จะเห็นว่า LED กระพริบเร็วขึ้นหรือช้าลง
ว่างๆมาลองต่ออะไรเล่นๆแบบนี้ก็สนุกดีเหมือนกัน 
]]></description>
			<content:encoded><![CDATA[<p>วันนี้ว่างๆครับ ไม่รู้จะทำอะไรเลยหาอุปกรณ์อิเล็กทรอนิกส์มาต่ออะไรเล่น ในหัวก็นึกถึง<strong>วงจรไฟกระพริบ</strong>ที่เคยต่อเล่นตอนเด็กๆ เป็นวงจรพื้นฐาน ง่ายๆ ใครที่เล่นอิเล็กทรอนิกส์ตั้งแต่เด็กๆคงคุ้นเคยกับวงจรแบบนี้ดี</p>
<p><img class="alignnone" title="วงจรไฟกระพริบ" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/protel99se_16.jpg" alt="" width="300" height="379" /></p>
<p>จากวงจรจะเห็นว่ามีเพียงอุปกรณ์ไม่กี่ตัวเท่านั้น มีทรานซิสเตอร์ (TR) 2 ตัว BC547 ตัวต้านทาน (R) อีก 5 ตัว ตัวเก็บประจุอิเล็กทรอไลต์ (C) 2 ตัว และสุดท้าย LED อีก 2 ตัว</p>
<p><img class="alignnone size-medium wp-image-643" title="วงจรไฟกระพริบ" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/led_blink.jpg" alt="" width="300" height="287" /></p>
<p>ใครจะต่อลงแผ่นปริ๊นอเนกประสงค์หรือต่อลง Proto board ก็สะดวกทั้งสองอย่างครับ แต่ผมต่อลง Proto board เอา ง่ายดี</p>
<p>เมื่อต่อเสร็จแล้วลองจ่ายไฟ 12V เข้าที่ VPP ดูจะเห็น LED 2 ดวงกระพริบสลับกันไป เป็นวงจรกำเนิดความถี่ต่ำ วงจรมัลติไวเบรเตอร์(<a href="http://www.thaiembedded.com/blog/?tag=multivibrator" class="st_tag internal_tag"  title="Posts tagged with Multivibrator">Multivibrator</a>) ลองปรับ R5 ดูก็จะเห็นว่า LED กระพริบเร็วขึ้นหรือช้าลง</p>
<p>ว่างๆมาลองต่ออะไรเล่นๆแบบนี้ก็สนุกดีเหมือนกัน <img src='http://www.thaiembedded.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=639</wfw:commentRss>
		</item>
		<item>
		<title>รวมคำถาม-คำตอบ ไมโครคอนโทรลเลอร์ที่ถามกันบ่อย</title>
		<link>http://www.thaiembedded.com/blog/?p=632</link>
		<comments>http://www.thaiembedded.com/blog/?p=632#comments</comments>
		<pubDate>Mon, 23 Mar 2009 13:26:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MCU]]></category>

		<category><![CDATA[CISC]]></category>

		<category><![CDATA[Microcontroller FAQ]]></category>

		<category><![CDATA[RISC]]></category>

		<category><![CDATA[คำถามไมโครคอนโทรลเลอร์]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=632</guid>
		<description><![CDATA[
บทความนี้ผมจะรวบรวมคำถามที่เจอบ่อยๆในหมวด Microcontroller,  Electronics มาตอบให้ตามความรู้และประสบการณ์ของผม หากสงสัยอะไรก็ comment ด้านล่างมาถามได้ครับ หากตอบได้ก็จะตอบให้ หรือไม่รู้ก็จะพยายามหามาตอบให้ครับ
1. ทำไมต้องใช้คริสตอลความถี่ 11.0592 MHz ในวงจร Microcontroller MCS-51 ด้วย
- เพราะเป็นค่า XTAL ที่คำนวน Baud rate ในการรับ/ส่งข้อมูลแบบ Asynchronous (UART) ได้เลขที่ลงตัว เช่น Baud rate 19,200 9,600 4,800 2,400 bps
2. Microcontroller ตระกูลไหนดีที่สุด
- ในความเป็นจริง ไม่มีตัวไหนดีที่สุดในทุกๆด้าน แต่ละตระกูลก็มีจุดเด่นจุดด้วยต่างกันไป เช่น ตระกูล MCP ของ Texus Instrument (TI) มีจุดเด่นเรื่องกินไฟต่ำ แต่ develepe tool ไม่แพร่หลาย มีคนใช้น้อย, ตระกูล MCS-51 ใช้งานง่ายเป็นที่แพร่หลาย ราคาถูก [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-635" title="MCS-51" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/mcs51proto2.jpg" alt="" width="400" height="226" /></p>
<p>บทความนี้ผมจะรวบรวมคำถามที่เจอบ่อยๆในหมวด <strong>Microcontroller</strong>,  <strong>Electronics</strong> มาตอบให้ตามความรู้และประสบการณ์ของผม หากสงสัยอะไรก็ comment ด้านล่างมาถามได้ครับ หากตอบได้ก็จะตอบให้ หรือไม่รู้ก็จะพยายามหามาตอบให้ครับ</p>
<p><strong>1. ทำไมต้องใช้คริสตอลความถี่ 11.0592 MHz ในวงจร Microcontroller <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> ด้วย</strong></p>
<p>- เพราะเป็นค่า XTAL ที่คำนวน Baud rate ในการรับ/ส่งข้อมูลแบบ Asynchronous (UART) ได้เลขที่ลงตัว เช่น Baud rate 19,200 9,600 4,800 2,400 bps</p>
<p><strong>2. </strong><strong>Microcontroller </strong><strong>ตระกูลไหนดีที่สุด</strong></p>
<p>- ในความเป็นจริง ไม่มีตัวไหนดีที่สุดในทุกๆด้าน แต่ละตระกูลก็มีจุดเด่นจุดด้วยต่างกันไป เช่น ตระกูล MCP ของ Texus Instrument (TI) มีจุดเด่นเรื่องกินไฟต่ำ แต่ develepe tool ไม่แพร่หลาย มีคนใช้น้อย, ตระกูล <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> ใช้งานง่ายเป็นที่แพร่หลาย ราคาถูก แต่ไม่ทน noise ต้องต่ออุปกรณ์ interface มาก ฯลฯ</p>
<p><strong>3. จริงไหมที่ </strong><strong>Microcontroller </strong><strong> <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> ไม่ทน noise</strong></p>
<p>- จากประสบการณ์ การทำงานของผม ทำเครื่องมือวัดในโรงงานอุตสาหกรรมซึ่งมี noise รบกวนมาก ถ้าให้ออกแบบเครื่องมือวัดที่ทำงานเหมือนกัน ออกแบบดีที่สุดเหมือนกัน <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> จะไม่ค่อยผ่าน noise แต่ถ้าเป็นพวก PIC, AVR จะทำงานได้</p>
<p>เมื่อเจอ noise <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> จะแฮงค์ แต่ข้อดีของ <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> คือเวลาต่อไฟกลับขั้วหรือไฟเกินมานิดหน่อยจะไม่พัง ในขณะที่ PIC จะพังทันที</p>
<p><strong>4. สถาปัตยกรรมแบบ <a href="http://www.thaiembedded.com/blog/?tag=cisc" class="st_tag internal_tag"  title="Posts tagged with CISC">CISC</a> (Complex Instruction SetComputer) เป็นยังไง</strong></p>
<p>- เป็นสถาปัตยกรรมที่มีคำสั่งใช้งานมากเป็นร้อยคำสั่ง เป็นสถาปัตยกรรมในยุคแรกของคอมพิวเตอร์ ในแต่ละคำสั่งจะใช้ cycle ในการประมวลผลไม่เท่ากัน ตามความซับซ้อนของการประมวลผล ข้อดีคือมีคำสั่งให้เลือกใช้มาก การพัฒนาด้วยภา๋ษา Assemble จะทำได้ง่ายกว่าสถาปัตยกรรมแบบ <a href="http://www.thaiembedded.com/blog/?tag=risc" class="st_tag internal_tag"  title="Posts tagged with RISC">RISC</a></p>
<p><strong>5. สถาปัตยกรรมแบบ <a href="http://www.thaiembedded.com/blog/?tag=risc" class="st_tag internal_tag"  title="Posts tagged with RISC">RISC</a> (Reduced Instruction Set Computing) เป็นยังไง</strong></p>
<p>- เป็นสถาปัตยกรรมที่มีคำสั่งใช้งานน้อย ส่วนมากจะไม่กี่สิบคำสั่ง เช่นคำสั่งบวก, ลบ, (บางตระกูลก็ไม่มีคูณและหาร), กระโดด (jump), เปรียบเทียบ (compare) ด้วยเหตุที่ว่ามีชุดคำสั่งน้อยทำให้มีโครงสร้าง Microcontroller ไม่ซับซ้อน ผลที่ได้ตามมาคือกินไฟน้อย และทำงานได้เร็ว Microcontroller แบบ <a href="http://www.thaiembedded.com/blog/?tag=risc" class="st_tag internal_tag"  title="Posts tagged with RISC">RISC</a> จะมีเทคนิคที่เพิ่มความเร็วในการประมวลผลเรียกว่า <strong>Pipeline</strong> โดยจะทำการประมวลผลคำสั่งแบบขนานกันไป</p>
<p>สมมุติว่า 1 คำสั่งใช้เวลา 5 cycle ในการประมวลผล ในขณะที่กำลังจบ cycle 1 ของคำสั่ง 1 ใน cycle ต่อไปจะประมวลผล cycle 2 ของคำสั่ง 1 และ cycle 1 ของคำสั่ง 2 ขนานกันไป n ชั้น โดนที่ n คือจำนวนชั้นของ Pipeline ที่มี Microcontroller นั้น</p>
<p>ข้อเสียของ <a href="http://www.thaiembedded.com/blog/?tag=risc" class="st_tag internal_tag"  title="Posts tagged with RISC">RISC</a> คือทำให้ผู้ใช้งานเขียน code ยากขึ้น (ถ้าใช้ assembly) เนื่องจากต้องใช้หลายคำสั่ง เช่น PIC ตระกูล 16Fxxx ไม่มีคำสั่งคูณ ต้องใช้วิธี Shift bit เอาหรือไม่ก็บวกกันหลายๆที ทำให้เปลือง memory ด้วย</p>
<p>ในอนาคตมีแนวโน้มจะไปพัฒนาสถาปัตยกรรมทางด้าน <a href="http://www.thaiembedded.com/blog/?tag=risc" class="st_tag internal_tag"  title="Posts tagged with RISC">RISC</a> มากกว่า <a href="http://www.thaiembedded.com/blog/?tag=cisc" class="st_tag internal_tag"  title="Posts tagged with CISC">CISC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=632</wfw:commentRss>
		</item>
		<item>
		<title>สอนการใช้งาน Protel99SE ตอนที่ 2 เริ่มออกแบบด้วย Schematic</title>
		<link>http://www.thaiembedded.com/blog/?p=568</link>
		<comments>http://www.thaiembedded.com/blog/?p=568#comments</comments>
		<pubDate>Thu, 19 Mar 2009 14:13:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PCB]]></category>

		<category><![CDATA[Protel 99SE]]></category>

		<category><![CDATA[schematic]]></category>

		<category><![CDATA[สร้าง Schematic]]></category>

		<category><![CDATA[สอนใช้งานProtel99SE]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=568</guid>
		<description><![CDATA[หลังจากที่ตอนที่แล้ว สอนการใช้งาน Protel99SE ตอนที่ 1 เริ่มใช้งาน ความรู้เบื้องต้นในการออกแบบ PCB อย่างน้อยคงเปิดโปรแกรมโปรแกรมใช้งานเป็นกันแล้วใช่ไหมครับ วันนี้เราจะมาต่อด้วยการสร้าง Schematic
Schematic คืออะไร? Schematic คือวงจรที่เราออกแบบจะประกอบไปด้วยอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ผมอาจจะอธิบายได้ไม่ชัดเจนมาดูรูปตัวอย่าง Schematic กันดีกว่าครับ


ให้เปิดโปรแกรม Protel99SE ขึ้นมาแล้ว สร้าง sample.Ddb ขึ้นมา (ถ้าจำไม่ได้ให้เริ่มต้นจากตอนที่ 1) จากนั้นให้สร้าง Schematic Document ขึ้นมา

กด Add/Remove เพื่อเพิ่ม Library อุปกรณ์ (ทำครั้งแรกเพียงครั้งเดียว) โดยปกติแล้ว Library จะอยู่ที่ C:\Program Files\Design Explorer 99 SE\Library\Sch
ทำการ Add C:\Program Files\Design Explorer 99 SE\Library\Sch\International Rectifier.ddb และ
C:\Program Files\Design Explorer 99 SE\Library\Sch\Miscellaneous.ddb หรือใครจะ Add [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากที่ตอนที่แล้ว <a title="สอนการใช้งาน Protel99SE ตอนที่ 1 เริ่มใช้งาน ความรู้เบื้องต้นในการออกแบบ PCB" rel="bookmark" href="http://www.thaiembedded.com/blog/?p=555" target="_self">สอนการใช้งาน Protel99SE ตอนที่ 1 เริ่มใช้งาน ความรู้เบื้องต้นในการออกแบบ PCB</a> อย่างน้อยคงเปิดโปรแกรมโปรแกรมใช้งานเป็นกันแล้วใช่ไหมครับ วันนี้เราจะมาต่อด้วยการสร้าง <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p><strong><a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> คืออะไร?</strong> <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> คือวงจรที่เราออกแบบจะประกอบไปด้วยอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ผมอาจจะอธิบายได้ไม่ชัดเจนมาดูรูปตัวอย่าง <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> กันดีกว่าครับ</p>
<p><img class="alignnone size-medium wp-image-569" title="protel99se_5" src="http://www.thaiembedded.com/blog/wp-content/uploads/2008/12/protel99se_5.jpg" alt="" width="400" height="251" /></p>
<p><img class="alignnone" src="http://www.thaiembedded.com/blog/wp-content/uploads/2008/11/protel99se_4.jpg" alt="" width="350" height="214" /></p>
<p>ให้เปิดโปรแกรม Protel99SE ขึ้นมาแล้ว สร้าง sample.Ddb ขึ้นมา (ถ้าจำไม่ได้ให้เริ่มต้นจากตอนที่ 1) จากนั้นให้สร้าง <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> Document ขึ้นมา</p>
<p><img class="alignnone size-medium wp-image-570" title="protel99se_6" src="http://www.thaiembedded.com/blog/wp-content/uploads/2008/12/protel99se_6.jpg" alt="" width="350" height="251" /></p>
<p>กด Add/Remove เพื่อเพิ่ม Library อุปกรณ์ (ทำครั้งแรกเพียงครั้งเดียว) โดยปกติแล้ว Library จะอยู่ที่ C:\Program Files\Design Explorer 99 SE\Library\Sch</p>
<p>ทำการ Add C:\Program Files\Design Explorer 99 SE\Library\Sch\International Rectifier.ddb และ</p>
<p>C:\Program Files\Design Explorer 99 SE\Library\Sch\Miscellaneous.ddb หรือใครจะ Add มากกว่านี้ก็ได้ครับ เลือกตัวที่เกี่ยวข้องกับงานของเรา</p>
<p><img class="alignnone size-medium wp-image-572" title="protel99se_7" src="http://www.thaiembedded.com/blog/wp-content/uploads/2008/12/protel99se_7.jpg" alt="" width="350" height="383" /></p>
<p>เสร็จแล้วก็ OK จะกลับมาที่หน้าจอ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p>ในการใช้งานให้เราเลือกอุปกรณ์ทางด้านซ้ายมือ แล้วกด place เพื่อไปวางใน <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> ผมยกตัวอย่างเป็นวงจรไฟกระพริบ 2 สี</p>
<p>- ตัวต้านทานให้เลือก <strong>Miscellaneous Devices.lib</strong> คลิก <strong>RES1</strong> แล้วกดปุ่ม Place มาวางบนพื้นที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p><img class="alignnone size-medium wp-image-589" title="protel99se_8" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/protel99se_8.jpg" alt="" width="300" height="232" /></p>
<p>- <strong>Transistor NPN</strong> ให้เลือก <strong>Miscellaneous Devices.lib</strong> คลิก <strong>NPN</strong> แล้วกดปุ่ม Place มาวางบนพื้นที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p>- <strong>Capacitor</strong> แบบมีขั้ว ให้เลือก <strong>Miscellaneous Devices.lib</strong> คลิก <strong>CAPACITOR</strong> แล้วกดปุ่ม Place มาวางบนพื้นที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p>- <strong>LED</strong> ให้เลือก <strong>Miscellaneous Devices.lib</strong> คลิก <strong>LED</strong> แล้วกดปุ่ม Place มาวางบนพื้นที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p>- <strong>Trimpot</strong> ให้เลือก <strong>Miscellaneous Devices.lib</strong> คลิก <strong>POT1</strong> แล้วกดปุ่ม Place มาวางบนพื้นที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a></p>
<p><img class="alignnone size-medium wp-image-590" title="protel99se_9" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/protel99se_9.jpg" alt="" width="204" height="300" /></p>
<p>การกลับด้านของอุปกรณ์ให้ Double Click ที่อุปกรณ์เลือก Tab Graphical Attrs ติ๊กที่ Mirrored</p>
<p>หลังจากเลือกอุปกรณ์มาวางหมดแล้ว เราจะใช้ <strong>PlaceWire</strong> ใน <strong>WiringTools</strong> ในการลากเส้นเชื่อมระหว่างอุปกรณ์ ในการลากเส้นถ้าต้องการยกเลิกการลากเส้นให้คลิกขวา</p>
<p><img class="alignnone size-medium wp-image-591" title="protel99se_10" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/protel99se_10.jpg" alt="" width="350" height="373" /></p>
<p>เมื่อลากเส้นจนครบแล้ว บางคนอาจจะสงสัยว่า VCC, GND เลือกได้จากไหน</p>
<p><img class="alignnone size-medium wp-image-592" title="protel99se_11" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/protel99se_11.jpg" alt="" width="388" height="89" /></p>
<p>ให้เลือก <strong>PlacePowerPort </strong>แล้วมาวางที่ <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> จากนั้น double click แล้วตั้งชื่อ Net ใหม่เช่น GND แล้ว Style ให้เหมาะสม อย่าง GND จะเลือก Power Ground ส่วน VPP ก็อาจจะเลือก Bar หรือ Circle ก็ได้</p>
<p><img class="alignnone size-medium wp-image-593" title="protel99se_12" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/protel99se_12.jpg" alt="" width="263" height="346" /></p>
<p>หลังจากที่ลากสาย ใส่ GND, VPP กันแล้วก็มาใส่ค่าของอุปกรณ์กันต่อ อย่าง RES1 เราก็ใส่ 1K ใส่ไปจนครบ จะสังเกตุเห็นได้ว่า อุปกรณ์ทุกตัวจะมีเครื่องหมาย ? อยู่ เราจะใส่ลำดับอุปกรณ์ลงไปได้สองวิธี</p>
<p><img class="alignnone size-medium wp-image-622" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/protel99se_14.jpg" alt="" width="400" height="496" /></p>
<p>1. <strong>วิธี manual</strong> ใช้เม้าส์ double click แล้วใส่ตัวเลขเข้าไปเลยเช่น R? เราก็ double click แล้วเปลี่ยนเป็น R1 ได้เลย วิธีนี้จะต้องใส่ลำดับไปทุกตัวเลย ถ้ามีอุปกรณ์ซักสิบตัวคงไม่เท่าไหร่ แต่ถ้ามีเป็นร้อยเป็นพันตัวในวงจร คงไม่กันไม่ไหวแน่ มาดูวิธีที่ 2</p>
<p>2. ใส่แบบอัตโนมัติ protel99se มีตัวช่วยใส่ลำดับอุปกรณ์ได้โดยอัตโนมัติ ให้เข้าไปที่ <strong>Tools &#8211;&gt;Annotates&#8230; </strong>ในส่วนของ <strong>Annotate Options</strong> ให้เลือก <strong>? Parts</strong> หมายความว่าให้เรียงลำดับอุปกรณ์เฉพาะตัวที่มีเครื่องหมาย ?</p>
<p><img class="alignnone size-medium wp-image-623" title="protel99se annotate" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/protel99se_15.jpg" alt="" width="300" height="379" /></p>
<p>รูปแบบการเรียงลำดับอุปกรณ์ก็เลือกได้จาก Re-annotate Method จากรูปถ้าเลือก 4 Across then down จะเป็นการเรียงเลขในลักษณะ ซ้ายไปขวา บนลงล่าง เสร์จแล้วก็กด OK เลยครับ Protel จะสร้างไฟล์ลำดับอุปกรณ์ขึ้นมาอีกไฟล์เป็นนามสกุล .REP</p>
<p><img class="alignnone size-medium wp-image-629" title="protel99se" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/protel99se_16.jpg" alt="" width="300" height="379" /></p>
<p>กลับมาดูที่หน้า <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> ใหม่จะเห็นว่ามีตัวเลขใส่ไปในอุปกรณ์แล้ว เท่านี้ก็เสร็จสิ้นการสร้าง <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">Schematic</a> เห็นไหมครับว่าไม่ยากเลย ในตอนต่อไปเราก็จะมา<strong>สร้าง Net และเดินลาย <a href="http://www.thaiembedded.com/blog/?tag=pcb" class="st_tag internal_tag"  title="Posts tagged with PCB">PCB</a> กัน</strong> หากลองทำตามแล้วติดขัดตรงไหน comment มาถามได้ ถ้าอันไหนรู้ก็จะตอบให้ครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=568</wfw:commentRss>
		</item>
		<item>
		<title>วงจรแปลงสัญญาณ 0-5 V to 4-20 mA</title>
		<link>http://www.thaiembedded.com/blog/?p=615</link>
		<comments>http://www.thaiembedded.com/blog/?p=615#comments</comments>
		<pubDate>Mon, 16 Mar 2009 12:34:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Electronics]]></category>

		<category><![CDATA[0-5V to 4-20mA]]></category>

		<category><![CDATA[analog 4-20mA transfer]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=615</guid>
		<description><![CDATA[ในบางครั้งเราต้องการสัญญาณ Output แบบ analog ในช่วง 4-20 mA แต่จะทำไงในเมื่อสัญญาณจาก ADC เป็นแรงดันในช่วง 0-5 V วันนี้ผมมีวงจรแปลงสัญญาณ 0-5 V เป็น 4-20 mA มาฝากครับ เป็นวงจรง่ายๆ ที่ทดลองแล้วว่าได้ผล

วงจรแปลงสัญญาณ 0-5V to 4-20mA
จากวงจรจะเห็นว่าใช้แหล่งจ่ายไฟถึง 3 แหล่ง +5V,-5V, 12V ในส่วนของ I+ ถ้า Rload ดึงกระแสไม่เยอะจะตัด 12V ออกแล้วแทนด้วย +5V ก็ได้ครับ
ในวงจร R12-R13 จะช่วยป้องกันการจ่ายกระแสเกิน R8 จะปรับ Offset ที่ 4mA ส่วน R7 เป็นตัวปรับ Gain ของ OPAMP , D1 จะเป็นตัวบังคับทิศทางของกระแสให้ไหลลง TR1 ผ่าน [...]]]></description>
			<content:encoded><![CDATA[<p>ในบางครั้งเราต้องการสัญญาณ Output แบบ analog ในช่วง 4-20 mA แต่จะทำไงในเมื่อสัญญาณจาก ADC เป็นแรงดันในช่วง 0-5 V วันนี้ผมมีวงจรแปลงสัญญาณ 0-5 V เป็น 4-20 mA มาฝากครับ เป็นวงจรง่ายๆ ที่ทดลองแล้วว่าได้ผล</p>
<p><a href="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/5vto4-20ma.jpg"><img class="alignnone size-medium wp-image-617" title="0-5V to 4-20mA" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/5vto4-20ma-600x418.jpg" alt="" width="360" height="251" /></a></p>
<p><em>วงจรแปลงสัญญาณ <a href="http://www.thaiembedded.com/blog/?tag=0-5v-to-4-20ma" class="st_tag internal_tag"  title="Posts tagged with 0-5V to 4-20mA">0-5V to 4-20mA</a></em></p>
<p>จากวงจรจะเห็นว่าใช้แหล่งจ่ายไฟถึง 3 แหล่ง +5V,-5V, 12V ในส่วนของ I+ ถ้า Rload ดึงกระแสไม่เยอะจะตัด 12V ออกแล้วแทนด้วย +5V ก็ได้ครับ</p>
<p>ในวงจร R12-R13 จะช่วยป้องกันการจ่ายกระแสเกิน R8 จะปรับ Offset ที่ 4mA ส่วน R7 เป็นตัวปรับ Gain ของ OPAMP , D1 จะเป็นตัวบังคับทิศทางของกระแสให้ไหลลง TR1 ผ่าน R15-R16 ลง GND ไป</p>
<p><strong>การปรับแต่ง</strong></p>
<p>จ่ายสัญญาณ 0V จาก ADC หรือ Pot ก็ได้ที่ขั้ว DAC ใน <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">schematic</a>  ปรับ R8 จนกระทั่งได้ I+ ประมาณ 4mA จากนั้นจ่ายสัญญาณ 4-5V ที่ขั้ว DAC ใน <a href="http://www.thaiembedded.com/blog/?tag=schematic" class="st_tag internal_tag"  title="Posts tagged with schematic">schematic</a> ปรับ R7 (Gain) จนได้ I+ ประมาณ 4mA อาจจะต้องทำการปรับ R7-R8 หลายครั้งถึงจะได้สัญญาณ 4-20mA</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=615</wfw:commentRss>
		</item>
		<item>
		<title>ตั้งค่า Linux Ubuntu ให้เล่นเนตผ่าน GPRS Nokia 3110C</title>
		<link>http://www.thaiembedded.com/blog/?p=605</link>
		<comments>http://www.thaiembedded.com/blog/?p=605#comments</comments>
		<pubDate>Sun, 15 Mar 2009 11:28:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Communication]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[DTAC EDGE GPRS]]></category>

		<category><![CDATA[Nokia 3110C]]></category>

		<category><![CDATA[Ubuntu GPRS]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=605</guid>
		<description><![CDATA[
จากที่ผมเคยเขียนถึงการใช้งาน Nokia 3110C ในการต่ออินเตอร์เนต บน Windows XP ไปแล้ว ทีนี้ผมก็อยากจะเอามาใช้กับ Notebook ASUS ที่ติดตั้ง OS Ubuntu สำหรับการติดตั้งก็ไม่ยากอย่างที่คิด ไม่เกิน 10 นาที Step by Step ไปครับจะได้เข้าใจง่ายๆ ส่วนวิธิการติดตั้งผมเอามาจากหลายๆเวบครับ แก้จนใช้ได้เลยเอามาเขียนเป็นบทความ
ผมทดสอบกับ GPRS ของค่า DTAC เท่านั้นนะครับ ค่ายอื่นจะมีแตกต่างกันนิดหน่อย
1. เตรียมเครื่องคอมพิวเตอร์ที่จะใช้งาน ต่อสาย USB จากคอมพิวเตอร์ไปยัง Nokia 3110C
2. เลิอก โหมด Nokia USB ที่โทรศัพท์

3. เปิด Terminal แล้วพิมพ์คำสั่ง
sudo wvdialconf /etc/wvdial.conf
4. คอมพิวเตอร์จะทำการหา modem
5. เปิดไฟล์ /etc/wvdial.conf ขึ้นมา เราต้องตั้งค่า parameter ในไฟล์นี้ครับ ใช้คำสั่ง
sudo gedit [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-606" title="asus-nokia" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/asus-nokia.jpg" alt="" width="400" height="312" /></p>
<p>จากที่ผมเคยเขียนถึงการใช้งาน <strong><a href="http://www.thaiembedded.com/blog/?tag=nokia-3110c" class="st_tag internal_tag"  title="Posts tagged with Nokia 3110C">Nokia 3110C</a></strong> ในการต่ออินเตอร์เนต บน Windows XP ไปแล้ว ทีนี้ผมก็อยากจะเอามาใช้กับ Notebook ASUS ที่ติดตั้ง OS <strong>Ubuntu</strong> สำหรับการติดตั้งก็ไม่ยากอย่างที่คิด ไม่เกิน 10 นาที Step by Step ไปครับจะได้เข้าใจง่ายๆ ส่วนวิธิการติดตั้งผมเอามาจากหลายๆเวบครับ แก้จนใช้ได้เลยเอามาเขียนเป็นบทความ</p>
<p><span style="color: #ff0000;">ผมทดสอบกับ GPRS ของค่า DTAC เท่านั้นนะครับ ค่ายอื่นจะมีแตกต่างกันนิดหน่อย</span></p>
<p>1. เตรียมเครื่องคอมพิวเตอร์ที่จะใช้งาน ต่อสาย USB จากคอมพิวเตอร์ไปยัง <a href="http://www.thaiembedded.com/blog/?tag=nokia-3110c" class="st_tag internal_tag"  title="Posts tagged with Nokia 3110C">Nokia 3110C</a></p>
<p>2. เลิอก <strong>โหมด Nokia</strong> USB ที่โทรศัพท์</p>
<p><img class="alignnone size-medium wp-image-608" title="Nokia 3110C USB mode" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/03/nokia3110c-usbmode.jpg" alt="" width="400" height="295" /></p>
<p>3. เปิด Terminal แล้วพิมพ์คำสั่ง</p>
<blockquote><p><span style="color: #0000ff;">sudo wvdialconf /etc/wvdial.conf</span></p></blockquote>
<p>4. คอมพิวเตอร์จะทำการหา modem</p>
<p>5. เปิดไฟล์ /etc/wvdial.conf ขึ้นมา เราต้องตั้งค่า parameter ในไฟล์นี้ครับ ใช้คำสั่ง</p>
<blockquote><p><span style="color: #0000ff;">sudo gedit /etc/wvdial.conf</span></p></blockquote>
<p>ในที่นี้จะใช้ Gedit เป็น Editor เนื่องจากใช้งานง่ายสุดแล้ว ใครจะใช้ตัวอื่นก็ไม่ว่ากันครับ</p>
<p>6. ลบข้อมูลในไฟล์ทิ้งแล้วใส่ code ด้านล่างลงไป</p>
<blockquote><p><span style="color: #0000ff;">[Dialer Defaults]<br />
Modem = /dev/ttyACM0<br />
Init1 = ATZ<br />
Init2 = ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0<br />
Stupid Mode = 1<br />
Modem Type = USB Modem<br />
Phone = *99#<br />
New PPPD = yes<br />
ISDN = 0<br />
Username = &#8221;<br />
Password = &#8221;<br />
Baud = 460800</span></p></blockquote>
<p>7. การติดตั้งก็เป็นอันเสร็จสิ้น ง่ายไหมละครับ จากนั้นเรามาลองทดสอบดูว่าใช้ได้จริงไหม พิมพ์คำสั่ง</p>
<blockquote><p>sudo wvdial</p></blockquote>
<p>คอมพิวเตอร์ จะสั่งงานให้โทรศัพท์ต่อ GPRS ที่หน้าจอ Terminal จะส่ง Output ออกมา</p>
<blockquote><p>pratchaya@Ph-lab:~$ <span style="color: #0000ff;">wvdial</span><br />
WvDial&lt;*1&gt;: WvDial: Internet dialer version 1.56<br />
WvModem&lt;*1&gt;: Cannot get information for serial port.<br />
WvDial&lt;*1&gt;: Initializing modem.<br />
WvDial&lt;*1&gt;: Sending: ATZ<br />
WvDial Modem&lt;*1&gt;: ATZ<br />
WvDial Modem&lt;*1&gt;: OK<br />
WvDial&lt;*1&gt;: Sending: ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0<br />
WvDial Modem&lt;*1&gt;: ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0<br />
WvDial Modem&lt;*1&gt;: OK<br />
WvDial&lt;*1&gt;: Modem initialized.<br />
WvDial&lt;*1&gt;: Sending: ATDT*99#<br />
WvDial&lt;*1&gt;: Waiting for carrier.<br />
WvDial Modem&lt;*1&gt;: ATDT*99#<br />
WvDial Modem&lt;*1&gt;: CONNECT<br />
WvDial Modem&lt;*1&gt;: ~[7f]}#@!}!} } }2}#}$@#}!}$}%\}&#8221;}&amp;} }*} } g}%~<br />
WvDial&lt;*1&gt;: Carrier detected.  Starting PPP immediately.<br />
WvDial&lt;Notice&gt;: Starting pppd at Sun Mar 15 17:49:39 2009<br />
WvDial&lt;Err&gt;: Warning: Could not modify /etc/ppp/pap-secrets: Permission denied<br />
WvDial&lt;Err&gt;: &#8211;&gt; PAP (Password Authentication Protocol) may be flaky.<br />
WvDial&lt;Err&gt;: Warning: Could not modify /etc/ppp/chap-secrets: Permission denied<br />
WvDial&lt;Err&gt;: &#8211;&gt; CHAP (Challenge Handshake) may be flaky.<br />
WvDial&lt;Notice&gt;: Pid of pppd: 20613<br />
WvDial&lt;*1&gt;: Using interface ppp0<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: local  IP address 115.67.83.96<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: remote IP address 10.6.6.6<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: primary   DNS address 192.168.165.1<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]<br />
WvDial&lt;*1&gt;: secondary DNS address 203.155.33.2<br />
WvDial&lt;*1&gt;: pppd:  �[06][08]h�[06][08]</p></blockquote>
<p>หลังจาก command สิ้นสุดก็ใช้ Firefox เล่นเนตได้ทันที ถ้าต้องการออกให้กดปุ่ม Ctrl+C ที่หน้าต่าง Terminal</p>
<p>หากลองแล้วไม่ work ก็ Comment มาถามได้ครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=605</wfw:commentRss>
		</item>
		<item>
		<title>Review จอคอมพิวเตอร์ LG FLATRON W1942T</title>
		<link>http://www.thaiembedded.com/blog/?p=595</link>
		<comments>http://www.thaiembedded.com/blog/?p=595#comments</comments>
		<pubDate>Mon, 23 Feb 2009 14:44:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[LCD 19 นิ้ว]]></category>

		<category><![CDATA[LG W1942T]]></category>

		<category><![CDATA[จอ LCD]]></category>

		<category><![CDATA[จอคอมพิวเตอร์]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=595</guid>
		<description><![CDATA[เมื่อเร็วๆนี้ (ก.พ. 52) จอคอมพิวเตอร์ CRT SAMSUNG 793DF ขนาด 17 นิ้ว ตัวเก่าของผมที่ใช้มา 3 ปีได้ มีอาการจอสั่น ภาพแตก และชอบดับไป เป็นอย่างนี้ทุกครั้งที่ใช้งาน เริ่มเกิดอาการเซ็งเลยไปถอยจอตัวใหม่มาที่ฟอจูน รัชดา

Before : SAMSUNG 793DF

After : LG W1942T
เดินเลือกอยู่ 3-4 รอบ เพื่อเปรียบเทียบราคาและขนาด ผมใช้งานคอมพิวเตอร์ในการเขียนโปรแกรม และทำเวบไซต์ซะส่วนใหญ่ เลยไม่อยากได้จอที่ wide มาก ด้วยราคาและขนาดที่กำลังดี เลยมาลงตัวกับ LG FLATRON W1942T มาดูสเปคของ LG W1942T ก่อนดีกว่า
Size 19W
Resolution 1440 X 900
Brightness  300cd/㎡
Contrast Ratio 8000:1 DFC (Original 700:1)
Response Time 5ms [...]]]></description>
			<content:encoded><![CDATA[<p>เมื่อเร็วๆนี้ (ก.พ. 52) จอคอมพิวเตอร์ CRT <strong>SAMSUNG 793DF</strong> ขนาด 17 นิ้ว ตัวเก่าของผมที่ใช้มา 3 ปีได้ มีอาการจอสั่น ภาพแตก และชอบดับไป เป็นอย่างนี้ทุกครั้งที่ใช้งาน เริ่มเกิดอาการเซ็งเลยไปถอยจอตัวใหม่มาที่ฟอจูน รัชดา</p>
<p><img class="alignnone size-medium wp-image-600" title="SAMSUNG 793DF" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/dscf1170rs.jpg" alt="" width="300" height="225" /></p>
<p><strong>Before :</strong> SAMSUNG 793DF</p>
<p><img class="alignnone size-medium wp-image-601" title="LG W1942T" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/02/dscf1171rs.jpg" alt="" width="300" height="225" /></p>
<p><strong>After </strong>: <a href="http://www.thaiembedded.com/blog/?tag=lg-w1942t" class="st_tag internal_tag"  title="Posts tagged with LG W1942T">LG W1942T</a></p>
<p>เดินเลือกอยู่ 3-4 รอบ เพื่อเปรียบเทียบราคาและขนาด ผมใช้งานคอมพิวเตอร์ในการเขียนโปรแกรม และทำเวบไซต์ซะส่วนใหญ่ เลยไม่อยากได้จอที่ wide มาก ด้วยราคาและขนาดที่กำลังดี เลยมาลงตัวกับ <strong>LG FLATRON W1942T</strong> มาดูสเปคของ <strong><a href="http://www.thaiembedded.com/blog/?tag=lg-w1942t" class="st_tag internal_tag"  title="Posts tagged with LG W1942T">LG W1942T</a></strong> ก่อนดีกว่า</p>
<blockquote><p><strong>Size</strong> 19W<br />
<strong>Resolution</strong> 1440 X 900<br />
<strong>Brightness </strong> 300cd/㎡<br />
<strong>Contrast Ratio</strong> 8000:1 DFC (Original 700:1)<br />
<strong>Response Time</strong> 5ms (Typical)<br />
<strong>Connectors </strong> PC    15Pin D-Sub, DVI-D<br />
<strong>Power Consumption </strong> On    36W<br />
<strong>Stand-by / Suspend</strong> 1W<br />
<strong>Dimension(W x H x D)</strong> 448 X 383 X 198<br />
<strong>SPECIAL FEATURES </strong> FLATRON f Engine, HDCP, 4:3 in Wide</p></blockquote>
<p><strong>รับประกัน COM7 3 ปี</strong></p>
<p>จริงๆแล้วผมไม่ได้อยากได้จอ wide แบบนี้ซะเท่าไหร่แต่ดูเหมือนมันเป็น trend ของจอสมัยใหม่ที่รองรับ Multimedia &amp; Entertainment จะได้ดูหนังเล่นเกมได้เต็มจอ หลังจากตัดสินใจว่าจะเอาตัวนี้แล้ว ทางร้านที่ซื้อมีโปรโมชั่นผ่อน 6 เดือน 0% กับบัตรเครดิต Citibank, KTC, Krungsri ฟังดูก็น่าสนใช่ไหมละครับ แต่ว่าถ้าซื้อแบบผ่อน 0% ทางร้านบอกว่าจะบวก VAT ไปอีก 7% จอราคา 4100 บาท ก็จะเสีย VAT เพิ่มอีก 7%  (287 บาท) ก็ไม่รู้ว่าจริงหรือยังไงนะ แล้วที่ซื้อๆกันอยู่ไม่เสีย VAT เหรอ ใครรู้ช่วยบอกที</p>
<p>ผมก็บอกงั้นไม่เอาดีกว่า เอาบัตรเครดิตจ่ายเต็มไปเลย ทางร้านจะ Charge 1.8% ค่ารูด ผมเลยเดินไปกดเงินสดมาจ่ายให้มันจบๆไปเลยดีกว่า จากนั้นก็ของเทสหา dead pixel หน่อย โอเคเรียบร้อย จ่ายตังค์กลับบ้าน</p>
<p>แกะกล่องมาลองเทสทันทีที่ถึงบ้าน เปลี่ยน resolution เป็น 1440 X 900 โอ้ แม่เจ้าโว้ย ทั้งสว่างชัด ทั้งแจ่ม ได้พื้นที่แสดงผลเพิ่มขึ้นตั้งเยอะ การใช้งานทั่วไป เล่นเวบ พิมพ์ word ใช้งานได้ดี ปกติ ลองเอาหนังมาสเตอร์มาเปิดดูก็ใช้ได้ดีเลยทีเดียว สำหรับการ์ดจอที่ใช้ก็ <strong>ASUS REDEON 9200</strong> ตัวเก่า คิดว่าถ้าเปลี่ยนเป็นการ์ดจอรุ่นใหม่คงจะเล่นเกม ดูหนังเนียนกว่านี้เยอะ</p>
<p><strong>สรุปกันไปเลย</strong> สำหรับผม <strong><a href="http://www.thaiembedded.com/blog/?tag=lg-w1942t" class="st_tag internal_tag"  title="Posts tagged with LG W1942T">LG W1942T</a></strong> คุ้มค่า น่าใช้มาก สำหรับการใช้งานทั่วไป <strong>ในราคา 4,100 บาท</strong> สำหรับคนที่จะเอาไปเล่นเกม ก็ไม่แน่ใจว่า Response 5 mS จะช้าไปไหม</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=595</wfw:commentRss>
		</item>
		<item>
		<title>Watchdog Timer สำหรับ 89S52 ใน Keil</title>
		<link>http://www.thaiembedded.com/blog/?p=581</link>
		<comments>http://www.thaiembedded.com/blog/?p=581#comments</comments>
		<pubDate>Sat, 31 Jan 2009 14:13:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[MCS-51]]></category>

		<category><![CDATA[MCU]]></category>

		<category><![CDATA[89S52]]></category>

		<category><![CDATA[Watchdog Timer]]></category>

		<guid isPermaLink="false">http://www.thaiembedded.com/blog/?p=581</guid>
		<description><![CDATA[ถ้าพูดถึงไมโครคอนโทรลเลอร์ตระกูล MCS-51 ที่ผมชอบใช้ ก็เป็นเบอร์ 89S52 เนื่องจากมีราคาที่ถูกมาก และที่ถูกอกถูกใจคือผมไม่ต้องถอด IC มา burn เหมือนแต่ก่อนแล้ว ผมต่อสายจาก parallel port มา burn IC ได้เลย (ISP Programming) สะดวกกว่า ICD2 ของ Microchip เสียอีก

เอาละมาเข้าเรื่องกันดีกว่า มันมีอยู่งานนึงที่ผมใช้ 89S52 แต่มันเป็นงานที่ทำตลอด 24 ชั่วโมง ฉะนั้นมันแฮงค์ไม่ได้เลย ผมจำได้ว่า 89S52 มันมี Watchdog Timer ในตัวด้วย เลยไม่รอช้าเปิด datasheet มาดู เค้าบอกว่าอย่างนี้
การที่จะ Enable ให้ Watchdog ทำงานนั้นให้เขียนข้อมูล 0&#215;1E และ 0xE1 ลงไปใน register WDTRST ต้องเขียนต่อกันเลยนะถึงจะใช้ได้ ส่วน Watchdog Timer [...]]]></description>
			<content:encoded><![CDATA[<p>ถ้าพูดถึงไมโครคอนโทรลเลอร์ตระกูล <a href="http://www.thaiembedded.com/blog/?tag=mcs-51" class="st_tag internal_tag"  title="Posts tagged with MCS-51">MCS-51</a> ที่ผมชอบใช้ ก็เป็นเบอร์ <strong><a href="http://www.thaiembedded.com/blog/?tag=89s52" class="st_tag internal_tag"  title="Posts tagged with 89S52">89S52</a></strong> เนื่องจากมีราคาที่ถูกมาก และที่ถูกอกถูกใจคือผมไม่ต้องถอด IC มา burn เหมือนแต่ก่อนแล้ว ผมต่อสายจาก parallel port มา burn IC ได้เลย (<strong>ISP Programming</strong>) สะดวกกว่า ICD2 ของ Microchip เสียอีก</p>
<p><img class="alignnone size-medium wp-image-582" title="89S52 watchdog Timer" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/01/89s52_wdt.jpg" alt="" width="300" height="250" /><img class="alignnone size-medium wp-image-585" title="89S52 ISP" src="http://www.thaiembedded.com/blog/wp-content/uploads/2009/01/89s52_isp.jpg" alt="" width="230" height="200" /></p>
<p>เอาละมาเข้าเรื่องกันดีกว่า มันมีอยู่งานนึงที่ผมใช้ <a href="http://www.thaiembedded.com/blog/?tag=89s52" class="st_tag internal_tag"  title="Posts tagged with 89S52">89S52</a> แต่มันเป็นงานที่ทำตลอด 24 ชั่วโมง ฉะนั้นมันแฮงค์ไม่ได้เลย ผมจำได้ว่า <a href="http://www.thaiembedded.com/blog/?tag=89s52" class="st_tag internal_tag"  title="Posts tagged with 89S52">89S52</a> มันมี <a href="http://www.thaiembedded.com/blog/?tag=watchdog-timer" class="st_tag internal_tag"  title="Posts tagged with Watchdog Timer">Watchdog Timer</a> ในตัวด้วย เลยไม่รอช้าเปิด datasheet มาดู เค้าบอกว่าอย่างนี้</p>
<p>การที่จะ Enable ให้ <strong>Watchdog</strong> ทำงานนั้นให้เขียนข้อมูล 0&#215;1E และ 0xE1 ลงไปใน register <strong>WDTRST</strong> ต้องเขียนต่อกันเลยนะถึงจะใช้ได้ ส่วน <strong><a href="http://www.thaiembedded.com/blog/?tag=watchdog-timer" class="st_tag internal_tag"  title="Posts tagged with Watchdog Timer">Watchdog Timer</a> </strong>ตัวนี้เป็น Counter 13 บิตแล้วจะนับขึ้นทุก <strong>machine cycle</strong> แล้วถ้าปล่อยให้นับได้ถึง 8191 (0&#215;1FFF) เมื่อไหร่ละก็ จะเกิดการรีเซต ฉะนั้นเราต้องเขียนโปรแกรมไปคอยเคลียร์ไม่ให้ <strong><a href="http://www.thaiembedded.com/blog/?tag=watchdog-timer" class="st_tag internal_tag"  title="Posts tagged with Watchdog Timer">Watchdog Timer</a></strong> มันนับไปถึงค่า Overflow 8191</p>
<p>การเคลียร์ <strong><a href="http://www.thaiembedded.com/blog/?tag=watchdog-timer" class="st_tag internal_tag"  title="Posts tagged with Watchdog Timer">Watchdog Timer</a></strong> ก็ทำเหมือนกับ enable นะแหล่ะ ก็เขียนข้อมูล 0&#215;1E และ 0xE1 ลงไปใน register <strong>WDTRST</strong> ถ้าอยากรู้ว่า 8191<strong>machine cycle</strong> นี่นานขนาดไหนมาลองคำนวนเล่นๆกันดีกว่า</p>
<p><strong><span style="color: #000000;"><span style="text-decoration: underline;">ตัวอย่าง</span></span></strong> สมมุติว่าใช้ XTAL 11.0592 MHz แล้ว clock 12 ลูกจะได้ 1 machine cycle</p>
<p>T = (8191*12)/(11059200) = 8.887 mS ฉะนั้นเราต้องไปเคลียร์ <strong><a href="http://www.thaiembedded.com/blog/?tag=watchdog-timer" class="st_tag internal_tag"  title="Posts tagged with Watchdog Timer">Watchdog Timer</a></strong> ทุกๆ 8.8 mS เป็นอย่างน้อย หรือใครจะเคลียร์ทุกๆ 1 mS ก็ยิ่งดี ส่วนตัวเลข 8191 นี่เค้ากำหนดมาตายตัว เราไม่สามารถ scale ได้</p>
<p>ลองดู code ที่จะนำไปใช้กับ <strong>Compiler keil</strong> ดู</p>
<p>อันดับแรกเราก็ต้องประกาศ sfr (Speacial Function Register) ก่อนเพราะใน AT89X52.h ไม่ได้ประกาศ register <strong>WDTRST </strong>มาให้</p>
<blockquote><p>sfr WDTRST    = 0xa6;<br />
sfr AUXR    = 0&#215;8e;</p></blockquote>
<p>จากนั้นก็ Enable และ เคลียร์ด้วย Sub <strong>void kickdog()</strong></p>
<blockquote><p><span style="color: #0000ff;">void</span> kickdog()                               			<span style="color: #339966;">//every 8191 Machine Cycle</span><br />
{	                                                   					<span style="color: #339966;">//~8 ms</span><br />
WDTRST = 0&#215;1e;<br />
WDTRST = 0xe1;<br />
}</p></blockquote>
<p>จากนั้นเราก็หาที่วาง <strong>void kickdog() </strong>ใน function ต่างๆ (แนะนำว่าควรวางใน loop while(1) )  เพียงเท่านี้ <a href="http://www.thaiembedded.com/blog/?tag=89s52" class="st_tag internal_tag"  title="Posts tagged with 89S52">89S52</a> ของเราก็ทำงานได้นานแสนนาน โดยที่ไม่แฮงค์ (ถึงแฮงค์ก็รีเซตตัวเองขึ้นใหม่ได้)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thaiembedded.com/blog/?feed=rss2&amp;p=581</wfw:commentRss>
		</item>
	</channel>
</rss>
