<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
	<channel>
		<title>요술고양이의 Digital Homebrew</title>
		<link>http://openhardware.tistory.com/</link>
		<description>취미전자 및 디지털기기 제작에 대한 정보를 나눕니다.</description>
		<language>ko</language>
		<pubDate>Mon, 06 Jul 2009 11:32:08 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>요술고양이의 Digital Homebrew</title>
		<url><![CDATA[http://cfs13.tistory.com/upload_control/download.blog?fhandle=YmxvZzMxODc0NUBmczEzLnRpc3RvcnkuY29tOi9hdHRhY2gvMC8wLmdpZg%3D%3D]]></url>
		<link>http://openhardware.tistory.com/</link>
		<description>취미전자 및 디지털기기 제작에 대한 정보를 나눕니다.</description>
		</image>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/openhardware" type="application/rss+xml" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fopenhardware" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fopenhardware" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fopenhardware" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fopenhardware" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://wzd.com/subscribe?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fopenhardware" src="http://image.wzd.com/icon/rss1.gif">Subscribe with Some Cool Service</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.3fishes.co.kr/addchannel/feedurl=http://feeds.feedburner.com/openhardware" src="http://www.3fishes.co.kr/i/b_rss01.gif">Subscribe with Some Cool Service</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.hanrss.com/add_sub.qst?url=http%3A%2F%2Ffeeds.feedburner.com%2Fopenhardware" src="http://static.hanrss.com/images/add_to_hanrss2.gif">Subscribe with HanRSS</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
			<title>마이크로프로세서에서 동작하는 테트리스 만들기 (원리)</title>
			<link>http://openhardware.tistory.com/30</link>
			<description>&lt;P&gt;&lt;br /&gt;
&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile5.uf.tistory.com/original/116A6D1549AA6E0A2CBA59" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile5.uf.tistory.com/image/116A6D1549AA6E0A2CBA59" alt="" filemime="" filename="Å×Ʈ¸®½º_rollcake99.jpg" height="179" width="563"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;블로그에 내손으로 만드는 MP3라는&amp;nbsp;포스트에 나온&amp;nbsp;동영상을 보셨다면, 마이크로프로세서상에 테트리스를&amp;nbsp;동작하는 화면을 보셨을겁니다. (아래 동영상 후반) &lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;embed src='http://serviceapi.nmv.naver.com/flash/NFPlayer.swf?vid=E7633B7E54E32350A76B56E9BE4B1EE33E3D&amp;amp;outKey=V12107d070d20fe87ff1484deb5740d90fd1e3cce5b8cae4ec71e84deb5740d90fd1e' wmode='transparent' width='500' height='408' allowScriptAccess='always' name='NFPlayer88283' id='NFPlayer88283' allowFullScreen='true' type='application/x-shockwave-flash' /&gt;&amp;nbsp;&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
그 때 테트리스를 만들고 나서, 정리하는 기분으로 가볍게 원리만 소개해 볼까하고 작성해놓은 카페 글을&amp;nbsp;블로그에 다시 한번 정리&amp;nbsp;해두려고 작성한 포스트입니다. 소스가 공개되어 있거나 특별한 무언가를 기대하신분은 실망하시겠지만.. 마이크로프로세서 상에 게임을 만들어 올려보고 싶다고 생각되시는 분은 한번 참고할만하지 않을까? 싶어서&amp;nbsp;내용을 작성하였습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#5fb636&gt;1. 테트리스 제작 동기&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;처음에는 테트리스를 마이크로프로세서 상에서 동작하도록 만들어 보고 싶었습니다.&amp;nbsp;일단 가장 간단하고 쉬운 룰을 갖고 있어서&amp;nbsp;프로세서에 포팅하는데 큰 무리가 없을 것 같았고, 개인적 공부가 되지 않을까? 싶어서 였지요.. 그래서 우선 인터넷 상에서&amp;nbsp;&amp;nbsp;돌아다니는 소스를 참고하려고 했습니다. 그러나&amp;nbsp;윈도우 프로그래밍에 익숙치 않은 제가 해당 소스를 보자하니&amp;nbsp;간단할 것이라고 여긴 소스가 꽤나 복잡하게 보였고, 얼핏 보기엔&amp;nbsp;소형 마이크로 프로세서 용으로&amp;nbsp;적용하기엔 해당 소스들이&amp;nbsp;메모리를 낭비하는 경향이 있고 해서 공부하는 겸, 알고리즘&amp;nbsp;공부하는겸&amp;nbsp;아싸리 그냥 제가 테트리스 원리를 구현 해보았습니다.&lt;br /&gt;
&lt;br /&gt;그러므로&amp;nbsp;일반적으로 알려진 원리랑 다를 수도 있고 매우 단순합니다.&lt;br /&gt;
허나 프로그래밍에는 한가지 길만 있는 것은 아니니 너그럽게 봐주셨으면 좋겠습니다. ^^&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5fb636&gt;2. 테트리스는?&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile1.uf.tistory.com/original/146A6D1549AA6E0A3108AA" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile1.uf.tistory.com/image/146A6D1549AA6E0A3108AA" alt="" filemime="" filename="tetris_rollcake99.jpg" height="320" width="214"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;테트리스 게임 박스 사진 - 출처 : 테트리스 컴퍼니 &lt;A href="http://www.tetris.com/"&gt;http://www.tetris.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;1984년 모스크바의 알렉시파지트노브에 의해 처음으로 개발된, 퍼즐 게임입니다. 게임 방식은 대부분 아리라 생각되는데 각기 다른 모양으로 붙어 있는 4개의 블럭을 차곡차곡 쌓아서 한 줄 이상을 채우면 없어지는 퍼즐형 게임으로 누구나 쉽게 할 수 있어 최근까지도 많은 사람들이 꾸준하게 즐기는 게임입니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile24.uf.tistory.com/original/146A6D1549AA6E0A2F6A3B" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile24.uf.tistory.com/image/146A6D1549AA6E0A2F6A3B" alt="" filemime="" filename="alexey_pajitnov_rollcake99.jpg" height="188" width="282"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&amp;nbsp;Alexey Pajitnov - 출처 : 테트리스 컴퍼니 &lt;A href="http://www.tetris.com/"&gt;http://www.tetris.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#5fb636&gt;&lt;br /&gt;
2. 테트리스게임의 기본 사항&lt;br /&gt;
&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;테트리스를 제작하기에 앞서 간단하게 알아둘 기본 사항에 대하여 알아보겠습니다.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;# 테트리스의 보드&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile5.uf.tistory.com/original/136A6D1549AA6E0A2EB61A" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile5.uf.tistory.com/image/136A6D1549AA6E0A2EB61A" alt="" filemime="" filename="Å×Ʈ¸®½ºds_rollcake99.jpg" height="209" width="272"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&amp;nbsp;&amp;lt; 닌텐도의 테트리스 DS &amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;테트리스의 배경이 되는 보드입니다. 보통 테트리스의 보드 사이즈는 가로 10칸, 세로 20칸 정도 입니다. 물론 그것보다 더 큰 사이즈도 있고 작은 사이즈도 있지만 보드 자체가 너무 크면 한줄 없애는데 시간이 오래걸리기 때문에 사이즈 10 x 20가 테트리스의 적정수준으로 여겨져 10&amp;nbsp;x 20 사이즈를 기본으로 하기로 했습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&lt;STRONG&gt;# 테트리스의 블럭 모양(Shape)&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile25.uf.tistory.com/original/126A6D1549AA6E0A2D170E" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile25.uf.tistory.com/image/126A6D1549AA6E0A2D170E" alt="" filemime="" filename="º�_rollcake99.jpg" height="100" width="506"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&amp;lt; 테트리스의 블럭 모양 - 출처 : 네이버 포토 앨범(4004nari 님) &amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;위 그림은&amp;nbsp;가장 기본적인 테트리스의 모양(shape) 입니다. 7가지 모양이 있고 특징이라고 하면 모두 4개의 작은 블록으로 구성되어 있다는 점 입니다. 테트리스 컴퍼니 홈페이지에 가니 이렇게 떨어지는 블럭 모양을 Tetriminos(falling blocks)라고 부르는 것 같습니다. 그러니 위의 패턴은 테트리미노스라고 총칭하고 각각 모양에 대한 특별한 이름은 없으므로 테트리스 컴퍼니 홈페이지에서 표현하는 알파벳 이름으로 부르도록 하겠습니다. 위 그림 순서상으로 O, I, S, Z, T, L, J 가 되겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;# 게임의 룰&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;테트리스는 계속 꾸준히 리메이크되어 제작되어 왔기에 테트리스의 기본적인 룰 이외에 세세한 부분에서는 약간씩 차이를 보입니다. 테트리스에서 가장 기본적인 룰은 한줄을 맞추면 그 해당하는 줄이 삭제가 되는 것으로 어느 버젼을 막론하고 모두 동일합니다. 그러나 회전에 관련 된 부분에서 부터는 차이가 생기는데, 여러가지 테트리스를 하다 보면 블럭 회전을 한 방향으로 하는 것도 있고 양방향(왼쪽, 오른쪽) 모두 회전 가능한 버젼도 있습니다. 그리고 회전 시 주변에 벽이나 다른 블럭이 있으면 회전이 안되는 버젼도 있고 벽이나 블럭이 있더라도 반대 방향으로 밀리면서 강제로 회전하는 버젼도 있습니다. 그 외의 부분으로는 시간의 흐름에 따라 블럭이 떨어지는 속도가 빨라지는 룰이나 삭제한 라인수에 따라 블럭이 떨어지는 속도가 빨라지는 룰이 있습니다. 그리고 T스핀, 아이템의 존재 유무, 기본 패턴외에 다른 모양의 존재 유무등 다양한 게임의 룰이 존재합니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;물론 여기에서는 가장 쉽고 간편한 룰 몇가지만 설명할 생각입니다. ^^&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5fb636&gt;3. 하드웨어 구성&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;하드웨어 구성은 자세한 것 까진 필요없는 것 같고 간단하게만 언급하고자 합니다.&lt;br /&gt;
&lt;br /&gt;가장 먼저 프로세서와 그래픽을 표현할 수 있는 GLCD 또는 TFT-LCD가 필요하고 특이한 테트리스 게임을 만들기 위해서 도트LED가 사용되기도 합니다. &lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RRXkeP-lxWY&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RRXkeP-lxWY&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&amp;nbsp;&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;사용자 입력은 터치스크린도 있고 제가 만든 것처럼 조이스틱도 가능하며, 가볍게 택트 스위치 정도만 사용해도 쉬울 것 입니다.&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#5fb636&gt;&lt;br /&gt;
3. 테트리스 기본&amp;nbsp;알고리즘&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;테트리스의 알고리즘은 크게 보자면 테트리미노스의 랜덤 생성, 낙하,&amp;nbsp; 회전, 충돌 확인, 보드의 라인 체크 및 삭제 등이 있겠습니다. 최대한 이해가 쉽게 되도록 올려보겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;# 테트리미노스와 보드의 표현 방법&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;테트리미노스와 보드의 표현 방법이라는 말이 어울릴지 모르겠지만.. 보통 테트리미노스와 보드를 표현하는데 보통은 배열변수를 많이 사용합니다. 요컨테 테트리미노스는 7가지 Shape와 4가지 방향에 대한 Pattern을 갖고 있고 하나의 패턴을 표현하기 위해 메모리 공간은 칸수로 보자면 최대 4 x 4 크기를 갖습니다. (I 모양 때문)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile3.uf.tistory.com/original/136A6D1549AA6E0A308356" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile3.uf.tistory.com/image/136A6D1549AA6E0A308356" alt="" filemime="" filename="all_rollcake99.jpg" height="269" width="548"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;그래서 위의 패턴들을 배열로 표현한다고 하면 O 모양을 표현한다고 할 시 아래와 같이 선언을 해주게 됩니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#112a75&gt;&amp;nbsp;char&lt;/FONT&gt;&lt;/STRONG&gt; tetriminos[7][4][4][4] = {&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;FONT style="BACKGROUND-COLOR: #6ca8c7" color=#ffffff&gt; 1, 1,&lt;/FONT&gt; 0, 0 },&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-- 얼추 네모 모양이 나오지요? ^^&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;FONT style="BACKGROUND-COLOR: #6ca8c7"&gt; &lt;FONT style="BACKGROUND-COLOR: #6ca8c7" color=#ffffff&gt;1, 1,&lt;/FONT&gt;&lt;/FONT&gt; 0, 0 },&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { 0, 0, 0, 0 },&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; { 0, 0, 0, 0 }&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;... 생략 ...&lt;br /&gt;
&lt;br /&gt;게임 보드도 마찬가지로 배열로 마진을 두어&amp;nbsp;char game_board[12][21] 정도로 선언해줄 수 있겠습니다.&lt;br /&gt;
&lt;br /&gt;그러나 블록 모양은 const 형으로 선언을 해주면 롬 코드에 삽입이 되기 때문에 램에 대한 부하가 줄지만, 그래도 최대한 자원을 아끼어 램이나 롬이 적은 MCU에도 적용을 가능하게 하고자 일단은 최대한 다이어트를 시켜보기로 하겠습니다.&lt;br /&gt;
&lt;br /&gt;그렇기 위해서 제일 쉬운 방법은 배열을 쓰되, 바이트의 비트까지 활용을 하는 것입니다.&lt;br /&gt;
단, 하단의 방법으로는 단순히 모양만 결정할 수 있습니다. (블럭의 특정 부분에 아이템 등을 삽입한다던가는 불가능)&lt;br /&gt;
&lt;br /&gt;// 테트리미노스의 7가지 모양과 4가지 방향&lt;br /&gt;
&amp;nbsp;unsigned short&amp;nbsp;tetriminos[7][4] = {&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0x6600, 0x6600, 0x6600, 0x6600},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // O&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0xF000, 0x4444, 0xF000, 0x4444}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // I&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0x6C00, 0x8C40, 0x6C00, 0x8C40},&amp;nbsp;&amp;nbsp;&amp;nbsp; // S&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0xC600, 0x4C80, 0xC600, 0x4C80},&amp;nbsp;&amp;nbsp;&amp;nbsp; // Z&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0xE400, 0x8C80, 0x4E00, 0x4C40},&amp;nbsp;&amp;nbsp;&amp;nbsp; // T&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0x2E00, 0xC440, 0xE800, 0x88C0},&amp;nbsp;&amp;nbsp;&amp;nbsp; // L&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {0x8E00, 0x44C0, 0xE200, 0xC880},&amp;nbsp;&amp;nbsp;&amp;nbsp; // J&lt;/P&gt;
&lt;P&gt;}&lt;br /&gt;
&lt;br /&gt;위에 선언된&amp;nbsp;배열 중&amp;nbsp;O 모양을 (0x6600) 4비트씩 나누어 보면..&lt;br /&gt;
&lt;br /&gt;0&lt;br /&gt;
x&lt;br /&gt;
6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;FONT style="BACKGROUND-COLOR: #7c43b1" color=#ffffff&gt;1 1&lt;/FONT&gt; 0&lt;br /&gt;
6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 &lt;FONT style="BACKGROUND-COLOR: #7c43b1" color=#ffffff&gt;1 1&lt;/FONT&gt; 0 &lt;br /&gt;
0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0 0 0 &lt;br /&gt;
0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0 0 0&lt;br /&gt;
&lt;br /&gt;(맨 좌측은 0x6600 값을 세로로 쓴 것&amp;nbsp;입니다.)&lt;br /&gt;
&lt;br /&gt;위와 같이 모양을 만들어 낼 수 있습니다.&amp;nbsp; (참고로 위에 나오는 그림과 위치가 조금 다른데 O 모양의 경우 코드 상으로는 중간쯤에 위치 시켰습니다.)&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;이보다 더 줄이는 방법은.. 배열로 가장 기본모양만 잡아놓고 삼각함수를 이용하여 해당 테트리미노드의 값을&amp;nbsp;회전시키는 방법입니다. 이는&amp;nbsp;연산이 필요하기 때문에 소형 마이크로 프로세서에 오히려 어울리지 않을 수 있지만&amp;nbsp;또 다른 하나의 방법이 될 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;PIC18시리즈나 16비트급으로 진행하실 생각이 있는 분들은 롬과 램이 하위 모델에 비해 비교적 넉넉하므로 큰 배열 변수를 사용하여 배열 칸마다 개개별 설정(각기 다른 칼라 적용, 아이템 적용))을 해보시길 바랍니다.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;일단은 다이어트 된 배열 변수로 진행하겠습니다.&lt;br /&gt;
&lt;STRONG&gt;&lt;br /&gt;
#&amp;nbsp;보드의 표현&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
그럼 블럭 모양을 다이어트 시켰다면 게임 보드 또한 2차 배열이 아닌 1차 배열 변수로 줄여보겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#112a75&gt;unsigned short&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;game_board[21];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 16비트 크기를 갖는 변수&lt;br /&gt;
&lt;br /&gt;그리고 보드에 초기 값을 설정해줍니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;for ( i = 0; i &amp;lt; 20; i++ ) game_board[i] = 0xE007;&amp;nbsp;&amp;nbsp; // 1110000000000111&lt;br /&gt;
&amp;nbsp;game_board[20] = 0xFFFF;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1111111111111111&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
참고로&amp;nbsp;위와 같이 초기 값을 설정한&amp;nbsp;보드는 아래와 같이 벽과 바닥에는 1인 값을 갖게 됩니다. &lt;br /&gt;
게임 보드는 최상위가 0 최하위 바닥이 20이 되겠습니다.&lt;br /&gt;
&lt;br /&gt;00 :&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;0000000000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
01&amp;nbsp;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;0000000000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
02&amp;nbsp;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;0000000000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .. 중간 생략 ..&lt;br /&gt;
18&amp;nbsp;:&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;0000000000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
19&amp;nbsp;:&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;0000000000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
20&amp;nbsp;:&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;1111111111111111&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;게임이 시작 되면 앞으로는 다음 처럼 진행이 될 것 입니다.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;00 :&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;0000000000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
01&amp;nbsp;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;0000&lt;FONT style="BACKGROUND-COLOR: #ff6600" color=#ffffff&gt;1&lt;/FONT&gt;00000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
02&amp;nbsp;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;0000&lt;FONT style="BACKGROUND-COLOR: #ff6600" color=#ffffff&gt;111&lt;/FONT&gt;000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .. 중간 생략 ..&lt;br /&gt;
18&amp;nbsp;:&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;11&lt;/FONT&gt;000&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;1&lt;/FONT&gt;0000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
19&amp;nbsp;:&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;111&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;11&lt;/FONT&gt;00&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;111&lt;/FONT&gt;000&lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;111&lt;/FONT&gt;&lt;br /&gt;
20&amp;nbsp;:&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;1111111111111111&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;
그럼 좀 더 참고하기 쉽도록 맵에 대한 벼열&amp;nbsp;변수 값을 실제로 그래픽으로 표현 해보겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfile5.uf.tistory.com/original/13649B1749AA734931AFE9" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfile5.uf.tistory.com/image/13649B1749AA734931AFE9" alt="" filemime="" filename="º¸µå_rollcake99.jpg" height="262" width="205"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
위 그림을 보면&amp;nbsp;노란색 내부 영역이 실제 게임에서 테트리미 노스가 움직이는 영역이 됩니다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;STRONG&gt;# 테트리미노스 생성&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
테트리미노스는 보드 최상단 중간에 생성하며, 테트리미노스는 다양한 값을 갖고 있습니다.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#112a75&gt;unsigned char&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;shape;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리미노스의 7가지 모양&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#112a75&gt;unsigned char&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;pattern;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리미노스의 4가지 패턴&lt;br /&gt;
&lt;FONT color=#112a75&gt;&lt;STRONG&gt;unsigned char&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;cur_line;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리니노스의 현재 라인&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#112a75&gt;unsigned char&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;cur_col;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리니노스의 현재 칸&amp;nbsp;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#112a75&gt;unsigned&amp;nbsp;short&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;temp_line[4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리미노스 라인 임시 저장소&lt;br /&gt;
&lt;br /&gt;(변수 이름은 작명에 대한 센스는 그냥 그려려니 하시길 ^^)&lt;br /&gt;
&lt;br /&gt;위의 변수선언은 간단하게 설정한 테트리미노스 관련 값 들입니다. 테트리스 게임을 제작 시 디스플레이 장치를 GLCD가 아닌 TFT-LCD로 진행하려면 색 정보정도 추가해주는 편이 좋구요.. 위에는 간단하게 설명하기 위해서 일반 변수로 선언을 해주었는데, 구조체로 선언하는 것이 훨씬 좋을 꺼라 고 봅니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;그럼 &lt;STRONG&gt;&lt;FONT color=#112a75&gt;void&lt;/FONT&gt;&lt;/STRONG&gt; NewTetriminos(&lt;STRONG&gt;&lt;FONT color=#112a75&gt;void&lt;/FONT&gt;&lt;/STRONG&gt;)라고 함수를 작성하여 새로운 블럭을 설정해보겠습니다.&lt;br /&gt;
&lt;br /&gt;먼저 생성 함수 이전 또는 생성 함수 자체내에서는 블럭 모양 값을 정해주어야 합니다. &lt;br /&gt;
&lt;br /&gt;예를 들면, 아래와 같습니다.&lt;br /&gt;
&lt;br /&gt;shape = TMR2 % 7;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 단순한 블럭 랜덤 생성 (여기서 TMR2는 dsPIC33F256GP710 Timer2 레지스터 값 임)&lt;br /&gt;
pattern = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 패턴은 초기 패턴 값으로 설정&lt;/P&gt;
&lt;P&gt;생성되는 블럭은 랜덤 관련 함수를 만들어 사용해주시는 편이 좋고.. 테트리스는 지속적으로 사용자 입력을 받기 때문에.. (회전, 강제 낙하, 좌, 우 이동) 위와 같이 단순하게 타이머로 계산해도 맨 처음을 제외하고눈 게임 도중 계속 일정한 패턴으로 블럭이 생길 확률은 적은 편 입니다.&lt;br /&gt;
&lt;br /&gt;그리고 일단은 현재 낙하되는 테트리미노스외에 다음으로 생성될 테트리미노스(Next Block)까진 고려하지 않겠습니다. (실제 동영상에는 적용되어 있습니다.)&lt;br /&gt;
&lt;br /&gt;다음으로는 shape 값에 해당하는 테트리미노스 모양을 4비트씩 추출해서 저장합니다.&lt;br /&gt;
&lt;br /&gt;temp_line[0] = (tetriminos[shape][pattern] &amp;amp; 0xF000) &amp;gt;&amp;gt; 6;&lt;br /&gt;
temp_line[1] = (tetriminos[shape][pattern] &amp;amp; 0x0F00) &amp;gt;&amp;gt; 2;&lt;br /&gt;
temp_line[2] = (tetriminos[shape][pattern] &amp;amp; 0x00F0) &amp;lt;&amp;lt; 2;&lt;br /&gt;
temp_line[3] = (tetriminos[shape][pattern] &amp;amp; 0x000F) &amp;lt;&amp;lt; 6;&lt;br /&gt;
&lt;br /&gt;보시면 시프트 연산을 같이 수행하는데, 이는 임시 라인 변수의&amp;nbsp;temp_line(16비트) 중간에 블럭 값을 추출하여&amp;nbsp;저장하기 위함입니다.&lt;br /&gt;
&lt;br /&gt;만약 T 모양 테트리미노스 값을 추출한다고 하면.. 다음과 같이&amp;nbsp;됩니다.&lt;br /&gt;
&lt;FONT style="BACKGROUND-COLOR: #99dcff" color=#000000&gt;&lt;br /&gt;
16bit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MSB 15|14|13|12|11|10|&lt;FONT color=#000000&gt;09&lt;/FONT&gt;|08|07|06|05|04|03|02|01|00 LSB&lt;br /&gt;
&lt;/FONT&gt;temp_line[0] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; &lt;/FONT&gt;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ff0000" color=#ffffff&gt; &lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;&lt;FONT style="BACKGROUND-COLOR: #ff0000" color=#ffffff&gt;0&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ff0000" color=#ffffff&gt; &amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;1&lt;/FONT&gt; &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp; &lt;br /&gt;
&lt;/FONT&gt;temp_line[1] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt; &lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;1 &amp;nbsp; 1&amp;nbsp; &amp;nbsp;1 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp; &lt;br /&gt;
&lt;/FONT&gt;temp_line[2] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; &lt;/FONT&gt;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp; &lt;br /&gt;
&lt;/FONT&gt;temp_line[3] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; &lt;/FONT&gt;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;연두색으로 하이라이트 된 부분은 보드의 벽이 있는 부분으로 절대 테트리스 모양이 상위 3비트와 하위 3비트 위치에 생성되거나 위치되지 않도록 조심합니다. &lt;br /&gt;
&lt;br /&gt;그리고 이 녀석은 보드와 최상단과 보드의 중간에 생겨야 하므로&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;cur_line = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리미노스 현재 라인 (최상위 라인)&lt;br /&gt;
cur_col = 9;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 테트리미노스의 현재 칸&amp;nbsp; (그림 상 붉은 색으로 하이라이트 된 부분이 위치할 곳)&lt;br /&gt;
&lt;br /&gt;현재 라인과 현재 칸을 위와 같이 초기화 해줍니다. 참고로 빨간색으로 하이라이트 된 것은 테트리미노스 위치의 기준점 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;# 테트리미노스의 회전&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
회전은 특별할 것이 없습니다. 회전은 pattern 를 하나씩 증가 시키거나 감소시켜 해당 값을 추출해서 임시저장소에 넣어주면 됩니다.&lt;br /&gt;
&lt;br /&gt;pattern++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 패턴 값 증가&lt;br /&gt;
&lt;br /&gt;일단 한쪽 방향으로만&amp;nbsp;도는 것만 고려한다고&amp;nbsp;가정하면&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;if(pattern == 4) pattern = 0;&lt;br /&gt;
&lt;br /&gt;배열의 포인터를 벗어나지 않도록 위와 같이 작업을 추가해주면 되겠지요? 다만 회전을 어느 위치에서(칸) 했는지 모르므로 일단 각 4비트를 제일 최하위로 시프트 한 후&lt;br /&gt;
&lt;br /&gt;temp_line[0] = ((tetriminos[shape][pattern] &amp;amp; 0xF000) &amp;gt;&amp;gt; 12) &amp;lt;&amp;lt; (cur_col - 3);&lt;br /&gt;
temp_line[1] = ((tetriminos[shape][pattern] &amp;amp; 0x0F00) &amp;gt;&amp;gt; 8) &amp;lt;&amp;lt; (cur_col - 3);&lt;br /&gt;
temp_line[2] = ((tetriminos[shape][pattern] &amp;amp; 0x00F0) &amp;gt;&amp;gt; 4) &amp;lt;&amp;lt; (cur_col - 3);&lt;br /&gt;
temp_line[3] = ((tetriminos[shape][pattern] &amp;amp; 0x000F) &amp;lt;&amp;lt; (cur_col - 3);&lt;br /&gt;
&lt;br /&gt;현재 커서만큼 재차 왼쪽으로 시프트해주면 됩니다. 현재 커서에서 3을 빼주는 것은 게임상 보드의 벽에 해당하는 3비트 값을 제하기 위해서 입니다. 위의 연산은 사용자에 따라 최적화 할 수 있으니 실제 코딩시에는 간결하게 작성해보시기 바랍니다. ^^&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&amp;nbsp;# 테트리미노스의 이동&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
이동도 특별하게 해줄 것은 없고 cur_col은 왼쪽으로 이동하면 +1 해주고 오른쪽으로 이동하면 -1 해주고 temp_line 값을 그에 맞게 왼쪽, 오른쪽 시프트를 1씩 해주면 됩니다. 낙하의 경우는 단순히 cur_line을 증가시켜 주면 되는 것이지요..&lt;br /&gt;
&lt;br /&gt;좌우 이동의 경우 temp_line[i] &amp;lt;&amp;lt;= 1; 또는 temp_line[i] &amp;gt;&amp;gt;= 1;&lt;br /&gt;
낙하의 경우 cur_line++;&lt;br /&gt;
&lt;br /&gt;단, cur_line 값이 최소 2보다 커야하고 13보다 작은 3 ~ 12 사이의 값을 유지하도록 하는&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;즉, 벽에 해당하는 상위 3비트와 하위 3비트에 테트리미노스의 영역이 진입하지 않도록 유의해야 하는데.&amp;nbsp;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
아직 설명하지 않았지만.. 그전에 충돌 확인을 먼저 하게 되므로 특별히 이동으로 인한 충돌 걱정 필요는 없습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;# 충돌 확인&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
충돌확인이 늦게 설명되었는데, 테트리미노스의 생성, 낙하, 회전, 이동은 모두 충돌 확인을 거친 이후 실행해야합니다.&lt;br /&gt;
&lt;br /&gt;예를 들어, 테트리미노스의 생성 시 만약 충돌이 감지되었다면 최상위에 어떠한 블럭이 있는 상태에서 블럭이 생성되는 것이므로&amp;nbsp;그것은 게임 오버를 뜻하게 되고 낙하 시 충돌이 감지되었다면 바닥이므로 그곳에 테트리미노스가 굳어버리게 되며, 이동 및 회전 중에 충돌이 감지되면 이동 또는 회전을 금지시키면 됩니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#112a75&gt;signed&amp;nbsp;char&amp;nbsp;&lt;/FONT&gt;&lt;/STRONG&gt;Collision(&lt;STRONG&gt;&lt;FONT color=#112a75&gt;void&lt;/FONT&gt;&lt;/STRONG&gt;)&lt;br /&gt;
{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( ((game_board[cur_line] &amp;amp; temp_line[0]) != 0) | ((game_board[cur_line + 1] &amp;amp; temp[1]) != 0) | &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((game_board[cur_line + 2] &amp;amp; temp[2]) != 0) | ((game_board[cur_line + 3] &amp;amp; temp[3]) != 0) )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 충돌&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&amp;nbsp; // 충돌 없음&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;충돌 감지는 어렵지 않습니다. 게임 보드 배열 변수의 현재 라인부터 4줄과 AND 연산을 하여 0이 나오는지 1이 나오는지&lt;br /&gt;
확인하면 되는 것 입니다.&lt;br /&gt;
&lt;br /&gt;예를 들어.. cur_line이 5이고 cur_col이 12에 T모양이 위치한 상태에서 왼쪽 이동을 누른다고 할 시&lt;br /&gt;
&lt;STRONG&gt;&lt;br /&gt;
테트리미노스&lt;br /&gt;
&lt;br /&gt;&lt;/STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #99dcff" color=#000000&gt;16bit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MSB 15|14|13|12|11|10|&lt;FONT color=#000000&gt;09&lt;/FONT&gt;|08|07|06|05|04|03|02|01|00 LSB&lt;br /&gt;
&lt;/FONT&gt;temp_line[0] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;&lt;FONT style="BACKGROUND-COLOR: #ff0000" color=#ffffff&gt; 0 &amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;1&lt;/FONT&gt; &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/FONT&gt;temp_line[1] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt; &lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #9334d8" color=#ffffff&gt;1 &amp;nbsp; 1&amp;nbsp; &amp;nbsp;1 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0 &amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0 &amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp; &lt;br /&gt;
&lt;/FONT&gt;temp_line[2] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp; &lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp; &lt;br /&gt;
&lt;/FONT&gt;temp_line[3] = &lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp; &lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffdaed" color=#000000&gt;0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0 &amp;nbsp; &lt;FONT style="BACKGROUND-COLOR: #a6ff4d" color=#000000&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;STRONG&gt;게임보드&lt;br /&gt;
&lt;br /&gt;&lt;/STRONG&gt;&lt;FONT style="BACKGROUND-COLOR: #99dcff" color=#000000&gt;16bit&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MSB 15|14|13|12|11|10|&lt;FONT color=#000000&gt;09&lt;/FONT&gt;|08|07|06|05|04|03|02|01|00 LSB&lt;br /&gt;
&lt;/FONT&gt;game_board[5] =&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/FONT&gt;&lt;/FONT&gt;game_board[6] =&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;&lt;FONT color=#000000&gt;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &amp;nbsp;0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/FONT&gt;&lt;/FONT&gt;game_board[7] =&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;&lt;FONT color=#000000&gt;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt;0 &amp;nbsp;&lt;/FONT&gt; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0 &amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;/FONT&gt;&lt;/FONT&gt;game_board[8] =&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT style="BACKGROUND-COLOR: #ffffff" color=#000000&gt; 0 &amp;nbsp;&lt;/FONT&gt; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 0 &amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&lt;FONT style="BACKGROUND-COLOR: #a6ff4d"&gt;&amp;nbsp;1&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/FONT&gt;일단은 temp_line 배열변수를 전부 왼쪽으로 1만큼 시프트 연산을 시킵니다. 다음 게임 보드와 AND 연산을 합니다. temp_line[1]과 game_board[6]의 AND 연산 시 0이 아니게 되므로 충돌이라고 반환하면 됩니다.&lt;br /&gt;
&lt;br /&gt;그렇게 때문에 생성, 낙하, 회전, 이동은 모두 아래와 같은 방식으로 루틴을 수행하면 됩니다. &lt;br /&gt;
&lt;br /&gt;1. cur_line 또는 cur_col, pattern 등을 증, 감 시켜 temp_line 값을 수정한다.&lt;br /&gt;
&lt;br /&gt;2. 충돌 검사를 시도한다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;만약 충돌이 아니면 해당 값을 그대로 적용시키고, 만약 충돌이라면 해당 값을 이전으로 되돌린다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;일단 가벼운 원리만 제공하고자 해서&amp;nbsp;썰렁하지만 여기 까지 입니다. -_-;&lt;br /&gt;
&lt;br /&gt;항상 제가 쓴 글치고 용두사미가 아닌 글이 없을정도로.. 제 스스로도 수정하면서 다시 보니 허전~~ 하네요~&lt;br /&gt;
&lt;br /&gt;그리고&amp;nbsp;천천히 다시 살펴보니 제 스스로도 무식하게 코딩을 했구나 또는 안해도 될 연산을 한게 아닌가 하는 부분이 눈에 보입니다. 차후에 기회가 되면 천천히 다시 제작하면서 제대로 된 원리와 제작 방법에 대해 남겨 보고자 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/P&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-30-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-30-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-30-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2637215" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>APP &amp; Tech Notes</category>
			<category>it</category>
			<category>PIC</category>
			<category>강좌</category>
			<category>요술고양이</category>
			<category>원리</category>
			<category>자작</category>
			<category>테트리스</category>
			<category>하드웨어</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/30</guid>
			<comments>http://openhardware.tistory.com/30#entry30comment</comments>
			<pubDate>Sun, 01 Mar 2009 21:06:30 +0900</pubDate>
		</item>
		<item>
			<title>[나의 카페 운영기] 엔지니어가 갖아야 할 올바른 질문 자세..?</title>
			<link>http://openhardware.tistory.com/28</link>
			<description>&lt;br /&gt;

&lt;DIV class=txc-textbox style="BORDER-RIGHT: #f3c534 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #f3c534 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #f3c534 1px dashed; BACKGROUND-COLOR: #fefeb8"&gt;저는 Micro PIC라는 마이크로칩사의 마이크로프로세서를 사용하거나 개발하는 사람들을&amp;nbsp;위한&amp;nbsp;카페를 운영하고 있습니다.&lt;/DIV&gt;&lt;br /&gt;
&amp;nbsp;카페가 개발 및 하드웨어 제작 관련한 주제를 다루다 보니주로 올라오는 게시물은 아무래도 질문 게시물입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;물론 가끔 강좌도 올라오고, 하드웨어 제작기나 작품 자랑도 올라오지만 어딜가더라도 친목 카페가 아닌 이상은 질문 글이 많은 것 같습니다. 그래서 매일 올라오는 여러 질문글을&amp;nbsp;들여다보면, 잘 된 질문과 잘 못된&amp;nbsp;질문 즉,&amp;nbsp;올바르지 못한 질문을 보게 됩니다.&amp;nbsp;그 예로써 질문 양식이나 공지를 지키지 않으면서 질문 하는 사람, 이미 있는 내용인데 검색 안하고 중복 질문 하는 사람&amp;nbsp;등을 꼽을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;궁금한 것을 해결하고자 하는 것은 좋지만.. 어딜 가든 매너와 예절이 중시되는 만큼&amp;nbsp;질문을 할 때에도 나름 매너와 절차가 필요하지 않나 싶습니다.&amp;nbsp;그렇기 때문에 질문에 대한 답변이 잘 달리고 안 달리고 원인의 절반은&amp;nbsp;질문자의 자세에 달려있다고&amp;nbsp; 생각합니다. 몰라서 답변 못해주는게 아니라 괘씸해서 안해주거나, 답변을 해줄 가치를 못 느낀다거나 하는 이유이지요..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그래서&amp;nbsp;올바른 질문을 하기 위한&amp;nbsp;&lt;STRONG&gt;엔지니어가 갖아야할 올바른 질문 자세(?)&lt;/STRONG&gt;에 대하여 조금 언급하고자 합니다. &lt;br /&gt;
엔지니어라고 하니 좀 거창해보이는데요.. 엔지니어자를 붙은 이유는 여기서 언급하는 질문이 단순 궁금증이라기 보다는 개발을 하다가 생기는&amp;nbsp;문제에 대한 해결 방법을 물어보는 질문이&amp;nbsp;이에 해당하기에 거창하게 엔지니어자를 붙여보았습니다. 여러분의 관심을 끌기위한(?) 낚시 신공은 아니니;&amp;nbsp;양해를 부탁드립니다. &lt;br /&gt;
&lt;br /&gt;그냥 가볍게 읽어주시길 바라면서..&lt;br /&gt;
평소 질문을 많이 하는데 답변은 안달린다고 생각되시는 분은 한번 돌아보는 시간이 되었으면 좋겠습니다. :-)&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;DIV class=txc-textbox style="BORDER-RIGHT: #9fd331 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #9fd331 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #9fd331 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #9fd331 1px dashed; BACKGROUND-COLOR: #e7fdb5"&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#49b5d5&gt;# 문제 해결을 위해 엔지니어가 갖아야할 올바른 질문 자세&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT size=+0&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;1]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;질문전 동일한 내용에 대한 해결 방법이 있는가 검색하기&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;질문자들이&amp;nbsp;가장 안지키는 부분 중 하나로서, 그것은&amp;nbsp;해당 문제와 관련된 검색을&amp;nbsp;하지 않는 부분입니다. 문제라는 것이&amp;nbsp;예기치 않은&amp;nbsp;어려운&amp;nbsp;문제도 많겠지만 아무래도 대부분은 특정한 이유로 인해&amp;nbsp;발생되는 것이므로, 해당 원인이 대부분 존재합니다. 그러므로 이미 해당 문제를 겪은 사람도 많을 수도 있고, 해당 문제를 해결하기 위한 방법을 언급하거나 또는 질문과 답변이 이미&amp;nbsp;오고 갔을 경우 확률이 매우 높습니다.&amp;nbsp;그렇기 때문에&amp;nbsp;검색을 해보면 충분히 검색이 되고, 참고할 수 있는 자료가 존재할 수 있음에도 불구하고 검색을 하지 않고,&amp;nbsp;질문으로써 해결을 보려고 하는&amp;nbsp;사람들이 의외로 많습니다.&amp;nbsp;이러한 자세는 시간 낭비 인적 자원 낭비 네트워크 트래픽 낭비&amp;nbsp;웹스토리지 낭비입니다. 충분한 검색은 질문을 하기전에 해보아야 할 필수조건이고, 오히려 문제 해결에 있어 가장 쉽고 빠른 방법이므로&amp;nbsp;반드시 지키시길 바랍니다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;2]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; 메뉴얼 및&amp;nbsp;테크니컬, 어플리케이션 노트 등 해당 문서&amp;nbsp;참고하기&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;첫 번째 항목과 비슷한 내용으로서 대부분 사람들이 시도하지 않는&amp;nbsp;방법입니다. 대부분은 누군가 간결하게 설명해놓은 것이 이해하기 빠르고 시간도 적게 들기 때문에 대부분 메뉴얼이나 테크니컬 노트처럼 방대한 자료에 대해 부담을 갖는게 사실입니다. 하지만 개발자가 많이 겪을&amp;nbsp;수 있는 문제나&amp;nbsp;실수를 줄이고&amp;nbsp;도움을 주기 위한 것이 바로 메뉴얼입니다. 이러한 메뉴얼은 컴파일러에도 있고, 라이브러리에도 있고, 디바이스 관련 문서에도 있고, 왠만하면 개발툴이나 관련 분야에 이러한 기술문서는&amp;nbsp;대부분 제공됩니다. 그리고 대부분&amp;nbsp;공식적인 기술 문제는&amp;nbsp;해당 제품 관련 메뉴얼이나 테크니컬 노트에&amp;nbsp;대부분 언급되어 있는 경우가 많습니다.&amp;nbsp;그러나 대부분 이런 문서 존재 자체를 모르는건지 읽는 것을 꺼리는 건지 모르겠지만,&amp;nbsp;메뉴얼만 조금&amp;nbsp;찾아보면 가장 확실하고 쉽게&amp;nbsp;해결 가능한 문제를 꼭 질문하는 사람이 있습니다. 설명서는 보라고 친절히? 작성한 문서입니다.&amp;nbsp;충분히 해당 문서를 검토해보시길 바랍니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;3]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; 구체적인 문제 상황&amp;nbsp;묘사 및&amp;nbsp;충분한&amp;nbsp;자신의 정보를 제공&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;좋지 않은 질문은 대부분 너무 단순하다 못해 막연함에 있습니다. 그냥&amp;nbsp;알려주세요.. 그냥 이게 뭔가요?식의&amp;nbsp;장황스런&amp;nbsp;질문은 그냥 묻히기 쉽상입니다.&amp;nbsp;질문자 자신이 빠르고 정확한&amp;nbsp;답변을 듣고 싶다면&amp;nbsp;현재 겪고 있는 문제에 대한 구체적인&amp;nbsp;상황과 예상되는 원인, 그리고 자신의 개발환경, 관련 분야 지식 인지정도를 밝히셔야 합니다.&amp;nbsp;예를 들어, 질문자가 펌웨어 개발자라고 가정한다면,&amp;nbsp;어느 디바이스를 쓰고 어느 개발 툴을 쓰며, 회로 구성은 이와 같고,&amp;nbsp;문제가 발생되는 소스는 이런 것이며.. 자신은 대충 이렇게 생각하는데 잘 안되는점이 있다.. 그리고 이런것을 시도해 보았다&amp;nbsp;등등&amp;nbsp;최대한&amp;nbsp;문제와 관련된 자신의 정보를 제공할 때 해당 문제에 대하여 최적화된 좋은 답변을 받을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;4]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;질문이 아닌 요청 금지&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;가끔은 주객이 전도된 질문을 글이 더러 존재합니다. 질문이 아니라 마치 요청 내지는 어떻게 해달라고 지시를&amp;nbsp;내리는 글 입니다. 예를 들어, "시리얼 출력이 궁금합니다. 소스 작성해서 보내주세요" 라는 글은&amp;nbsp;질문을 하는것 처럼 시작하고 마지막은&amp;nbsp;만들어 달라고 요청을 합니다. 이는 남에게 자신의 문제 해결을 떠넘기는&amp;nbsp;것으로 대부분 이런 질문글에는 반감을 갖기 마련이고, 좋은 답변이 달리기 어려우니 철저히 지양하도록 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;5]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;피해야 할&amp;nbsp;질문자의 언행 및 행동&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;질문자는 도움을 받는 사람입니다.&amp;nbsp;도움을 받는 사람은&amp;nbsp;그에 맞게 매너를 지켜야 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;빨리 알려주세요, 급해요! :&amp;nbsp;&lt;/STRONG&gt;답변하는 사람도 바쁜 사람입니다. 답변은 그런 시간 쪼개서 해주는 어려운 일입니다. 질문자는 답변자에게 독촉하는 듯한 인상을 남기면 외면 받기 쉽상입니다.&amp;nbsp;&lt;br /&gt;
&lt;STRONG&gt;ㅋㅋㅋㅋㅋㅋㅋ 이게 뭔가요?&amp;nbsp;:&lt;/STRONG&gt; 나이 어린? 개발자나 학생에게 나오는 나쁜 습관으로, 친구랑 채팅하듯 지나친 초성체를 포함해서 질문을 하지 마시길 바랍니다. 전문적인 답변을 질문자 또한&amp;nbsp;그에 맞게&amp;nbsp;진지함으로 임하시길 바랍니다.&lt;br /&gt;
&lt;STRONG&gt;고수 모십니다 : &lt;/STRONG&gt;이건 개인차가 있겠지만 개인적으로는 그렇게 좋은 용어는 아닌 듯 합니다. 답변하는 사람이 스스로를 고수라고 생각하면 상관없겠지만, 대부분 겸손하게 자신을 낮추어 볼 때&amp;nbsp; 왠지 답변자 자체에게 부담을 주는 언행입니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;5]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;자신의 질문 글 지우지 않기&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;문제 해결 되었을 경우 가끔 자신이 정보를 얻어다고 하여, 자신의 질문 게시물을 지우는 경우가 있습니다. 생각보다 그 수치는 많은 편이며, 이럴 경우 답변한 사람은 참으로 어이가 없거나 허탈한 심정을 느끼기도 하고, 다음부터는 답변을 꺼리기도 합니다. 그리고&amp;nbsp;차후에 비슷한 문제를 겪는 사람은 동일한 문제에 대해 또 물어봐야하는 악순환이 반복됩니다. 자신이 정보를 얻었다면, 해당 정보를 공유하는 차원에서 지우지 않고 반드시 남기어 매너가 있는 질문자의 자세를 보여주시길 바랍니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;&lt;FONT color=#e31600&gt;[질문 자세&amp;nbsp;6]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;문제가 해결 또는 미 해결 되더라도 피드백 남기기&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;문제가 해결이 되었거나 미해결 되었거나 대부분 해당 답변이 달린 글을 그냥 방치하는 경우가 대부분입니다. 그러나 만약 문제가 잘 해결되었을 경우 밑에 덧글이나 추가 게시물로 해당 방법을 통해 문제가 잘 해결되었다&amp;nbsp;또는 잘 안되었을 경우에는 잘 되지 않았다라고 피드백으로서 명시를 해준다면, 답변자에게도 좋은 정보가&amp;nbsp; 될 수 있으며, 답변자가 해당 문제 솔류션에 대해 더 아는 사항이 있다고 한다면&amp;nbsp;추가적인 방안을 제시해 줄&amp;nbsp;수도 있습니다.&amp;nbsp;그리고 차후 비슷한 문제를 겪는 사람에게는 해당 문제 해결에 있어서&amp;nbsp;중요한 참고사항이 될 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;위에 제가 제시한 자세는 기본적인 매너와 관련된 것들입니다. 그리고 질문자에 대한 게으름을 비판하는 글이기도 합니다.&lt;br /&gt;
대부분 질문이 정말 몰라서라기 보다는 대부분은 귀찮아서가 큽니다. 아예 몰라서 그래요는 대부분 핑계인 셈이죠..&lt;br /&gt;
&lt;br /&gt;그래서 최소한 자신이 해볼 수 있는 것은 도전해보고 그래도 잘 안되고 어렵다면, 최소한 위 매너정도만 지키면 자신이 원하는 지식적 탐구를 해결하는데 도움이 되지 않을까? 해서 몇자 적어본 것 입니다.&lt;br /&gt;
&lt;br /&gt;그래도 뭐니뭐니 해도 제일 좋은 것은 스스로 해결하는 것 입니다.&lt;br /&gt;
스스로에게 질문을 던지고 스스로가 그 해답을 찾는 것이지요.&lt;br /&gt;
&lt;br /&gt;그러니 편리함에 눈이 멀어.. 스스로 해결할 수 있는 자신의 능력을 죽이지 마시길 바랍니다!&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-28-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-28-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-28-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2627685" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>나의 카페운영기</category>
			<category>PIC</category>
			<category>답변</category>
			<category>답변자</category>
			<category>마이크로칩</category>
			<category>매너</category>
			<category>엔지니어</category>
			<category>요술고양이</category>
			<category>자세</category>
			<category>질문</category>
			<category>질문자</category>
			<category>카페</category>
			<category>카페운영기</category>
			<category>커뮤니티</category>
			<category>커뮤니티운영기</category>
			<category>프로그래머</category>
			<category>하드웨어</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/28</guid>
			<comments>http://openhardware.tistory.com/28#entry28comment</comments>
			<pubDate>Fri, 27 Feb 2009 18:28:45 +0900</pubDate>
		</item>
		<item>
			<title>우리나라에서 닌텐도(NDS) 개발하기?</title>
			<link>http://openhardware.tistory.com/27</link>
			<description>&lt;br /&gt;

&lt;DIV class=txc-textbox style="BORDER-RIGHT: #9fd331 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #9fd331 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #9fd331 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #9fd331 1px dashed; BACKGROUND-COLOR: #e7fdb5"&gt;
&lt;DIV style="TEXT-ALIGN: center"&gt;&amp;nbsp;본 포스트는 특정인 또는 기업을 비방하는 게시물이 아닙니다. 그리고 지극히 &lt;STRONG&gt;개인적인 견해의 글&lt;/STRONG&gt;임을 밝힙니다.&lt;br /&gt;
포스트 내용에 오류가 있거나 지적사항이 있을 경우 수정 요청을 하시면 반영하도록 하겠습니다.&lt;br /&gt;
&lt;/DIV&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#7293fa&gt;1.&amp;nbsp;우리나라에서 닌텐도 개발과 관련 이슈가 발생한 이유&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;최근 이 대통령이 던진 한마디에&amp;nbsp;온라인은 순식간에 들끓었습니다. &lt;br /&gt;
&lt;br /&gt;그 이유는 대부분 아시리라 생각되는데..&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;"닌텐도 게임기 같은 것을 초등학생들이 많이 가지고 있고 한명이 사면 따라사고 한다고 하더라"며 "이런 것들을 개발해볼 수 없겠느냐" 라는 발언이 기사화 되면서 논란은 시작되었습니다. &lt;sup class="footnote"&gt;&lt;a id="footnote_link_27_1" href="#footnote_27_1" onmouseover="tistoryFootnote.show(this, 27, 1)" onmouseout="tistoryFootnote.hide(27, 1)" style="color: #f9650d; font-family: Verdana, Sans-serif"&gt;&lt;span style="display: none"&gt;[각주:&lt;/span&gt;1&lt;span style="display: none"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;위의 발언으로 인해 각종 웹 및 기사, 커뮤니티에서는&amp;nbsp;뭘 알고나 하는 이야기냐? 바보 아니냐? 지금 IT 업계를 어렵게 한 장본인이 할 말이냐? 등등&amp;nbsp;각종 비아냥 및 비판부터&amp;nbsp;시작하여&amp;nbsp;급기야 명텐도MB,&amp;nbsp;닌텐도 Gii라는&amp;nbsp;패러디가 나오게 되었습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그런데 지나가는 말인줄 알았는데.. 누리꾼의 비판에 의해 발끈 한 것인지 실제로 준비를 한 것인지는 모르겠으나..&lt;br /&gt;
실제로 개발을&amp;nbsp;하려고&amp;nbsp;한다는&amp;nbsp;기사가 나오는 등..&amp;nbsp;&lt;sup class="footnote"&gt;&lt;a id="footnote_link_27_2" href="#footnote_27_2" onmouseover="tistoryFootnote.show(this, 27, 2)" onmouseout="tistoryFootnote.hide(27, 2)" style="color: #f9650d; font-family: Verdana, Sans-serif"&gt;&lt;span style="display: none"&gt;[각주:&lt;/span&gt;2&lt;span style="display: none"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;최근 닌텐도(실제로는 NDS 또는&amp;nbsp;NDSL)는 핫 이슈가 되었고, 한국 닌텐도&amp;nbsp;대표 이사도&amp;nbsp;그 와 관련한 발언을 남기기도 했습니다.&amp;nbsp;&lt;sup class="footnote"&gt;&lt;a id="footnote_link_27_3" href="#footnote_27_3" onmouseover="tistoryFootnote.show(this, 27, 3)" onmouseout="tistoryFootnote.hide(27, 3)" style="color: #f9650d; font-family: Verdana, Sans-serif"&gt;&lt;span style="display: none"&gt;[각주:&lt;/span&gt;3&lt;span style="display: none"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그러다가 어느새에&amp;nbsp;비난과 패러디를 넘어서 전문가적인 입장으로서&amp;nbsp;조금은 체계적인 원인으로 접근하여 비판을 하시는 분들도 생기게 되었습니다.&amp;nbsp;대부분은 우리나라의 교육적 정세와 불법 시장 구조에 입각하여 불가능하다라는 의견을 보이시는&amp;nbsp;많은 블로거 및 네티즌&amp;nbsp;분들입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그러나&amp;nbsp;안타까운 것은 대부분 비판 또는&amp;nbsp;비난만 있을뿐..&amp;nbsp;최소한 해결책은 무리더라도 방향을 제시해주시는 분들을 보지 못했습니다.&amp;nbsp;최소한 자신의 비판이 정당할 수 있으려면.. 타당한 원인 제시와 그에 대한 해결책도 필요한게 아닌가 싶습니다.&lt;br /&gt;
&lt;br /&gt;그래서&amp;nbsp;저는&amp;nbsp;&amp;nbsp;제가 가진 지식으로&amp;nbsp;이야기 할 수 있는 수준에서 다른 시각으로 접근을 해보려고 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;U&gt;물론 이것은 앞서 밝힌 것처럼 지극히 개인적인 저의 견해일 뿐이며 오류가 많이 발생할 수 있음을 염두해주시면 감사하겠습니다.&lt;/U&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs15.tistory.com/original/35/tistory/2009/02/15/02/11/4996fb4be986a" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs15.tistory.com/image/35/tistory/2009/02/15/02/11/4996fb4be986a" width="470" height="335" alt="" filename="main.jpg" filemime=""/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;DIV style="TEXT-ALIGN: center"&gt;[그림 1] 논란의 중심이 된 닌텐도 DS (출처 : &lt;A href="http://www.ds-lite.com/"&gt;http://www.ds-lite.com/&lt;/A&gt;)&lt;/DIV&gt;
&lt;DIV&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#7293fa&gt;2. NDS(또는, 이하 NDSL)의 스펙&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;뜬금없이 NDSL 스펙을 한번 짚고 넘어가보고자 합니다.&amp;nbsp;불법 시장&amp;nbsp;구조이니&amp;nbsp;게임을 만들어줄 서드 파티가 없다느니 같은 접근보다는.. 땜쟁이 및 소프트웨어 전공자&amp;nbsp;시각으로&amp;nbsp;접근&amp;nbsp;하기 위해 NDS(또는 NDSL)의 스펙을 한번 짚고 넘어가 보겠습니다.&lt;br /&gt;
&lt;br /&gt;그럼 자세한 스펙까지는 필요없을 듯 하고.. 간단한 스펙만 위키에서 얻어왔습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs15.tistory.com/original/33/tistory/2009/02/15/02/11/4996fb4c958a8" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs15.tistory.com/image/33/tistory/2009/02/15/02/11/4996fb4c958a8" width="425" height="409" alt="" filename="nintendo_ds_lite2x.jpg" filemime=""/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV style="TEXT-ALIGN: center"&gt;[그림 2] NDS의 정면 모습 (출처 : &lt;A href="http://www.ds-lite.com/"&gt;http://www.ds-lite.com/&lt;/A&gt;)&lt;br /&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;br /&gt;

&lt;DIV class=txc-textbox style="BORDER-RIGHT: #79a5e4 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #79a5e4 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #79a5e4 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #79a5e4 1px dashed; BACKGROUND-COLOR: #dbe8fb"&gt;&lt;STRONG&gt;&lt;br /&gt;
&amp;lt; 기본 스펙&amp;nbsp;&lt;sup class="footnote"&gt;&lt;a id="footnote_link_27_4" href="#footnote_27_4" onmouseover="tistoryFootnote.show(this, 27, 4)" onmouseout="tistoryFootnote.hide(27, 4)" style="color: #f9650d; font-family: Verdana, Sans-serif"&gt;&lt;span style="display: none"&gt;[각주:&lt;/span&gt;4&lt;span style="display: none"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&amp;nbsp;&amp;gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&lt;STRONG&gt;Display:&lt;/STRONG&gt; A backlit, 3-inch, transmissive TFT color LCD with 256 x 192 pixel resolution and .24 mm dot pitch, capable of displaying 260,000 colors&lt;br /&gt;
&lt;STRONG&gt;CPU&lt;/STRONG&gt; :&amp;nbsp;&amp;nbsp;67 MHz ARM946E-S and 33 MHz ARM7TDMI&lt;br /&gt;
&lt;STRONG&gt;Storage capacity:&lt;/STRONG&gt;&amp;nbsp;Cartridge save, 4 MB RAM &lt;br /&gt;
&lt;STRONG&gt;Connectivity:&lt;/STRONG&gt; Wi-Fi (IEEE 802.11)&lt;br /&gt;
&lt;STRONG&gt;Input/Outout: &lt;/STRONG&gt;Keypad + Touch Screen / Stereo Sound&lt;br /&gt;
&lt;br /&gt;&lt;/DIV&gt;&lt;br /&gt;
&amp;nbsp;요약한 스펙을 보면 다른 분들은 어떻게 생각하시는지 모르겠지만..&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;위 스펙은 상당히 놀라운 스펙입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그것은 NDS가 솔직히 이렇게 열악한(?) 스펙인지를 몰랐기 때문입니다. &lt;br /&gt;
(참고로 제가 회로 설계하고 만지작 거리면서&amp;nbsp;프로젝트용으로 쓰고&amp;nbsp;있는 MCU도 80Mhz로 동작합니다.)&lt;br /&gt;
&lt;br /&gt;CPU가 2개로 듀얼코어로 동작한다는 말은 얼핏 들었지만, 솔직히 저정도의 프로세서인지는 몰랐습니다.&lt;br /&gt;
(생각보다는 스펙이 낮았다는 이야기..)&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;Gameboy Advance 부터 메인 프로세서가 ARM&amp;nbsp;프로세서가&amp;nbsp;쓰였는지라 막연히 ARM 프로세서가 쓰였을 것이라고 예상은 했지만..&amp;nbsp;그래도 속도가 안되도 200Mhz ~ 300Mhz는 되지 않을까?&amp;nbsp;생각 하고 있었는데&lt;br /&gt;
&lt;br /&gt;아주 가볍게&amp;nbsp;저의 생각을&amp;nbsp;짓밟아(?) 주셨습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;물론 위 스펙을 갖는 기기 정도는 나름 세계 최고의 하드웨어 기술력(?)을 자랑하는 우리나라 유수의 기업에서 만들 수 있는 단순한(?)하드웨어입니다. 그리고 단순히&amp;nbsp;하드웨어 스펙만 놓고 볼 때 중소기업에서도 충분히 만들 수 있는 아니 그 보다 더&amp;nbsp;좋은 스펙을 갖고 있는 기기도&amp;nbsp;만들고 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;예를 들어.. PMP나 네비를 들어보면..&amp;nbsp;네비나 PMP의 경우 듀얼 스크린까지는 아니지만 4인치 ~ 7,&amp;nbsp;8인치 대형&amp;nbsp;LCD를 채용한 제품이 많습니다.&amp;nbsp;&amp;nbsp;그리고 해상도로 인한 데이터 사이즈로 볼 때,&amp;nbsp;NDS의 듀얼 스크린 보다 훨씬 많은 픽셀을 필요로&amp;nbsp;합니다. 그래서 성능이 좋은 프로세서를 사용하고&amp;nbsp;큰 용량의 램을 사용합니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;쉽게 설명하자면 듀얼 스크린 자체가 그렇게 어려운 기술은 아닙니다. 물론 스크린이 2개라 2배의 대역폭이 필요합니다만.. 위 스펙상 1프레임의 픽셀은 256 x 192 * 2(듀얼&amp;nbsp;스크린이므로..) = 49152 * 2 = 98304 픽셀정도 입니다. 그에 비해&amp;nbsp;성능이 비교적 높은편인 6 ~ 7인치 급 네비는 800 * 480 정도의 해상도를 갖으므로 384000 픽셀 정도로 1프레임 표현 시&amp;nbsp;약 4배는 더 많은&amp;nbsp;픽셀을 표현해야 합니다. &amp;nbsp;그래서 소형 네비를 제외하고 하이엔드 네비는 프로세서 속도가 500Mhz를 넘는 것도 꽤 많이 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그러나 닌텐도만의 내부 회로 설계(저전력 및 경량화)나&amp;nbsp;주변 Peripheral 제어(듀얼스크린, 터치 등등) 기술을&amp;nbsp;감안할 때 누구나 만들&amp;nbsp;수 있는 하드웨어라고 단정은 지을 수 없는 이야기 이며, 단순한 겉보기로는&amp;nbsp;NDSL의&amp;nbsp;스펙은&amp;nbsp;생각 보다 훨~~씬 낮은 스펙이라는 것과&amp;nbsp;이렇게 낮은 스펙에도&amp;nbsp;실행되는 게임의 퀄리티를 생각할 때,&amp;nbsp;NDSL 하드웨어는 상당히 &lt;STRONG&gt;특정 요구사항에 최적화된 하드웨어&lt;/STRONG&gt;라는 것입니다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;결론적으론&amp;nbsp;위와 같은&amp;nbsp;하드웨어는 우리나라에서 충분히&amp;nbsp;만들 수는 있으나.. (저에게도 시간을 주신다면.. 퍽-_-; 농담입니다.)&lt;br /&gt;
게임이라는 요구사항에 맞도록 최적화된 하드웨어를 만드는 일은 별개의 부분으로서.. &lt;br /&gt;
이 부분은 소프트웨어적인 기술이 포함됩니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;개인적 생각으로는 우리나라에서 게임기 하드웨어를 만들 수 있는가 없는가 여부는 논란의 중심이 될 수 있지 않으며, 섣부른 제 결론으로는 게임기는 만들수 있지만 게임기가 아니라.. 라고 말할 수&amp;nbsp;있을 것 같습니다.&lt;br /&gt;
&lt;br /&gt;즉,&amp;nbsp;다른 중요한&amp;nbsp;사항이 존재한다고 볼 수 있습니다. (이것은 나중에..)&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#7293fa&gt;3. NDSL은 싼건가? 비싼건가?&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;여러분은 NDSL의 가격에 대해 어떻게 생각하십니까? 저는 얼마전 NDSL 관련 기사 덧글에 이러한 말을 본적이 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;"기기를 15만원이나 받아먹으면서 게임을 돈받고 팔려고 한다!"&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;무식해서 용감하신건지.. 아님 진심으로 생각하시는건지는 모르겠지만.. 결론부터 말하자면.. 엄청 싼겁니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;머릿속에 제가 아무리 단순계산을 해도 저 가격으로 판매를 한다는 것은 하드웨어 업체 입장으로서는 &lt;br /&gt;
자살행위이거나 많은 사람들이&amp;nbsp;게임을 즐기게 하고 싶어서 하는 자선 행위 입니다.&lt;br /&gt;
&lt;br /&gt;예를 들어&amp;nbsp;하이엔드 급 소형 MP3 가격(일부 MP4 플레이어 제외)도 NDSL보다는 비싼게 많습니다. &lt;br /&gt;
그게 내부의 프로세서나&amp;nbsp;부품이 더 좋아서? 일까요?&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그 반대입니다. 하드웨어 스펙은 비슷하거나 낮을 확률이 더 높습니다.&lt;br /&gt;
&lt;br /&gt;그런데 왜! NDSL보다 비싸냐?&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;그것은 하드웨어로 마진을 남기려면 소프트웨어 개발 시 보다&amp;nbsp;더 많은 소비자가를 책정해야하기 때문입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;가장 큰 이유는 하드웨어는 생산 할 때마다 매번&amp;nbsp;높은 제조 비용이 발생을 하고.. 제조 비용이 환율이나 기타 부품 공급 수량에 따라 격차가 발생합니다. 보통은 부품 가격이 비싸졌으면 비싸졌지 싸게 떨어지는 일은 별로 없는 것이지요.. &lt;br /&gt;
(실제로 이번 환율 사태로 전자부품이 폭등 했습니다.)&lt;br /&gt;
&lt;br /&gt;또한 소프트웨어랑 달리&amp;nbsp;A/S도 자주 발생합니다.&lt;br /&gt;
&lt;br /&gt;일반적으로 시간이 지나면 부품 가격은 증가하나..(공정 개선으로 제조비용이 하락하는 경우도 있음) &lt;br /&gt;
제품 가격은 하락할 수 밖에 없는&amp;nbsp;상황과 A/S가 수시로&amp;nbsp;발생함으로..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;하드웨어 제조 업체는 마진을 적게 남길 수가 없으며.. &lt;br /&gt;
하드웨어 자체만으로 소비자를 대상으로 수익을 내는 것은 상당히 쉬운일이 아닙니다. &lt;br /&gt;
우리나라 대기업의&amp;nbsp;매출과 실제 수익 관계를 따져봐도&amp;nbsp;쉽지 않다는 것은 단번에 알 수 있습니다.&lt;br /&gt;
&lt;br /&gt;그럼 닌텐도는 정말로 자선사업이라도 하는 걸까요?&lt;br /&gt;
아닙니다 그럴리가 없지요? 위의 사례는 &lt;STRONG&gt;하드웨어 업체&lt;/STRONG&gt;라고 했습니다. &lt;br /&gt;
&lt;br /&gt;&amp;nbsp;닌텐도는 명백한 게임 &lt;STRONG&gt;소프트웨어 업체&lt;/STRONG&gt;입니다.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;닌텐도에 있어서 하드웨어는 자사의 소프트웨어를 팔기 위한 시장을 만들기 위한 발판일 뿐입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;이는 마켓 쉐어를 최대한 많이 키워놓고, 소프트웨어를 팔기 위한 것으로.. 소니와&amp;nbsp;마이크로소프트 또한&amp;nbsp;이와 같은&amp;nbsp;전략을 사용하고 있습니다. 단,&amp;nbsp;닌텐도는 주로 자사의 소프트웨어를 팔아서... 소니나 마소는&amp;nbsp;빠방한 서드파티를 등에 업고 플랫폼 사용에 대한&amp;nbsp;로열티나 게임 퍼블리싱을 통해 주로 먹고 산다는 차이가 발생하지요..&lt;br /&gt;
&lt;br /&gt;즉,&amp;nbsp;손해를 보면서도 하드웨어를 팔고, 그 만큼 소프트웨어를 더 팔아서 그 손해를 메꾸고.. 이익을 얻는 구조입니다.&lt;br /&gt;
&lt;br /&gt;그래서 현재 콘솔 게임시장이라는 것은 단기로 치고 빠져나올 수 없는 시장 구조이며..&lt;br /&gt;
장시간 투자해야하는 상당히 어려운 시장임을 알 수 있습니다.&lt;br /&gt;
&lt;br /&gt;결론적으로 만약 우리나라에서 게임기 하드웨어를 개발을 한다면.. &lt;br /&gt;
하드웨어 제작에 기꺼히 손해를 보더라도.. 10년 후를 바라보고 투자를 할 수 있어야 합니다.&lt;br /&gt;
&lt;br /&gt;그러나 세계적으로 하드웨어만 잘 만드는 업체만 있고.. &lt;br /&gt;
세계적으로 하드웨어 및 게임 모두 잘 만들 수 있는 업체를 가지지 못한 우리나라로서는..&lt;br /&gt;
그러한 무모한 도전을 받아들을 업체가 얼마나 있을 지 모르겠습니다.&lt;br /&gt;
&lt;br /&gt;즉, 우리나라에서는 NDSL과 동일한 스펙으로 제품을 만들어도 그 보다는 비쌌으면 비쌌지.. 절대 더 싸게는 못판다는 이야기 입니다. &lt;br /&gt;
&lt;br /&gt;&amp;nbsp;물론 하드웨어만 우라나라에서&amp;nbsp;만들고 외국의 서드 파티가 참여하여 로열티나 퍼블리싱 하여 수익을 내는 방법도 &lt;br /&gt;
있겠으나(소니나 마소와 같이 ) 소니는 자국 내의 서드파티에 힘입어, M$는 엄청난 마케팅과 자금 물량으로 가능한 방법이고.. 우리라나에서 이는 정말 도박내지는 엄청난 로비?가 필요한 일로 당장은 어려운 일이라고 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#49b5d5&gt;&lt;STRONG&gt;&lt;FONT color=#7293fa&gt;4. 문제는 하드웨어가 아니다! 소프트웨어다!&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;br /&gt;
우리나라에서 게임기를 개발한다고 해도 우려되는 것이 바로 소프트웨어 입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;잘만든 게임기&amp;nbsp;있어도 돌아가는 게임이 얼마 없다면.. 소위 말하는 킬러 타이틀이 없다면 성공하기 힘듭니다. 그래서 게임기 제조사는 대형 게임 업체에게 게임을 만들어 주십사하고 찾아가서 사정을 하기도 한다고 하니 게임 소프트웨어의 중요성은 말로 할 수 없지요..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그러나 제가 언급하고자 하는 소프트웨어는&amp;nbsp;게임 소프트웨어가 아닙니다. 제가 제동을 걸고자 하는 부분은 OS 및 미들웨어 소프트웨어&amp;nbsp;플랫폼 부분입니다.&amp;nbsp;앞서 말한 것과 같이 우리나라에서 상당한 성능을 갖는 게임기 하드웨어는 만들 수 있다고 봅니다. 물론 그게 게임기라고 부를수 있을지 없을지는 바로 플랫폼에 따라 달라질 수 있습니다.&lt;br /&gt;
&lt;br /&gt;즉, 우리나라에서 게임용 OS 및 미들웨어&amp;nbsp;플랫폼은&amp;nbsp;만들 수 있을까?는 의문 입니다. &lt;br /&gt;
이는 대부분이&amp;nbsp;지나칠&amp;nbsp;수 있는 사항으로서, 실은&amp;nbsp;가장 중요한 사항 중 하나입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;NDSL이 나름 안정적이고&amp;nbsp;스펙에 비해&amp;nbsp;퀄리티가 높은 게임 소프트웨어가 돌아가는 것은 앞서도 밝혔지만 하드웨어&amp;nbsp;스펙이 좋기 때문이 아닙니다.&amp;nbsp;내부의 OS 및 미들웨어 플랫폼 기술이 뛰어나기 때문이라고 저는 생각합니다.&amp;nbsp;거꾸로&amp;nbsp;플랫폼 기술이 있기 때문에 자신들이 요구하는 게임의 요구사항을 만족할 수 있는 최적의 저 스펙의 하드웨어를 제작하여 하드웨어 제작 비용 적인 측면에서 큰 이득을 보았을 것이라는 생각도 듭니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;즉,&amp;nbsp;OS나 소프트웨어 플랫폼 기술이 부족한 우리나라는&amp;nbsp;하드웨어 자원을 모두 사용하지 못할정도로&amp;nbsp;성능이 좋은 제품을 만들 확률이 높다는 이야기구요..&amp;nbsp;그 예로, PMP나 네비, 핸드폰을 들 수 있으며..&amp;nbsp;하드웨어 자체는 아주 훌륭하나 그 하드웨어로 인해.. 막상 다 활용하지도 못하는 하드웨어 자원에 대한 가격까지 소비자가 떠&amp;nbsp;맡게 됩니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;닌텐도를 다시 언급하자면&amp;nbsp;닌텐도는 게임 소프트웨어만 잘&amp;nbsp;만드는게 아니라 OS 기술과 각종 미들웨어 플랫폼 기술력을 갖추고 있으며, 소니 또한 마찬가지이며.. 이미 세계적으로 제일 많이 쓰는 윈도우 OS를 개발하는 마이크로소프트는 언급할 필요조차 없는 부분입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;보통 콘솔 하드웨어가 PC 보다 성능이 더 떨어짐에도 불구하고, 게임이 더 원할하게 잘 돌아가는 이유는 콘솔게임이 해당 콘솔 하드웨어에&amp;nbsp;최적화 되어있기 때문이라고 봅니다.&amp;nbsp;이는 단순하게 하드웨어 최적화&amp;nbsp;측면도 있지만..&amp;nbsp; OS나 미들웨어&amp;nbsp;플랫폼이 얼마나 최적화 되어있나도&amp;nbsp;중요합니다. 소프트웨어 플랫폼 자체가 무거우면.. 그 위에 돌아가는 게임 소프트웨어 또한 무거울 수 밖에 없으며, 해당 소프트웨어 플랫폼에 의존적인&amp;nbsp;게임 소프트웨어는 플랫폼의 개선없이는 절대로&amp;nbsp;그 무거운 짐을 덜 수 없습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;공식적으로 밝혀진 사항은 아니지만.. 국내의 대부분 하이엔드 전자제품에는 RTOS(Real Time Operating System)내지는 리눅스 또는 Windows CE(Mobile)를 많이 사용합니다.(실제로 국내의 모 유명한 전자회사는 자사의 하이엔드 TV에 OS로&amp;nbsp;리눅스를 쓰고 있습니다.) 그러나 이는 대부분 범용적인 OS라서 특정&amp;nbsp;하드웨어&amp;nbsp;최적화에는&amp;nbsp;한계가&amp;nbsp;발생하며..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;아무런 검증도 없이&amp;nbsp;게임기 플랫폼으로 탑재하기엔 무리가 있습니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;만약 해당 플랫폼을 사용한다 하더라도..&amp;nbsp;이는 우리의 고유 플랫폼 기술이&amp;nbsp;아니므로 리눅스를 제외하고는 플랫폼에 대한 로열티가 지불되어야 합니다. 그리고 위의 운영체제가 요구하는 하드웨어 요구사항에 맞게 하드웨어를 제작해야합니다. &lt;br /&gt;
(제조&amp;nbsp;단가가 비싸지는 현상 및 외산 기술에 의존하는 경우가 발생, 최악의 경우 문제 발생 시 빠른 대처 불가..)&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;일본도&amp;nbsp;우니나라랑 비슷하지 않냐? 싶겠지만..&amp;nbsp;최소한 일본에서는 TRON이라는 국가적인 정책아래 개발되는 RTOS가 있고, 이 RTOS는 일본 전자제품의 대부분에 탑재되어 우수한 성능을 입증하였습니다.&amp;nbsp;&lt;sup class="footnote"&gt;&lt;a id="footnote_link_27_5" href="#footnote_27_5" onmouseover="tistoryFootnote.show(this, 27, 5)" onmouseout="tistoryFootnote.hide(27, 5)" style="color: #f9650d; font-family: Verdana, Sans-serif"&gt;&lt;span style="display: none"&gt;[각주:&lt;/span&gt;5&lt;span style="display: none"&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt; 최소한 일본은&amp;nbsp;스스로가 특화된 OS를 만들 수 있는&amp;nbsp;기술은 분명 존재한다고 볼 수&amp;nbsp;있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;이러한 소프트웨어 플랫폼 기술이 없이는&amp;nbsp;게임기 개발은 빚좋은 개살구내지는 PMP가 게임기 흉내내서 생색내기로 끝날 수 있으며.. 괜히 하드웨어 가격 상승만 부추기는 요인이 됩니다. (괜히 리눅스나 Windows CE가 탑재되어 하드웨어 스펙만 높은 기기가 게임기&amp;nbsp;될 것을&amp;nbsp;우려하는 말임.. PMP 기능에 게임도 되요! 이런 -_-; 정체성 없는 녀석들 탄생 가능성 농후~ )&lt;br /&gt;
&lt;br /&gt;그리고 또 한가지 그냥 무심히 지나칠 수도 있는데 게임 개발환경도&amp;nbsp;짚고 넘어가봅시다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;많은 일본 게임 중소업체가 PS3의 개발환경이 너무 어려워 Xbox360으로 돌렸다는 말도 있을 정도로 개발환경은 중요한 요소이며, 워낙 개발환경이&amp;nbsp;편리하다고 소문난 Xbox360의 경우는 천재 게임 프로그래머 존 카멕도 PS3 보다 Xbox360의 개발환경에 손을 들어 주었습니다. 그리고 마소는 최근 하복 물리엔진을 Xbox360 SDK에 기본으로 탑재시켰고.. XNA라는 게임 개발환경을 제공하여 누구나 Xbox360 및 PC 게임 개발을&amp;nbsp;할 수있도록 유도하고 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;위 사례로 볼 때 더 이상 개발환경은 게임 시장과 별개의 이야기가 아니라.. 게임기 또는 게임 소프트개발, 게임 시장 등에&amp;nbsp;있어서 무시 못할 수준이 되어 버렸습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;개발환경을 구축하기 위해서는 OS는 물론이고 해당 OS에 맞는 라이브러리, 컴파일러 등등의 기술이 필요합니다. 플랫폼과 마찬가지로 우리나라에서는 얼마나 이 기술을 갖고 있느냐 입니다.&amp;nbsp;당장 독자적인&amp;nbsp;OS&amp;nbsp;및 플랫폼 개발 능력이 없으니.. 일반적으로 알려진 OS 및 미들웨어 플랫폼을 사용해야 하고, 그렇다 보면 해당 플랫폼 의존적인 개발환경을 사용해야하므로 차별화된 개발환경 제공에 어려움이 발생합니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;결론적으로는 이는 우리나라가 원천기술이나 기본이 되는&amp;nbsp;OS 및 미들웨어 플랫폼 기술이 아직 많이 뒤쳐진다는 부분이며,&amp;nbsp;&lt;br /&gt;
OS나 미들웨어와 같은 소프트웨어 플랫폼 기술에 많이 투자를 하지 않고서는 게임 기능이 있는 PMP를 만들뿐이지.. 게임이 되는 게임기를 만들지 못합니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;개인적인 생각이지만.. 핸드폰에서 우리나라의 맹추격에도 노키아가 세계 1위를 하는 것은 자사의 OS 및 미들웨어 플랫폼 기술이 있기 때문이 아닐까?라는 생각해봅니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;여담이지만, 이번 위피의&amp;nbsp;폐지 사건 때 대부분이 그냥 불편하니까 빼버려라! 라고&amp;nbsp;몰아세우는 분들이 많이 보았는데... &lt;br /&gt;
밑도 끝도없이.. 위피를 폐지하라고&amp;nbsp;비판하셨던 분들은 재고해주시길 바랍니다.&lt;br /&gt;
(하드웨어 잘만들어도 들어가는 두뇌를 외산에 의지해서야.. 진정한&amp;nbsp;세계최고 국산 IT 제품이라고 할 수 없지요..)&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#7293fa&gt;5.&amp;nbsp;그래도 개발하고자 한다면..&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
(1)&amp;nbsp;불법 시장 구조 개선 및 소프트웨어에 대한 인식 변화&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;불법이 성행하는 구조의 가장 큰 원인은 사람들의 의식이라고 볼 수 있는데 외국과 달리 국내에서는&amp;nbsp;유독 소프트웨어를 가볍게 여기거나 공짜정도로 생각하는 분위기가 형성된 것이 가장 큰 문제입니다.&lt;br /&gt;
&lt;br /&gt;초창기 PC가 가정에 도입당시&amp;nbsp;운영체제는 구입하는게 아니라 공짜로 깔아주는 것으로&amp;nbsp;인식되었으며, 게임 또한 그러한 것이 많았습니다. (1990년대 당시 대기업 제품에도 불구하고 게임을 공짜로 깔아주었음..)&lt;br /&gt;
&lt;br /&gt;그리고 외국과 인식이 다른 것이 외국은 지적재산권에 대한 권리를&amp;nbsp;이해해주는데..&lt;br /&gt;
아직 우리나라에서는&amp;nbsp;그 부분이 부족한게 아닌가&amp;nbsp;싶습니다.&lt;br /&gt;
&lt;br /&gt;이 부분은 정부가 나서서 의식 개선과 소프트웨어 개발에 대한 많은 지원이 필요할 것 입니다.&lt;br /&gt;
&lt;br /&gt;(2) 정부의 체계적인 IT 산업의 육성&lt;br /&gt;
&lt;br /&gt;최근&amp;nbsp;좀 씁쓸한 것이 정부에서 우리나라 IT에 요구하는 것은 많으나.. 최근 행태를 보면,&amp;nbsp;IT&amp;nbsp;죽이기에 가까운 일들을 많이 벌였습니다. (작년에는 정통부 해체 및 최근에는 소프트웨어 개발자 등록제 등..)&lt;br /&gt;
&lt;br /&gt;실제로&amp;nbsp;많은 기술 연구소에서는 연구 과제 및&amp;nbsp;정부의 지원이&amp;nbsp;점점 줄고 있으며..&lt;br /&gt;
이는 원천기술 개발 할 수 있는 인력이 줄어들고 있음을 시사하며..&lt;br /&gt;
&lt;br /&gt;제가 앞서 밝힌 원천기술 부족의 현상을 심화할 것 입니다. 그러니 지금이라도 제대로 된 정책을 펼쳐주십사 빕니다.&lt;br /&gt;
&lt;br /&gt;여담이지만.. 정부의 IT 중 DB관련 과제 제안시에..&lt;br /&gt;
해당 고위 정부 관계자가&amp;nbsp;DBMS가 뭡니까? 라고&amp;nbsp;물어봐서&amp;nbsp;발표자가 박차고 나왔다는 일화가 있습니다.&lt;br /&gt;
&lt;br /&gt;나랏님 제발&amp;nbsp;-. - 이치에 맞도록 일을 처리해주십시오~&lt;br /&gt;
DB 관련 과제&amp;nbsp;제안 중에 관계자 분께서&amp;nbsp;DBMS를 모르면 어쩌자는겁니까?&lt;br /&gt;
&lt;br /&gt;(3) 우리나라 실정에 맞게&amp;nbsp;도전&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;꼭 휴대용 게임기 등을 만드는데, 반드시 외국 서드파티에 의존해야 하고,&amp;nbsp;기타 남의 것을 (닌텐도, 소니)&amp;nbsp;따라할 필요는 없는 것 같습니다. 우리나라는 대체로 온라인 게임을&amp;nbsp;잘 만들고 있고, 무선 인터넷 및 모바일 원천 기술을 갖고 있으니..&lt;br /&gt;
이러한 자원을 이용하는 편이 훨씬 나아 보입니다.&lt;br /&gt;
&lt;br /&gt;예를 들면, Wibro 같은 인프라를 잘 활용하여 휴대용 온라인 전용 게임기를&amp;nbsp;만들어도 괜찮지 않을까? 싶습니다.&lt;br /&gt;
던전 앤 파이터라던가 메이플 스토리 같은 단순한 2D 게임은 충분히 휴대용으로 컨버젼 하여 제작이 가능하다고 보구요..&lt;br /&gt;
&lt;br /&gt;많은 유수의 온라인 게임 업체에서, 휴대용 게임기에 맞는 게임을 개발하고, 수익은 월정액 내지는 지금과 같이 부분 유료로 하면 충분히 국내에서만이라도 가능성은 있다고 봅니다. (최소한 외국 게임기가 판을 치는 현 상황에서 외화 지출을 약간이나마&amp;nbsp;줄일 수 있을지도? ^^;)&lt;br /&gt;
&lt;br /&gt;그 대신 전국에&amp;nbsp;무선 인터넷 활성화가 우선이긴 하겠지만요..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;앞으로는 무선 인터넷 인프라가 전국적으로 깔릴 것이고&amp;nbsp;,&amp;nbsp;혼자 하는 게임보다는 여럿이 하는&amp;nbsp;온라인 게임이 점점 인기가 많으니 국내에서 가능한 온라인 방식으로 승부를 해도 괜찮지 않을까 합니다.&lt;br /&gt;
&lt;br /&gt;(4) 애플을 따라하라!&lt;br /&gt;
&lt;br /&gt;애플은 닌텐도와 같이 하드웨어 및 소프트웨어를 모두 잘 만드는 세계적인 기업입니다.&amp;nbsp;&lt;br /&gt;
그러나 애플은 하드웨어를 닌텐도 처럼 싸게 내놓지 않았습니다.&lt;br /&gt;
&lt;br /&gt;그러나 그들은 사람들이 원하는 기능을 탑재하였고 애플은 스스로가 각종 어플리케이션을&amp;nbsp;제작 해서 팔 수 있었지만..&amp;nbsp;&lt;br /&gt;
한계는 있었습니다. &lt;br /&gt;
&lt;br /&gt;그래서 그들은&amp;nbsp;제공했습니다. &amp;nbsp;&lt;br /&gt;
아이폰 SDK과 애플스토어!를&lt;br /&gt;
&lt;br /&gt;서드파티가 필요없습니다. 전 세계 개발자 및 개발사들이 서드파티가 됩니다.&lt;br /&gt;
그리고 그들 수익의 30%를 가져갑니다.&lt;br /&gt;
&lt;br /&gt;우리도 좋은 하드웨어를 만듭니다.그리고 서드파티에 매달리지 않습니다. &lt;br /&gt;
수많은 개발자 및 개발사들에게 불특정 다수의 개발자에게 컨텐츠를 받아 제공하고.. &lt;br /&gt;
개발자 수익의 일부를 취한다면, 서드파티 부족으로 오는 현상을&amp;nbsp;문제점을 줄일 수 있지 않을까 싶습니다.&lt;br /&gt;
&lt;br /&gt;물론 요것도 하드웨어를 잘 팔아먹고 SDK를 잘 만들어 배포해야하지요 ^^;&lt;br /&gt;
&lt;br /&gt;(5) 소프트웨어 원천기술을 개발하라..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;하드웨어는 이미 우리나라는 세계적 수준에 이르렀습니다. &lt;br /&gt;
그러나 아직 그 하드웨어를 움직이는 두뇌는 외산에 많이 의존합니다. 요즘은 대부분 하드웨어가 상향 평준화되어 더 이상.. &lt;br /&gt;
하드웨어로 특별함을 안겨주는 시대는 지났습니다.&lt;br /&gt;
&lt;br /&gt;그 예로,&amp;nbsp;&amp;nbsp;최근 우리나라에서 만든.. 모 터치 핸드폰이 애플의 iPhone과 유사한 인터페이스를 갖고&amp;nbsp;있는데..&lt;br /&gt;
내부 UI의 플랫폼이 플래시라는 말이 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;결국 플래시라는 것은 내부 UI 플랫폼을 Adobe에 의존하고 있다는 것이고, 플래시라는 플랫폼에 의존적이기 때문에 문제가 발생하면, 어도비에서 조치를 취해주지 않는한.. 어떻게 해볼 수 없다는 이야기도 됩니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그와 반대로 애플은 독자적이고&amp;nbsp;플랫폼 기술을&amp;nbsp;갖고 있었고, 그로 인해 부가적인 로열티를 지불할 일도 없고,&lt;br /&gt;
문제가 발생해도 애플은 빠른 대처를 할 수가 있었을 것 입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;최근&amp;nbsp;IT 분야에서&amp;nbsp;강력한 힘은 하드웨어 기술 보다는&amp;nbsp;소프트웨어 기술에 있다고 볼 수 있습니다.&lt;br /&gt;
지금이라도 원천기술 개발에 더 주력을 해야하지 않을까 싶습니다.&lt;br /&gt;
&lt;br /&gt;(6) 기술이 전부는 아니다..&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;포스트 내용이 전반적으로 기술적으로 접근을 했지만..&amp;nbsp;중요한 것은 기술적인&amp;nbsp;것만은 아닙니다. &lt;br /&gt;
&lt;br /&gt;기존의 닌텐도, 소니, 마소가 기술력이 우수한 회사이긴 하지만.. 그들 또한 기술만으로 승부를 보지 않았습니다.&lt;br /&gt;
그러니 위 회사의&amp;nbsp;행보를 철저히 벤치마킹해야&amp;nbsp;함은 물론이고,&amp;nbsp;실제적인 것은 구매자에 의한 요소가 더 크다는 것을 감안하여&lt;br /&gt;
시장, 기술, 동향 등을 모두 완벽히 분석하고 체계적인 접근을 할 수 있기를 바랍니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#49b5d5&gt;6. 마무리&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;정신없이 긴 시간 포스팅을 작성하였습니다. 나름 좋은 내용을 글을 더 많이 쓰고 싶었으나, 정신이 하나도 없네요..&lt;br /&gt;
개인적으로는 우리나라에서도 게임기를 만든다고 하면 지지를 하겠습니다. 그러나 수박 겉핥기로 할바엔, 그만 두길 바라고.. &lt;br /&gt;
&lt;br /&gt;장기적인 안목으로 IT에 대한 지원을 팍팍 해주길 바라면서, 체계적으로 접근하여&amp;nbsp;진행을 하였으면 하는 바램입니다.&lt;br /&gt;
&lt;br /&gt;긴 포스트 읽어주셔서 감사합니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;br /&gt;
&lt;FONT color=#c84205&gt;참고문헌&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;div class="footnotes"&gt;
	&lt;ol class="footnotes"&gt;
		&lt;li id="footnote_27_1"&gt;이명박 대통령 닌텐도 발언 기사,  http://stock.moneytoday.co.kr/view/mtview.php?no=2009020414565234837&amp;type=1&amp;outlink=2&amp;EVEC &lt;a href="#footnote_link_27_1"&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id="footnote_27_2"&gt;"한국형 닌텐도" 시동건다, http://www.asiae.co.kr/uhtml/read.jsp?idxno=2009021307590142153 &lt;a href="#footnote_link_27_2"&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id="footnote_27_3"&gt;닌텐도, MB에게 충고 "불법복제 차단부터", http://www.ohmynews.com/NWS_Web/view/at_pg.aspx?CNTN_CD=A0001068151 &lt;a href="#footnote_link_27_3"&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id="footnote_27_4"&gt;위키 NDSL, http://en.wikipedia.org/wiki/Nintendo_DS_Lite &lt;a href="#footnote_link_27_4"&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id="footnote_27_5"&gt;Tron Project, http://en.wikipedia.org/wiki/TRON_Project &lt;a href="#footnote_link_27_5"&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
	&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-27-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-27-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-27-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2548887" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>개인칼럼</category>
			<category>ndsl</category>
			<category>닌텐도</category>
			<category>명텐도</category>
			<category>명텐도Gii</category>
			<category>명텐도mb</category>
			<category>요술고양이</category>
			<category>칼럼</category>
			<category>하드웨어</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/27</guid>
			<comments>http://openhardware.tistory.com/27#entry27comment</comments>
			<pubDate>Sun, 15 Feb 2009 18:26:32 +0900</pubDate>
		</item>
		<item>
			<title>[카페운영기] IT 예비 개발자나 학생들에게 하는 따끔한(?) 조언..</title>
			<link>http://openhardware.tistory.com/25</link>
			<description>&lt;br /&gt;
[ 저는 Micro PIC라는 마이크로칩사의 마이크로프로세서를 사용하거나 개발하는 사람들을&amp;nbsp;위한&amp;nbsp;카페를 운영하고 있습니다. ]&lt;br /&gt;
&lt;br /&gt;최근 마이크로 프로세서에 관심이 많아진 것인지.. &lt;br /&gt;
블로그에서 MP3 만들기&amp;nbsp;포스트로 지나가는 이의 가슴에 불을 잘 붙여넣은 덕분(?)인지..&lt;br /&gt;
생각지도 않게 많은 분들의 가입과 함께 방문이 잦아졌습니다.&lt;br /&gt;
하지만 그럼에도 불구하고 카페 유입인원의 대부분은 해당 관련 전공자이고&amp;nbsp;역시나 대학생이 주를 이루고 있습니다.&lt;br /&gt;
&lt;br /&gt;그런데 어제는 커뮤니티에 올라오는 질문들을&amp;nbsp;유심히 보다가..&amp;nbsp;그동안 참았던(?)것을 공지사항으로 게시판에 질렀습니다.&lt;br /&gt;
&lt;br /&gt;그&amp;nbsp;이유는 학생들이 신분을 망각(?)했기 때문인데요..&lt;br /&gt;
&lt;br /&gt;제가 작성한 공지 게시물의 원문을 요약(?)한 글은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV class=txc-textbox style="BORDER-RIGHT: #fe8943 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #fe8943 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #fe8943 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #fe8943 1px dashed; BACKGROUND-COLOR: #fedec7"&gt;&lt;br /&gt;

&lt;P&gt;&amp;nbsp;최근에&amp;nbsp;학생 분들(대부분 대학생이지요?)의 질문이 많이 올라오는 것&amp;nbsp;같은데 그에 대해서 조금 몇자 적어봅니다.&lt;br /&gt;
질문을 하시는 분의 답답한&amp;nbsp;심정이야 알겠지만..&amp;nbsp;여러분은 과연 얼마나 Try 해보시고 질문을 하시는지요? &lt;br /&gt;
또는 기초라고 생각되는 C언어는 어느정도 습득을 하시고 질문을 하시는지요?&lt;br /&gt;
&lt;br /&gt;가끔 질문글을 보고 있자 하면&amp;nbsp;개발환경 툴에서 F1만 눌러서 해결 볼 수 있는 내용이나..&lt;br /&gt;
카페에서 검색하면 볼 수 있는 내용, C언어 기초 또는 데이터시트, 컴파일러가 설치된 폴더의 예제나 또는 문서를 보면서 &lt;br /&gt;
해결할 수 있는 내용을 조금 안된다고 바로 질문게시판에 밑도 끝도없이 모른다고&amp;nbsp;올리는 게시물이&amp;nbsp;눈에 많이 띄는 것 같아서 드리는 말씀입니다.&lt;br /&gt;
&lt;br /&gt;물론 질문이란게&amp;nbsp;궁금증을 해결하는&amp;nbsp;가장 빠른길입니다만..&lt;br /&gt;
질문을 가만히 보고 있자하면.. &lt;br /&gt;
제가 얼핏 보기엔&amp;nbsp;지식적 탐구를 위함이라기 보다는 단순히&amp;nbsp;문제&amp;nbsp;해결에 대한&amp;nbsp;목적이 더&amp;nbsp;커 보입니다.&lt;br /&gt;
&lt;br /&gt;그 예로, 공지사항의 질문 양식 조차&amp;nbsp;지키지 않는 것을 볼 때마다..&lt;br /&gt;
이미 카페의 룰도 지켜주지 않으면서&amp;nbsp;질문을 하는 것 자체가 단순히 급하게 가입해서 질문을 해결하려는&amp;nbsp;&lt;br /&gt;
목적이 크다고&amp;nbsp;밖에 생각이&amp;nbsp;안들었습니다.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이 카페가.. &lt;br /&gt;
처음 공부하기&amp;nbsp;어려운 사람들을 위해서 또는 자신이 알고 있는 지식을 공유하기 위해서 생긴 카페는 맞습니다만..&lt;br /&gt;
카페는 어디까지 혼자서 겪어야 하는 어려움을 약간 덜어보자는 거지&lt;br /&gt;
원하는대로 무언가가 나오는 만능이 아닙니다.&lt;br /&gt;
&lt;br /&gt;그 동안 제가 기초가 되는 강좌 게시글을&amp;nbsp;수시로 충분히 올렸고, &lt;br /&gt;
다른 운영자 분들이나 회원님들이 좋은 내용을 많이 올려주고 계십니다.&lt;br /&gt;
한마디로 카페가 생기기 이전보다&amp;nbsp;참고할 만한&amp;nbsp;자료들이 많이 생기어 &lt;br /&gt;
공부하기에 더 좋은 환경이 되었으면 되었지 나빠지진 않았을 것 입니다.&lt;br /&gt;
&lt;br /&gt;즉, 자신이 조금만 노력하면 얻을 수 있는 내용을.. 단지 질문을 통해 빠르게만&amp;nbsp;해결하려고 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;초보자나 학생분들이 그 정도 고생도 하지 않고, &lt;br /&gt;
단순히 쉽게 지식을 얻으려고 하는 것을 보면서..&lt;br /&gt;
그 나이에만 할 수 있는&amp;nbsp;열정이&amp;nbsp;아깝다는 생각입니다.&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;남들 만큼 잘하고 싶다고 생각하고 남들 보다 잘하고 싶다고 생각하면서 &lt;br /&gt;
어찌 기본적인 노력도 하지 않고&amp;nbsp; 남들 보다 잘하고 싶으신지요?&lt;br /&gt;
그리고 그런 남에게 의지만 하시려고 하십니까?&lt;br /&gt;
&lt;br /&gt;여러분들은 질문 시 으례&amp;nbsp;찾는 여러분 스스로가 고수라고&amp;nbsp;일컫는&amp;nbsp;분들과&amp;nbsp;차이 점이&amp;nbsp;무엇이라고 생각하십니까?&lt;br /&gt;
지식의 깊이가 달라서 일까요? 아님&amp;nbsp;나보다 먼저해서 아는게 많아서? 고수인가요?&lt;br /&gt;
&lt;br /&gt;제가 여지껏 카페 운영하면서 최소한 여러분들이 생각하는 고수라는 분들은..&lt;br /&gt;
저의 시선으로는&amp;nbsp;활동을 잘하시고 아는 것이 많은 회원님들을 보면, &lt;br /&gt;
모두 스스로 열심히 하시는 분들입니다.&lt;br /&gt;
&lt;br /&gt;불철주야 책에 있는 한글자라도 더 보시거나 더 많이 Try 하신 분들입니다.&lt;br /&gt;
&lt;br /&gt;그&amp;nbsp;중에는 마누라 구박 받으면서, 주말에&amp;nbsp;아이들과 안놀아주고 눈치보면서..&lt;br /&gt;
혹은 담배랑 술값 줄여가며 전자부품 구입하면서&amp;nbsp;공부하는 분들도 많이 계신데..&lt;br /&gt;
&lt;br /&gt;상대적으로 시간이 많은 학생들이&amp;nbsp;어찌 쉽게 지식을 얻으려고 하십니까!&lt;br /&gt;
&lt;br /&gt;지식적 탐구를 위한 고생을 좀 더 하십시오.. &lt;br /&gt;
문제 해결하는데 시간을 더 쓰세요..&lt;br /&gt;
남이 알려주는 것 보다&amp;nbsp;&lt;br /&gt;
스스로 해결하는데 더 많은 시간을 할애하십시오..&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이건&amp;nbsp;이 분야에 한발짝이라도&amp;nbsp;먼저 접해본 사람으로서 하는 조언입니다.&lt;br /&gt;
&lt;br /&gt;참고로 저는 고수도 아니고 천재도 더더욱 아니고 어디서 잘한다고 내세울 것 없는&amp;nbsp;사람입니다.. &lt;br /&gt;
그냥 카페를 운영하다보니 눈에 띄는 사람이고 그러다 보나 잘하는 것처럼 보이는 사람일&amp;nbsp;뿐 입니다.&lt;br /&gt;
&lt;br /&gt;그래도 이렇게 카페를 운영하면서 여러분들께 가끔 유용한 정보나 강좌의 글을 올릴 수 있는 것은&lt;br /&gt;
많이 알아서 그런게 아니라.. &lt;br /&gt;
많이&amp;nbsp;직접 공부하고 해보았기 때문입니다.&lt;br /&gt;
직접&amp;nbsp;찾고 코드 짜고 회로 구성하고, 테스트하고 안되면 될 때가지 해봤으니까.. &lt;br /&gt;
아는척도 하고 여러분께 정보도 제공할 수가 있는 것 입니다.&lt;br /&gt;
&lt;br /&gt;저도 가끔은 하다가 하다가 안되면 문서도 찾아보고 그래도 정 안되면&amp;nbsp;질문 하겠지요..&lt;br /&gt;
하지만 그렇게 하면서 제 스스로 남은게 참 많습니다.&lt;br /&gt;
그런데 이렇게 하는데도&amp;nbsp;저보다 10살 씩이나 나이가 많은&amp;nbsp;분들이 &lt;br /&gt;
저보다 더 열심히 공부하는 거 보면&amp;nbsp;저도&amp;nbsp;한참 멀었다 생각합니다.&lt;/P&gt;
&lt;P&gt;말이 길었는데..&lt;br /&gt;
&lt;br /&gt;스스로 공부하십시오..&lt;br /&gt;
그리고 누구보다 잘하고 싶다고 생각하신다면..&lt;br /&gt;
최소한 그 누구보다 노력하세요..&lt;br /&gt;
&lt;br /&gt;그러다 보면 여러분은 그 분보다 더 좋은 실력과 &lt;br /&gt;
스스로의 만족감을 얻으실 수 있을겁니다.&lt;/P&gt;&lt;/DIV&gt;&lt;br /&gt;
&lt;br /&gt;인터넷이 발달하고 정보의 교류가 많아서 정보가 넘쳐나고 있습니다. 그러다 보니 뭐든 얻는게 쉬워졌습니다.&lt;br /&gt;
자신이 직접 나서지 않아도 정보가 들어올 정도입니다.&lt;br /&gt;
&lt;br /&gt;그런데 자신의&amp;nbsp;공부 또한&amp;nbsp;남에게 얻으려고 하고 있습니다.&lt;br /&gt;
&lt;br /&gt;공부는 스스로 하는 것에도 불구하고..&lt;br /&gt;
스스로 할 수 있는 것과 스스로 하지 못하는 것을 구분하지 못하고..&lt;br /&gt;
스스로 해결할 수 있는 능력을 스스로 죽이고 있습니다.&lt;br /&gt;
&lt;br /&gt;제가 아는 한 업체에서는 신입 개발자들에게 좋은 공부꺼리를 던져두면..&lt;br /&gt;
어렵다고 모른다고 내팽겨둔다고 합니다.&lt;br /&gt;
&lt;br /&gt;물론 위 사례는 최악의 경우일지도 모르겠지만..&lt;br /&gt;
예비 개발자를 꿈꾸는 학생들이 벌써 부터 인터넷이라는 불안정한 공간에서 남들에게만 의지하니..&lt;br /&gt;
&lt;br /&gt;꼭 그렇지도 않을 것 같다는 생각입니다.&lt;br /&gt;
&lt;br /&gt;이런말을 스스로 하는 저 또한 아직까진 학생입니다만..&lt;br /&gt;
많은 학생들과 예비 개발자들이 조금 더 노력할  수 있기를 기대해봅니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-25-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-25-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-25-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2517869" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>나의 카페운영기</category>
			<category>대학생</category>
			<category>예비개발자</category>
			<category>요술고양이</category>
			<category>조언</category>
			<category>초보개발자</category>
			<category>카페운영기</category>
			<category>하드웨어</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/25</guid>
			<comments>http://openhardware.tistory.com/25#entry25comment</comments>
			<pubDate>Tue, 10 Feb 2009 14:44:03 +0900</pubDate>
		</item>
		<item>
			<title>[Tip&amp;Tech] 4-wire 저항막 방식 터치스크린 컨트롤러 TSC2003</title>
			<link>http://openhardware.tistory.com/24</link>
			<description>&lt;br /&gt;

&lt;P&gt;이전 포스트에서는&amp;nbsp; FET(또는 TR)과 ADC를 이용하여 터치스크린을 쓰는 방법을 올렸는데&lt;br /&gt;
이번엔 TI社의&amp;nbsp;TSC2003라는 컨트롤러를 이용해서 사용하는 법에 대하여.. 아주 간략(?)하게 올려보겠습니다.&lt;br /&gt;
&lt;br /&gt;그럼 먼저 특징부터 살펴보겠습니다.&lt;/P&gt;
&lt;P&gt;◆ &lt;FONT color=#ef007c&gt;&lt;FONT color=#000000&gt;2.5V TO 5.25V OPERATION&lt;/FONT&gt;&lt;br /&gt;
&lt;/FONT&gt;◆ INTERNAL 2.5V REFERENCE&lt;br /&gt;
◆ DIRECT BATTERY MEASUREMENT(0.5V TO 6V)&lt;br /&gt;
◆ ON-CHIP TEMPERATURE MEASUREMENT&lt;br /&gt;
◆ TOUCH-PRESSURE MEASUREMENT&lt;br /&gt;
◆ I2C INTERFACE SUPPORTS:&lt;br /&gt;
◆ Standard, Fast, and High-Speed Modes&lt;br /&gt;
◆ AUTO POWER DOWN&lt;br /&gt;
◆ TSSOP-16 AND VFBGA-48 PACKAGES&lt;/P&gt;
&lt;P&gt;&amp;nbsp;간단하게 살펴보면 2.5~5.25V&amp;nbsp;동작 범위를 가지며, 터치스크린의 좌표뿐만 아니라 온도, 배터리, 터치스크린의 압력까지 잴 수 있다고 하는군요! 그리고 I2C를 이용하여 통신을 할 수 있는 것을 알 수 있습니다.&lt;br /&gt;
&lt;br /&gt;그럼&amp;nbsp;TSC2003의&amp;nbsp;핀 다이어그램을 살펴보겠습니다. 패키지는 TSSOP-16으로 16핀 디바이스인데.. &lt;br /&gt;
저는 점퍼선 날려서 힘들게 납땜하여 사용해보았는데 깔끔한? 마무리와&amp;nbsp;정신건강을&amp;nbsp;위해 변환 기판을 사용하시길 바랍니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/24/tistory/2009/02/09/13/52/498fb686594d5" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/24/tistory/2009/02/09/13/52/498fb686594d5" alt="" filemime="" filename="npe126_rollcake99.jpg" height="216" width="242"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 1] TSC2003 핀 다이어그램&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
&lt;br /&gt;아래는 TSC2003 레퍼런스 회로도 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/32/tistory/2009/02/09/13/52/498fb686c994b" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/32/tistory/2009/02/09/13/52/498fb686c994b" alt="" filemime="" filename="npe128_rollcake99.jpg" height="432" width="640"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 2] TSC2003 레퍼런스 회로도&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;TSC2003은 위 레퍼런스 회로도 구성으로 동작이 잘 되는데, 만약 위의 회로도와 같은&amp;nbsp;저항이 없을 경우.. 대체용으로&amp;nbsp;I2C 핀에는 10 ~ 20k 정도면 될 것 같고.. /PENIRQ 핀의 경우는 데이터시트를 참고하면 30K~100K 범위에서 선택을 하도록 되어있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;휴대용 기기가 아니거나 배터리 측정을 하지 않을 것이라면.. 전원핀을 제외하고 터치스크린과 연결하기 위한 X+, X-, Y+, Y- 핀과&amp;nbsp;I2C 통신용 SCL, SDA 핀과 /PENIRQ핀 정도 사용하면 됩니다. (여기서 /PENIRQ는 PEN INTERRUPT 핀으로.. 터치스크린이 눌렸을 때 0으로 떨어집니다.)&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;만약 한 I2C 버스 라인에 1개 이상 같이 연결할 경우는 A0, A1 핀을 이용합니다. 그렇기 때문에 한 버스라인에 총 4개를 연결 할 수 있겠습니다.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
데이터시트에는 위 컨트롤러의 동작&amp;nbsp;및 원리가 체계적으로 잘 정리 되어있으나 간략(?)한 설명을 위해 모두 생략하고 바로 본론으로 들어가보겠습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;앞서&amp;nbsp;좌표 이외에 온도, 압력등 많은 요소를 부가적으로 측정할 수 있다고 했는데.. 이 모든 것이 ADC를 멀티플렉스로 바꾸어 가며 측정을 하는 것입니다. 좌표 값 또한 ADC를 사용하며.. I2C 통신으로 컨트롤 바이트를 보내주면 해당 값에 따라 ADC가 측정할 핀을 선택하게 되고 그 선택 된 핀의 값을 돌려주게 됩니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그럼 I2C 통신을 하기 위해서.. 컨트롤 바이트나 해당 어드레스 주소를 살펴보겠습니다.&lt;br /&gt;
I2C 통신에 대해 잘 모르시는 분은..&amp;nbsp;&lt;FONT color=#0075c8&gt;&amp;nbsp;&lt;STRONG&gt;참고 :&lt;/STRONG&gt;&amp;nbsp;&lt;/FONT&gt;&lt;A class=con_link href="http://cafe.naver.com/micropic/116" target=_blank&gt;&lt;STRONG&gt;&lt;FONT color=#0075c8&gt;http://cafe.naver.com/micropic/116&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&amp;nbsp;(회원가입 필요)&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;먼저 어드레스 바이트입니다. 어드레스 바이트는 컨트롤러나 디바이스를 선택하기 위한 데이터로 SPI에서는 /CS(칩 셀렉트)핀을 주로 사용한다면.. I2C에서는 어드레스 바이트를 통하여 해당 컨트롤러나 디바이스 선택을 하게 됩니다. I2C에서 보통 주소크기는 7비트나 10비트 이며, TSC2003은 7비트 체계를 사용합니다. &lt;br /&gt;
&amp;nbsp;아래 그림과 같이&amp;nbsp;0번 비트는 읽기/쓰기를 선택하기 위한 비트로써 사용되고 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/36/tistory/2009/02/09/13/52/498fb68851a20" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/36/tistory/2009/02/09/13/52/498fb68851a20" alt="" filemime="" filename="npe12c_rollcake99.jpg" height="125" width="406"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 3] TSC2003 어드레스 바이트&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
TSC2003의 경우는 어드레스 바이트에서 상위 4비트는 1001로 고정되어 있고, 위에 회로도에서 언급했던 A1과 A0핀 연결에 따라 하위 비트들은 가변적이 되겠습니다. 그리고 앞서 언급했던 0번째 비트는 해당 디바이스에서 읽기 작없을 할 것 인지 쓰기 작업을 할 것인지에 따라 값을 바꾸어주며 일반적으로 '1'은 읽기 '0'은 쓰기가 되겠습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그래서 I2C 버스라인에.. 1개의 TSC2003을 사용하고 읽기를 한다고할 경우 0x91(0b10010001) 값을 보내면 됩니다.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;다음은 어드레스 바이트에 이어 컨트롤 또는 커맨드 바이트 입니다.&amp;nbsp;커맨드 바이트는 보통 읽어올 데이터 위치나&amp;nbsp;레지스터를 선택하는데 많이 쓰입니다. TSC2003&amp;nbsp;커맨드 바이트는 아래와 같은 형식을 갖고 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/29/tistory/2009/02/09/13/52/498fb68860f43" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/29/tistory/2009/02/09/13/52/498fb68860f43" alt="" filemime="" filename="npe12e_rollcake99.jpg" height="122" width="402"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 4] TSC2003 커맨드 바이트&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
&lt;STRONG&gt;•&amp;nbsp;C3 - C0&amp;nbsp;:&lt;/STRONG&gt; Configuration bits로 멀티플렉스로&amp;nbsp;ADC 값을 읽어올 부분을 선택합니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/20/tistory/2009/02/09/13/52/498fb688a1330" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/20/tistory/2009/02/09/13/52/498fb688a1330" alt="" filemime="" filename="npe3_rollcake99.jpg" height="247" width="640"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 5] C3 - C0 커맨드 테이블&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;•&amp;nbsp;PD1-PD0 :&lt;/STRONG&gt; Power-down bits로 파워 관련&amp;nbsp;제어&amp;nbsp;및 /PENIRQ, Internal reference, ADC를 ON, OFF 할 수 있으며,&amp;nbsp;설정은 아래와 같습니다. &lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/23/tistory/2009/02/09/13/52/498fb688707c2" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/23/tistory/2009/02/09/13/52/498fb688707c2" alt="" filemime="" filename="npe1_rollcake99.jpg" height="161" width="407"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 6] Power-Down 모드 테이블&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
PD1, PD0 = 0 으로 놓으면 lowest power mode라는데, 터치스크린이 쓸일이 없을 때는 해당 명령을 취해주시면 됩니다. 그리고&amp;nbsp;Internal reference는 ADC 비교전압의 기준을 2.5V로 삼는 것으로 외부 전압이 조금 불안정 하다면 또는 휴대용 기기에서 순간 또는 방전으로 인한 외부 전압강하가 있을&amp;nbsp;시&amp;nbsp;사용하는게 좋지 않을까 합니다.&lt;br /&gt;
&lt;br /&gt;ADC도 보면 ON, OFF를 할 수 있다고 하는데.. 실제적으로 OFF를하고 좌표 측정을 해도 측정이 잘(?) 되는데 데이터 시트에는 It is recommended to set PD0 = 0 in each command byte to get the lowest power consumption possible. 라고 명시되어 있어 배터리나 외부 아날로그 디바이스 측정을 위한 ADC를 꺼두는게 아닐까 합니다.&lt;br /&gt;
&lt;br /&gt;해석에 있어서 개인적으로 명쾌하질 못하기 때문에 이부분에 관하여서는 데이터시트를 참고하시길 바랍니다.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;• M :&lt;/STRONG&gt;&amp;nbsp;Mode bit. 비트로 0일 경우는 12비트 1일 경우는&amp;nbsp;8비트로 ADC가 설정이 됩니다.&lt;br /&gt;
&lt;STRONG&gt;• X :&lt;/STRONG&gt; Don’t care.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;그럼 마지막으로 전체적인 통신 다이어그램을 보고 끝마치겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs13.tistory.com/original/27/tistory/2009/02/09/13/52/498fb688bf8e6" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs13.tistory.com/image/27/tistory/2009/02/09/13/52/498fb688bf8e6" alt="" filemime="" filename="npe7_rollcake99.jpg" height="460" width="640"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 7] TSC2003 통신 다이어그램&lt;br /&gt;
&lt;/P&gt;
&lt;P&gt;&lt;br /&gt;
&lt;FONT color=#e31600&gt;&lt;STRONG&gt;&lt;FONT color=#5b0000 size=+0&gt;&lt;SPAN style="FONT-SIZE: 9pt"&gt;# 참고문헌&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color=#b81818&gt;[1] 데이터 시트 : &lt;/FONT&gt;&lt;/STRONG&gt;&lt;A class=con_link href="http://focus.ti.com/lit/ds/symlink/tsc2003.pdf" target=_blank&gt;&lt;FONT color=#666666&gt;&lt;STRONG&gt;http://focus.ti.com/lit/ds/symlink/tsc2003.pdf&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;FONT color=#b81818&gt;&lt;STRONG&gt;[2] TSC2003&amp;nbsp;제품 페이지 : &lt;/STRONG&gt;&lt;A class=con_link href="http://focus.ti.com/docs/prod/folders/print/tsc2003.html" target=_blank&gt;&lt;FONT color=#666666&gt;&lt;STRONG&gt;http://focus.ti.com/docs/prod/folders/print/tsc2003.html&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/P&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-24-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-24-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-24-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2510128" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>APP &amp; Tech Notes</category>
			<category>TSC2003</category>
			<category>강좌</category>
			<category>요술고양이</category>
			<category>터치스크린</category>
			<category>테크</category>
			<category>팁</category>
			<category>팁&amp;테크</category>
			<category>하드웨어</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/24</guid>
			<comments>http://openhardware.tistory.com/24#entry24comment</comments>
			<pubDate>Mon, 09 Feb 2009 14:07:06 +0900</pubDate>
		</item>
		<item>
			<title>[Tip&amp;Tech] 저항막 방식 4-wire 터치스크린 ADC로 제어하기</title>
			<link>http://openhardware.tistory.com/23</link>
			<description>&amp;nbsp;&lt;br /&gt;

&lt;DIV align=left&gt;&amp;nbsp;터치스크린에는 여러 방식이 있습니다.&amp;nbsp;그 중 보통 값싸고 자주 쓰이는 터치스크린 방식은 저항막 방식입니다.&lt;br /&gt;
대부분 4선을 많이 쓰기 때문에 보통 4선 저항막 터치 스크린이라고 많이 불립니다.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;일반적으로 컨트롤 IC(TSC2003이나 ADS7846 또는 ADS7843)를 사용하면 간편하게 쓸 수 있지만.. 우리는 간단하게 ADC와 TR을 이용해보도록 하겠습니다. 회로는 지니의 LCD 갖구놀기의 &lt;STRONG&gt;dk_sentec&lt;/STRONG&gt;(네이버 아이디)님께서 제공해주신 회로도를 바탕으로 원래는 C1815 자리에 N-채널 FET가 있었지만.. 저는 간편하게 흔히 구할 수 있는 범용 NPN, PNP TR로 구성해 보았습니다.&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;그 대신 &lt;STRONG&gt;dk_sentec&lt;/STRONG&gt;님께서 제공해주신 정보로는 FET대신 일반 TR사용시&amp;nbsp;ADC 입력값이 약 0.5V정도 작아진다고 하였습니다. 그로 인해&amp;nbsp; 감도가 떨어질 수 있으니 유의 하시길 바랍니다.&lt;br /&gt;
&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;원본 사진 : &lt;A class=con_link href="http://cafefiles.naver.net/data26/2007/6/10/112/touch_panel.jpg" target=_blank&gt;&lt;FONT color=#666666&gt;http://cafefiles.naver.net/data26/2007/6/10/112/touch_panel.jpg&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV align=left&gt;&amp;nbsp;먼저 회로도 보시고 저항막 터치 스크린에 대해 간단히 설명드리겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs11.tistory.com/original/24/tistory/2009/02/09/13/37/498fb2f701206" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs11.tistory.com/image/24/tistory/2009/02/09/13/37/498fb2f701206" alt="" filemime="" filename="ts.jpg" height="477" width="640"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;P align=left&gt;&amp;nbsp;위 그림은 제가 구성한 위에는 회로도 입니다. OrCAD Student 버젼으로 LCD도 비스무리 하게 그려봤습니다.&lt;br /&gt;
그리고 아래의 저항막 스크린에 대한 자료 및 그림은 마이크로소프트웨어 2006년 3월호에 연재 된 기사를 참고로 쓰고 그렸음을 먼저 밝힙니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;4선 저항막 터치 스크린은&amp;nbsp;아래 첫 번째 그림과 같이 X(+), Y(+)&amp;nbsp;또는 XP, YP 그리고 X(-), Y(-) 또는 XM, YM 으로 4선의 핀으로 구성되어 있습니다. X 축과&amp;nbsp;Y축은 떨어져 있는 상태이며..&amp;nbsp;만약&amp;nbsp;특정 영역에&amp;nbsp;압력을 가하게 될 경우 X축 저항과 Y축 저항은 맞닿게 되어.. 두 번째 그림과 같이.. 등가 회로가 형성됩니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs11.tistory.com/original/35/tistory/2009/02/09/13/37/498fb2f711d30" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs11.tistory.com/image/35/tistory/2009/02/09/13/37/498fb2f711d30" alt="" filemime="" filename="ts1_1.jpg" height="884" width="533"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;br /&gt;

&lt;P align=left&gt;이렇게 형성되기 위해서는&amp;nbsp;+ 쪽에는 VCC를 - 쪽에는 GND를 연결해주며.. 중간에 눌린 위치로 전압이 흘러 들어 오면.. 이것을 ADC로 캐치하게 됩니다.&amp;nbsp;&lt;/P&gt;
&lt;P align=left&gt;#&amp;nbsp;X 값과 Y 값을 가져오기 위해선 아래와 같은 절차를 다릅니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그전에 맨위의 회로도를 보시면 X(+)에 해당하는 것을 X2 핀에 연결하고.. X(-)에 해당하는 것을 X1에 연결하였는데.. LCD에는 어느 핀이 X+ 인지 X-인지 나와있지 않아서 임의로 연결했습니다. 그러나 저항이기 때문에 방향성이 없기 때문에.. 큰 상관은 없으며.. 테스트 시 별다른 특이사항 없이 잘 동작함을 확인하였습니다. &lt;br /&gt;
&lt;br /&gt;혹시 잘 못 되었다면.. 단순히 연결을 바꾸어 주시면 됩니다.&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;그럼&amp;nbsp; 먼저 &lt;FONT color=#d41a01&gt;&lt;STRONG&gt;X 좌표&lt;/STRONG&gt; &lt;/FONT&gt;ADC 값을 얻기 위해서.. &lt;/P&gt;
&lt;P align=left&gt;(1) X(+)(현재 &lt;STRONG&gt;X2&lt;/STRONG&gt; 핀)에 VCC 전압을 인가합니다. 위의 회로도의 경우는 왼쪽의 X2에 VCC가 들어갈 수 있도록 맨 왼쪽의 PIN0을 LOW로 만들어 줍니다. &lt;/P&gt;
&lt;P align=left&gt;(2) X(-)(현재 &lt;STRONG&gt;X1&lt;/STRONG&gt; 핀)의 경우에는 GND로 만들어 주기 위해 PIN2를&amp;nbsp;HIGH로 해줍니다. 그 다음엔 Y(+)(현재 &lt;STRONG&gt;Y2&lt;/STRONG&gt; 핀, ADC Channel 1)에서 ADC를 읽습니다. 단, Y(-)(현재 &lt;STRONG&gt;Y1 &lt;/STRONG&gt;핀)에는 아무것도 연결 하지 않습니다. 그렇기 때문에 PIN3은 LOW를 유지합니다.&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;요렇게 하면 X 좌표 ADC 값을 얻게 되는 것이고.. Y좌표는 단순히 그 반대로 해주시면 됩니다.&lt;/P&gt;
&lt;P align=left&gt;그럼 간단히 소스로 설명을 드리자면..&lt;br /&gt;
PORTB의 하위 4비트를 X+, Y+, X-,&amp;nbsp;Y- 로 설정하였고..&lt;br /&gt;
ADC는 PORTA의 0번 핀과 1번 핀을 각각 Channel 0과 Channel 1로 보았습니다.&lt;/P&gt;
&lt;P align=left&gt;먼저 포트B를 출력하여 X좌표를 얻을 수 있도록 합니다.&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT color=#177fcd&gt;&lt;STRONG&gt;&amp;nbsp;# CCS-C&amp;nbsp;컴파일러&lt;br /&gt;
&lt;br /&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; portb = 0b00000110;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // xp = 0, yp = 1, xm = 1,&amp;nbsp;ym = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;set_adc_channel(1);&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;X 좌표 값 ADC 채널 설정&lt;br /&gt;
&amp;nbsp; delay_ms(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;채널 변환 시 간혹 값이 튀는 것을 위한 딜레이&lt;br /&gt;
&amp;nbsp;&amp;nbsp;x = read_adc();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 해당 ADC 채널에서 값을 읽어온다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; portb = 0b00001001;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // xp = 1, yp = 0, xm = 0,&amp;nbsp;ym = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;set_adc_channel(0);&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;Y 좌표 값 ADC 채널 설정&lt;br /&gt;
&amp;nbsp; delay_ms(1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;채널 변환 시 간혹 값이 튀는 것을 위한 딜레이&lt;br /&gt;
&amp;nbsp;&amp;nbsp;y = read_adc();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 해당 ADC 채널에서 값을 읽어온다.&lt;/P&gt;&lt;br /&gt;
&lt;br /&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-23-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-23-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-23-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2509971" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>APP &amp; Tech Notes</category>
			<category>CCS-C</category>
			<category>PIC</category>
			<category>강좌</category>
			<category>요술고양이</category>
			<category>저항막방식</category>
			<category>터치스크린</category>
			<category>팁&amp;테크</category>
			<category>하드웨어</category>
			<category>홈브루</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/23</guid>
			<comments>http://openhardware.tistory.com/23#entry23comment</comments>
			<pubDate>Mon, 09 Feb 2009 13:43:27 +0900</pubDate>
		</item>
		<item>
			<title>[Homebrew&amp;Project] 3. TFT-LCD 키패드 - 2월 첫째주 작업현황</title>
			<link>http://openhardware.tistory.com/22</link>
			<description>&lt;P&gt;&lt;br /&gt;
&amp;nbsp;과제가 통과되서 무사히 시작할 수 있게되었습니다!! 하지만 그전에 이미 작업은 조금씩 하고 있었지요..&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;1. TFT-LCD 테스트&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;그전에 하드웨어를 설계하면서 간단하게 Universal PCB에 구성을 하고.. LCD를 테스트 및 터치 스크린 테스트를 했습니다.&lt;br /&gt;
LCD를 테스트 하는데.. 디스플레이 장치로 사용한 M280T1이 약간의 타이밍 문제가&amp;nbsp; 발견되어 수정하는 그 타이밍을 보정하는데 시간이 많이 소요되었습니다.&lt;br /&gt;
&lt;br /&gt;조금 자세히&amp;nbsp;들여다 보면.. 보통 소형 TFT-LCD는 RGB 방식과 CPU(MPU)으로 나뉩니다.&lt;br /&gt;
RGB 방식은 기존의 아날로그 RGB와 비슷하게 Vsync와 Hsync에 맞추어.. &lt;br /&gt;
픽셀의 값을 전달하는 것으로.. ARM9급 이상의 프로세서는 기본적으로 갖추고 있기도한 디스플레이 전용 인터페이스 입니다.&lt;br /&gt;
&lt;br /&gt;그 와 반대로 CPU 방식은 RGB와 같은 특수&amp;nbsp;인터페이스를 갖고 있지 않은&amp;nbsp;&lt;br /&gt;
보통 속도가 낮은 프로세서에서 사용할 수 있는 방법입니다.&lt;br /&gt;
&lt;br /&gt;제가 사용하는 PIC32MX 시리즈 또한 RGB 방식을 사용할 수 없고.. M280T1이 아예 CPU 방식으로 제어할 수 있도록 설계가 되어서.. CPU 방식을 사용합니다. CPU방식은 포트제어를 통한 소프트웨어 방식과 PMP 하드웨어 방식으로 제어할 수 있는데.. 대부분이 포트제어를 통하여 제어를 하지만 저는 PMP를 사용했습니다. (차후 가능하다면 DMA를 위해..)&lt;br /&gt;
&lt;br /&gt;일단&amp;nbsp;CPU 방식의 핀&amp;nbsp;구성을 살펴보면&amp;nbsp;CS, RS, RD, WR, Data[0..15], RESET 입니다.&lt;br /&gt;
이러한 핀은 타이밍을 맞춰주어야 통신을 해야 하는데..&lt;br /&gt;
&lt;br /&gt;타이밍을 살펴보면 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs10.tistory.com/original/22/tistory/2009/02/09/11/19/498f92a8b29cb" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs10.tistory.com/image/22/tistory/2009/02/09/11/19/498f92a8b29cb" alt="" filemime="" filename="타이밍.jpg" height="283" width="637"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;br /&gt;
&amp;nbsp;대부분 타이밍은 상단의 그림과 같으며, M280T1의 컨트롤러 데이터 시트가 대외비라고 써있어.. 부득이하게 직접 그렸습니다. -. -; 위의 타임 다이어 그램은 Graphic RAM에 쓰기를 할 경우 입니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;절차를 간단히 언급하면..&lt;br /&gt;
가장 먼저 CS(Chip Select)를 Low로 만들어 해당 컨트롤러를 사용하겠다고 알려줍니다.&lt;br /&gt;
그리고 커맨드를 쓸 것인지 또는 데이터를 쓸 것인지 결정을 하기 위해서 RS 핀을 Low 또는 High로 둡니다. Low의 경우에는 커맨드를 High의 경우에는 데이터를 씁니다.&lt;br /&gt;
그리고 RD(Read)와 WR(Write)를 Low, High로 클럭을 두어서..&lt;br /&gt;
통신 동기화 및 읽기, 쓰기 작업을 합니다.&lt;br /&gt;
&lt;br /&gt;바로 요런 타이밍만 지켜준다면 LCD에 초기화 과정을 거치고 무난하게 사용이 가능합니다.&lt;br /&gt;
&lt;br /&gt;그런데!&lt;br /&gt;
이 타이밍을 지켜줌에도 불구하고.. M280T1이 정상 출력되지 않았습니다.&lt;br /&gt;
단색이나 그레이 색 그라데이션은 상관이 없는데.. 칼라 16색을 그라데이션 출력 시 사선으로 출력되거나.. &lt;br /&gt;
정상 출력되지 않는 경우가 발생했습니다.&lt;br /&gt;
&lt;br /&gt;정확한 원인을 찾아내기는 어려우나.. 꼼수로.. CS핀과 WR 핀을 변경하면.. 정상 출력 됩니다!! (두둥 -_-;)&lt;br /&gt;
허나 저는 PMP 모듈을 사용하기 때문에.. 이 핀을 바꾸기는 조금 어려운 상태이지요..&lt;br /&gt;
&lt;br /&gt;그 외 프로그래밍 최적화 옵션에 따라서도 출력되는 안정도가 다르고..&lt;br /&gt;
그리고 WR을 제어하는 핀의 출력 파형이 삼각파가 아니고 구형파로 나오는 것을 확인했음에도 불구하고..&lt;br /&gt;
데이터가 살짝 깨지거나 사선으로 출력 되는 것을&amp;nbsp;보면..&lt;br /&gt;
&lt;br /&gt;결론적으로 M280T1은 나름&amp;nbsp;WR 타이밍이 잘 맞지 않는다고 결론을 내렸습니다.&lt;br /&gt;
&lt;br /&gt;일단 일반 포트를 쓰면 PMP 보다는 훨씬 안정적이나..&lt;br /&gt;
일단 그라데이션 출력을 하지 않을 것이라고 생각되기 때문에.. PMP를 그대로 사용할 계획 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;2. Touch Screen Test&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;다음으로는 터치 스크린 컨트롤러 테스트를 했습니다. 이미 TSC2003 이나 ADS7846 등 실제로 많이 쓰이는 컨트롤러를 다 사용해보았기 때문에 별 걱정이 없이 회로룰 구성하고 테스트를 임했습니다.&lt;br /&gt;
&lt;br /&gt;그러나!&lt;br /&gt;
이런 작동이 안됩니다. I2C나 SPI 설정을 못한게 아닌가.. 뒤지고 또 뒤지고.. 처음에 TSC2003으로 하다가... 잘 안되서 ADS7843으로 변경해도.. 동작하기 않습니다. 그러기를 몇일.. 잠정적으로 컨트롤러 IC가 맛이 갔구나라고.. 결론을 내렬려는 찰나.. 동작합니다.&lt;br /&gt;
&lt;br /&gt;이유는 정말 사소? 한건지 모르겠는데..&lt;br /&gt;
지금 현재 사용하는 테스트 보드가 USB 전원을 사용합니다.&lt;br /&gt;
&lt;br /&gt;그런데 작업용으로 쓰는 PC 본체에서 연결하면 안되고.. &lt;br /&gt;
노트북이나 다른 컴퓨터에서 연결하면 사용이 됩니다. &lt;br /&gt;
&lt;br /&gt;좀 이유치고는 황당하긴 했지만..&lt;br /&gt;
예상되는 원인으로는 USB 포트에서 충분히 전류를 공급하지 못해주어서가 아닌가? 라고 예상하고 있습니다.&lt;br /&gt;
&lt;br /&gt;USB는 스펙상으로는 5V, 500mA까지 제공해야하나..&lt;br /&gt;
이 스펙을 맞추지 못하는 USB 호스트도 상당 수 존재합니다.&lt;br /&gt;
(외장 하드디스크에 딸려나오는 케이블이 USB를 양쪽으로 꼽을 수 있게 한 것이 그 이유..)&lt;br /&gt;
&lt;br /&gt;특히, 노트북이 그러한데..&lt;br /&gt;
이번에는 그 반대군요.. 물론 전류 문제가 아닐 확률도 높습니다만 하여간..&lt;br /&gt;
원인을 발견했으니, 앞으로는 본체에 연결하지 못할 듯 싶습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;3. USB 테스트&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;PIC32MX460F512L의 USB를 사용해야하는지라 간단히 테스트 해봤습니다. 이것도 처음엔 잘 안되서 각종 레퍼런스를 뒤져본 결과 USB ID 핀이 그라운드에 물려있어야 되더군요..&lt;br /&gt;
&lt;br /&gt;꽤나 삽질은 했지만.. 펌웨어만 올려주면 USB는 정상적으로 잘 붙습니다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&lt;STRONG&gt;4. 결론&lt;/STRONG&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;br /&gt;
과제 시작 첫 째주에 필수적으로 필요한 기능의 테스트는 모두 끝났기 때문에.. (그 전에 미리 작업해둔 것이 좀 많긴합니다..)&lt;br /&gt;
이번주 부터는 USB 통신을 계속 테스트하고 관련 APP를 통하여 기본 펌웨어 구조를 제작해야 할 것 같습니다.&lt;br /&gt;
&lt;br /&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-22-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-22-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-22-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2509502" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>TFT-LCD Keypad</category>
			<category>PIC32</category>
			<category>삼성소프트웨어멤버십</category>
			<category>요술고양이</category>
			<category>프로젝트</category>
			<category>하드웨어</category>
			<category>홈브루</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/22</guid>
			<comments>http://openhardware.tistory.com/22#entry22comment</comments>
			<pubDate>Mon, 09 Feb 2009 12:23:41 +0900</pubDate>
		</item>
		<item>
			<title>[Homebrew&amp;Project] 2. TFT-LCD Keypad 시작 세미나</title>
			<link>http://openhardware.tistory.com/21</link>
			<description>&lt;P&gt;본 프로젝트&amp;nbsp;시작 세미나를 완료했습니다. &lt;br /&gt;
평가가 아직 나오지 않아 본 프로젝트가 정상 착수 여부가 결정되지 않았지만...&lt;br /&gt;
&lt;br /&gt;시작 세미나를 하면서.. 발표했던 내용을 정리하여 프로젝트의 목표 및 방향에 대해 다시 한번 리마인드~ 하려고 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&lt;STRONG&gt;1. 팀소개&lt;/STRONG&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;br /&gt;
팀명은 무려.. Gee 입니다 -_-; 설마 소녀시대의 그 Gee 냐고요?&lt;br /&gt;
네네 맞습니다 Gee 구요.. &lt;br /&gt;
&lt;br /&gt;-_-; 참고로 제가 지은거 아닙니다. &lt;br /&gt;
프로젝트 서버에 Gee로 같이 프로젝트 하는 회원이 등록을 해버려서.. 그렇게 되었습니다.&lt;br /&gt;
제가 프로젝트 리더를 맡으면서 동시에&amp;nbsp;하드웨어 파트를 그리고 두 회원이 소프트웨어 파트를 나누어 맡고 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;2. 동기 및 목적&lt;br /&gt;
&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
2.1&amp;nbsp;기존의 작품 재구성&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;기존에 이미&amp;nbsp; LCD 보조 키패드라는 프로젝트를 진행했습니다.&amp;nbsp;기존 컨셉과 동일하게 사용자에게&amp;nbsp;편리한 인터페이스를 제공하는 것을 주 목적으로 삼았습니다. 하지만 그&amp;nbsp;당시의 프로젝트는 한달도 안되는 기간동안 진행된 프로젝트이었기 때문에 완성도나 기타 부분에서 부족한면이 많아 아이디어를 그대로 묻어두기는 아깝다고 생각을 했고, 해당 아이디어를&amp;nbsp;재활용하여 더욱 완성도 있는 작품을 만들기로 하였습니다.&lt;br /&gt;
&lt;br /&gt;2.2 편리한 User Interface 제공&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;우리는 보통 PC상에서 다양한 어플리케이션을 사용하는데, 이러한 어플리케이션을 사용하는 방식은 각각 다르고 단축키나 기타 설정이 모두 다릅니다. 이러한 기능을 사용자는 모두 숙지를 하고&amp;nbsp;사용해야하는데, 기본적인 기능 외에는 잘 사용하지 않게 되거나 사용하는데 시간이 많이 걸리는 단점이 있습니다. 그리하여 해당 작품을 통하여 사용자에게 편리한 인터페이스를 제공하고, 이종의 Application 기능을 동일한 인터페이스로 수행 하도록 합니다. 그리고 복잡한 단축키 또는 기능 절차를 간소화하고 기존의 단 방향 인터페이스인 키보드를 보완하여 양방향 인터페이스 제공을 하여, 최종적으로는 각 Application마다 최적화 된 인터페이스 제공하는 것이 주 목적이 되겠습니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;마지막으로&amp;nbsp;USB, 32비트 프로세서 회로설계 및 제어, WPF 및 C# 스터디, OpenAPI 분야를 익히는 기회로 삼으려고 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&lt;STRONG&gt;3. 시스템 구성도&lt;/STRONG&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;br /&gt;
3.1 전체 시스템 구성도&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs12.tistory.com/original/5/tistory/2009/01/30/11/45/498269c23cd5c" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs12.tistory.com/image/5/tistory/2009/01/30/11/45/498269c23cd5c" alt="" filemime="" filename="00.jpg" height="320" width="640"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 1] 전체 시스템 구성도&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;시스템의&amp;nbsp;전체적인 구성은 위 [그림 1] 같이 크게 어플리케이션 부분과 하드웨어 디바이스 부분으로 나눌 수 있습니다. 어플리케이션은 내가 사용할 App를 찾아내고, 관련 세팅을 하고 그에 맞는 이미지나 아이콘 데이터를 LCD로 전송하여 출력하고, 하드웨어 디바이스는 어플리케이션에서 보내준 데이터를 출력하고 터치스크린에서 수집된 좌표 값을 App에 넘기는 작업을 합니다.&lt;br /&gt;
&lt;br /&gt;3.2 어플리케이션 구성도&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs14.tistory.com/original/28/tistory/2009/01/30/11/51/49826b2a57e2f" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs14.tistory.com/image/28/tistory/2009/01/30/11/51/49826b2a57e2f" alt="" filemime="" filename="01.jpg" height="280" width="640"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 2] 어플리케이션 구성도&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;[그림 2] 어플리케이션 구성입니다. 크게 User Assistant 모듈과 E-Picture Frame(전자앨범.. 표기가 맞는지 모르지만), Information Provider까지 3개의 모듈로 나뉩니다. 3개의 모듈에서 User Assistant는 앞서 설명했듯이 사용자에게 최적의 인터페이스 제공을 위한 App 모듈이고, 전자앨범은 말그대로 사진을 출력해주는 그리고 Information Provider는 메일알람이나 시계, 달력, OpenAPI를 통한 날씨 등등의 각종 정보를 출력해주는 모듈입니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;그리고 최하위층에 인터페이스 계층으로 외부 디바이스 또는 사이트에 통신을 하기위하여 USB와 TCT/IP를 사용합니다.&lt;br /&gt;
&lt;br /&gt;3.3 하드웨어 디바이스 구성도&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs14.tistory.com/original/27/tistory/2009/01/30/12/10/49826f9308cfd" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs14.tistory.com/image/27/tistory/2009/01/30/12/10/49826f9308cfd" alt="" filemime="" filename="02.jpg" height="392" width="545"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 3]&amp;nbsp;하드웨어 디바이스&amp;nbsp;구성도&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&amp;nbsp;&lt;br /&gt;
[그림 3]은 하드웨어 디바이스의 구조로서 USB가 가능한 PIC32 MCU와 TFT-LCD 그리고 보조 저장매체로서 SD 카드로 구성되어 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;4.&amp;nbsp;세부 기능 및 특징&lt;/FONT&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
4.1&amp;nbsp;User Assistant&lt;br /&gt;
&amp;nbsp;User Assistant는 각 어플리케이션에 최적화된 인터페이스를 제공하기 위한 App 모듈로서, 제일 먼저 자신이 등록할 App를 선택하여 단축키를 지정하거나&amp;nbsp;키보드 및 마우스 설정을 하는 과정을 거칩니다.&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs12.tistory.com/original/6/tistory/2009/01/30/12/27/4982738933a47" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs12.tistory.com/image/6/tistory/2009/01/30/12/27/4982738933a47" alt="" filemime="" filename="06.jpg" height="312" width="546"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 4]&amp;nbsp;App 등록 및 단축키 설정&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&lt;br /&gt;
&amp;nbsp;반복적으로 자신이 사용할 어플리케이션을 등록하는 과정을 거치면, 다음 부터는 프로세스 모니터링을 통하여 등록한 어플리케이션이 최상위에 떠있을 경우 즉, 사용자가 해당 어플리케이션을 사용하는 상황이 되는 경우 그에 맞는 아이콘 또는 사용자 지정한&amp;nbsp;이미지를 표현해줍니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs12.tistory.com/original/17/tistory/2009/01/30/12/27/4982738946916" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs12.tistory.com/image/17/tistory/2009/01/30/12/27/4982738946916" alt="" filemime="" filename="07.jpg" height="211" width="256"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 5]&amp;nbsp;프로세스 모니터링을 통한 App 발견&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&amp;nbsp;&lt;br /&gt;
그리고 해당 단축아이콘 또는 이미지와 매핑 된 기능 예를 들면, 단축키( Ctrl + A, Ctrl + Shift + C 등등)나 또는 마우스의 움직임, 클릭 등을 해당 App에서 실행되도록 해줍니다. 특히 매크로의 기능은 단축키나 단순 키보드&amp;nbsp;조작으로는&amp;nbsp;불가능한 기능을 가능하게 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;또한&amp;nbsp;제스쳐 기능을 사용하면, 단순히 터치를 하는 수준의 동작을 뛰어넘어 확대, 축소, 스크롤 등이 가능하고 또한 3가지 모듈간 스위칭을 할 수도 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs12.tistory.com/original/16/tistory/2009/01/30/12/27/498273895e63f" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs12.tistory.com/image/16/tistory/2009/01/30/12/27/498273895e63f" alt="" filemime="" filename="08.jpg" height="299" width="209"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 6] 제스쳐 기능&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&lt;br /&gt;
4.2&amp;nbsp;E - Picture Frame&lt;br /&gt;
&amp;nbsp;말 그대로 전자액자로서 간단하게 이미지가 들어있는 폴더를 드래그하는 것 만으로 읽어올 이미지를 리스트화 하여 LCD에 출력하는 기능을 가진 모듈입니다. 최대한 간단하게 사용할 수 있도록 할 예정입니다.&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs15.tistory.com/original/20/tistory/2009/01/30/12/22/49827258b7d89" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs15.tistory.com/image/20/tistory/2009/01/30/12/22/49827258b7d89" alt="" filemime="" filename="05.jpg" height="362" width="590"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;br /&gt;
&amp;nbsp;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림 7] E - Picture Frame 설정&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&lt;br /&gt;
4.3&amp;nbsp;Information Provider&lt;br /&gt;
&amp;nbsp;기타 사용자에게 필요한 정보 등을 제공해주는 App 모듈로서, 달력과 시간 그리고 새로운 메일 도착여부를 알려줍니다. 그리고 Open API 등을 사용하여 날씨나 주식, 뉴스 제목 등 필요한&amp;nbsp;정보를 얻어올 수 있습니다.&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://cfs11.tistory.com/original/34/tistory/2009/01/30/13/01/49827b8034b08" rel="lightbox" target="_blank"&gt;&lt;img src="http://cfs11.tistory.com/image/34/tistory/2009/01/30/13/01/49827b8034b08" alt="" filemime="" filename="09.jpg" height="336" width="627"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: center"&gt;[그림&amp;nbsp;8] Information Provider&lt;br /&gt;
&lt;/P&gt;
&lt;P style="TEXT-ALIGN: justify"&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;&lt;br /&gt;
5. 기존 및 현재&amp;nbsp;시스템 비교사항&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;5.1 기존 LCD 키패드&lt;br /&gt;
(1) MCU&lt;br /&gt;
&amp;nbsp;- dsPIC33FJ256GP710&lt;br /&gt;
&amp;nbsp;- 100핀 디바이스&lt;br /&gt;
&amp;nbsp;- 16비트 데이터 처리&lt;br /&gt;
&amp;nbsp;- 속도: 80Mhz 클럭&amp;nbsp;최대 40MIPS&lt;br /&gt;
&amp;nbsp;- DSP코어 내장으로 음성 및 아날로그 데이터 처리 유리&lt;br /&gt;
&lt;br /&gt;(2) 인터페이스&lt;br /&gt;
&amp;nbsp;- UART&lt;br /&gt;
&amp;nbsp;- 속도가 느림, 단편적인 데이터 전송&lt;br /&gt;
&amp;nbsp;- 에러발생 시 복구 어려움, 소프트웨어적 처리는 가능(오버헤드 증가)&lt;br /&gt;
&lt;br /&gt;(3) 디스플레이&lt;br /&gt;
&amp;nbsp;- TFT-LCD &amp;amp; Touch Screen &lt;br /&gt;
&amp;nbsp;- 2.4', 400 x 240, 65K ~ 240K&amp;nbsp;Color&lt;br /&gt;
&amp;nbsp;- 4-wire 저항막 방식&lt;br /&gt;
&amp;nbsp;- I2C 기반 터치 컨트롤러&lt;br /&gt;
&lt;br /&gt;(4) 어플리케이션&lt;br /&gt;
&amp;nbsp;# User Assistant&lt;br /&gt;
&amp;nbsp;- App 모니터링&amp;nbsp;및&amp;nbsp;수동 App&amp;nbsp;등록&lt;br /&gt;
&amp;nbsp;- 단축키 수동 설정&lt;br /&gt;
&amp;nbsp;-&amp;nbsp;적은 크기의 키코드&amp;nbsp;값 데이터 전송만 가능&lt;br /&gt;
&amp;nbsp;- LCD 디바이스에 이미지 데이터 전송 불가&lt;br /&gt;
&amp;nbsp;- 트레이 기능 없음&lt;br /&gt;
&lt;br /&gt;5.2 새로운 LCD 키패드 2.0&lt;br /&gt;
(1) MCU&lt;br /&gt;
&amp;nbsp;- PIC32MX460F512L&lt;br /&gt;
&amp;nbsp;- 100핀 디바이스&lt;br /&gt;
&amp;nbsp;- 32비트 데이터 처리 &lt;br /&gt;
&amp;nbsp;- 속도:&amp;nbsp; 80MHz, 1.54 DMIPS/MHz&lt;br /&gt;
&lt;br /&gt;(2)&amp;nbsp;인터페이스&lt;br /&gt;
&amp;nbsp;- USB 인터페이스 &lt;br /&gt;
&amp;nbsp;- 에러 처리 및 데이터 신뢰성 보증&lt;br /&gt;
&amp;nbsp;- 에러 발생 시 자동 복구&lt;br /&gt;
&amp;nbsp;- 대용량 데이터 송수신 가능&lt;br /&gt;
&amp;nbsp;- USB 마우스, 키보드 등등 다양한 기능 추가 가능&lt;br /&gt;
&lt;br /&gt;(3) 디스플레이&lt;br /&gt;
&amp;nbsp;- TFT-LCD &amp;amp; Touch Screen &lt;br /&gt;
&amp;nbsp;- 2.8', 320 x 240, 65K ~ 240K&amp;nbsp;Color&lt;br /&gt;
&amp;nbsp;- 4-wire 저항막 방식&lt;br /&gt;
&amp;nbsp;- SPI 또는 I2C기반 터치 컨트롤러&lt;br /&gt;
&lt;br /&gt;(4) 어플리케이션&lt;br /&gt;
# User Assistant&lt;br /&gt;
&amp;nbsp;- App 모니터링 및&amp;nbsp;App 등록(수동 및 자동)&lt;br /&gt;
&amp;nbsp;- 터치스크린 칼리브레이션&lt;br /&gt;
&amp;nbsp;- 단축키 수동 설정 및 자동 추출&lt;br /&gt;
&amp;nbsp;- 터치스크린 제스쳐 기능&lt;br /&gt;
&amp;nbsp;- 마우스 및 키보드 입력&amp;nbsp;녹화 매크로 기능&lt;br /&gt;
&amp;nbsp;- 이미지 합성 및 아이콘 합성하여 LCD로 전송&lt;br /&gt;
&amp;nbsp;- 트레이 기능&lt;br /&gt;
&lt;br /&gt;# 전자앨범 기능&lt;br /&gt;
&amp;nbsp;- 다양한 포맷의 이미지 변환&lt;br /&gt;
&lt;br /&gt;# Information Provider&lt;br /&gt;
&amp;nbsp;- 새 메일 도착 알림 기능&lt;br /&gt;
&amp;nbsp;- 세계 시간 또는&amp;nbsp;달력 등등&amp;nbsp;사용자가 원하는 정보&amp;nbsp;제공&lt;br /&gt;
&amp;nbsp;- Open API를 통한 날씨, 뉴스 등 정보 제공&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;6. 개발 환경&lt;br /&gt;
&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
6.1 Application&lt;br /&gt;
&amp;nbsp;- OS: Windows XP&lt;br /&gt;
&amp;nbsp;- Language: C# .NET Framework&lt;br /&gt;
&amp;nbsp;- Tools: Visual Studio 2005&lt;br /&gt;
&lt;br /&gt;6.2&amp;nbsp;Device&lt;br /&gt;
&amp;nbsp;- OS:&amp;nbsp;Windows XP &amp;amp; Vista&lt;br /&gt;
- Language: MPLAB C32 1.04(C Language)&lt;br /&gt;
- Tools: PICkit2, MPLAB IDE 8.20&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;7. 기대효과&lt;br /&gt;
&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;- USB 개념 확립 및 습득&lt;br /&gt;
&amp;nbsp;-&amp;nbsp;32비트급 PIC32 MCU 회로 설계&amp;nbsp; 및 제어 기술 습득&lt;br /&gt;
&amp;nbsp;- 향후 USB 및 Pheriperal 관련 과제 연계 발판 마련 및 예정&lt;br /&gt;
&amp;nbsp;- Global Hooking, 웹 분야(POP3, OpenAPI) 등등 새로운 분야 학습&lt;br /&gt;
&amp;nbsp;- C#, WPF 프로젝트 적용 및 학습효과 증대&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#5c7fb0&gt;&lt;STRONG&gt;8. 결론 및 발표 후 소감&lt;br /&gt;
&lt;br /&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;제가 이해하고 있는 머릿속의 개념을 누군가에게 전달하는 일은 상당히 어려운 것 같습니다. 나름 충분한 설명을 하고자&amp;nbsp;그림도 많이 준비했었고, 필요한 자료에 대한 용어 설명도 해주었지만 정작 내가 생각하는 프로젝트의 모습과 세미나를 듣고 있는 사람들이 상상하는 프로젝트의 모습은 다른점이 많았습니다. 그리고 상대적으로 하드웨어 파트에 특별한게 없냐느니 또는 소프트웨어 부분에 특별한게 없냐느니.. 말들이 나오는데 너무 자신의 관점으로 보는&amp;nbsp;고정적인 시선으로 인해 이러한 차이는 더욱 크지 않았나 합니다. 해당 프로젝트를 무사히 시작하느냐 마느냐의 갈림길에 서 있지만 만약 시작하게 되다면 이러한 차이를 줄일 수 있도로 결과로써&amp;nbsp;보여줘야하지 않나 싶습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/P&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-21-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-21-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-21-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2450788" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>TFT-LCD Keypad</category>
			<category>PIC</category>
			<category>PIC32</category>
			<category>삼성소프트웨어멤버십</category>
			<category>요술고양이</category>
			<category>자작</category>
			<category>프로젝트</category>
			<category>하드웨어</category>
			<category>홈브루</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/21</guid>
			<comments>http://openhardware.tistory.com/21#entry21comment</comments>
			<pubDate>Fri, 30 Jan 2009 14:31:01 +0900</pubDate>
		</item>
		<item>
			<title>커뮤니티(카페)를 운영하면서 - PIC 마이크로프로세서 카페 개설 동기</title>
			<link>http://openhardware.tistory.com/20</link>
			<description>&lt;br /&gt;
&lt;br /&gt;&amp;nbsp;저는&amp;nbsp;블로그의 포스트 중간중간&amp;nbsp;간간히 언급했듯이.. 마이프로프로세서 개발자 관련 카페를 하나 운영하고 있습니다. 실력이 출중해서 누굴 가르쳐보겠다라고 생각하고 만든건&amp;nbsp;아니고&amp;nbsp; 여러 사람들과 함께&amp;nbsp;공부하고 정보를 나누고자 만든 카페 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;카페&amp;nbsp;개설&amp;nbsp;동기..&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;저는 2005년 전자를 처음 접했습니다. 그 전에 밝혔듯이 저는 전자과 학생도 아니었고 컴퓨터과 학생에.. 특별히 잘하는거 하나없는 평범하고 무능한 복학생일 뿐이었습니다. 그런데 불현듯 조이스틱이 만들고 싶었고 그러다 보니 전자가 하고 싶더군요.. 이전에 과 선배가 만든 탐사로봇이 자극을 한 것도 있었지만 그 당시에는 특별히 감흥을 받지 못하였기 때문에.. 그 이유보다는 그냥 막연한 이유로 전자를 하고 싶었습니다.&lt;br /&gt;
&lt;br /&gt;그래서 복학하자마자 친구가 회장으로 있는&amp;nbsp;마이크로프로세서 개발 관련 동아리에 들어갔습니다.&lt;br /&gt;
가서 친구에게 물어가며, 책 하나 두고 열심히 독학했습니다.&lt;br /&gt;
&lt;br /&gt;빠지기 시작하니 그 재미가 말로 할 수가 없어.. 화장실이랑 밥먹을 때 빼곤 책상앞에 앉아있게 되더군요..&lt;br /&gt;
그런 재미에 푹빠져 살았지만.. 특별한&amp;nbsp;목표가 없어서 그런지&amp;nbsp;한동안 손을 놓기도 했었습니다.&lt;br /&gt;
&lt;br /&gt;그러다가 이제 슬슬 4학년도 되고 다시 시작하려고 하는데.. 이왕이면 공부한 것을 남겨놓으려고 네이버 블로그를 시작했습니다. 그리고 제가 겪은 어려움을 다른 사람들에게 정보를 제공하여 안겪었으면 좋겠다라는 마음도 있었습니다. (처음에 이 분야 공부할 때 얼마나 힘들었던가를.. 알고 있기에..)&lt;br /&gt;
&lt;br /&gt;그 당시 저는 주로 AVR대신 PIC라는 마이크로프로세서를 주로 다루었는데.. &lt;br /&gt;
PIC 관련 자료가 그 당시 AVR에 비해 워낙 미비해서 그런지 제 블로그에서 정보를 얻고 질문이 생기기 시작했습니다.&lt;br /&gt;
&lt;br /&gt;그런데 저도 초보이고 다들 초보이다보니 질문하는게 다 고만고만 하더군요..&lt;br /&gt;
똑같은 질문의 반복에 쪽지로 오는 질문에 답변을 하자하니.. 쪽지 길이는 제한되어 있고..&lt;br /&gt;
점점 힘들다기 보다는 답변을 그냥 지나치기에는 그렇고 귀찮음과 이런저런 일로 인해..&lt;br /&gt;
&lt;br /&gt;이왕이면&amp;nbsp;관련 분야를 모아서&amp;nbsp;질문하면 나도 편하고 똑같은 질문이면 검색하면 되니까.. &lt;br /&gt;
더 효율적이지&amp;nbsp;않을까? 라는 생각에.. 카페 창설을&amp;nbsp;생각했습니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;그러나&amp;nbsp;이전에 PIC 관련 카페가 없었던 것은 아니었습니다.&lt;br /&gt;
&lt;br /&gt;그런 상태에서 카페 창설을 한다는 것 자체가..&amp;nbsp; &lt;br /&gt;
정보의 중복이고 인터넷의 트래픽과 일부 DB를 낭비하는 꼴이라고 저는 생각했습니다.&lt;br /&gt;
(그래 봤자.. 개미 똥구멍만큼 영향도 못 미칠텐데)&lt;br /&gt;
&lt;br /&gt;괜시리 오지랖 넓은&amp;nbsp;고민을 고민을 하던 중.. 기존 PIC 카페가 대부분 거의 고사직전 카페가 많아서..&lt;br /&gt;
&lt;br /&gt;몇일 고민하다가 그냥 과감히 카페를 개설하기로 마음먹었습니다.&lt;br /&gt;
그렇게 탄생한 것이 "Microchip PIC 사용자 커뮤니티" 입니다.&lt;br /&gt;
(현재는 Microchip이 회사명이라.. 이름변경까진 안하고.. Micro PIC 개발자 커뮤니티로 바꾸어 부르고 있습니다.)&lt;br /&gt;
&lt;br /&gt;그 뒤 부터는 블로그 활동을 거의 접고 카페에 자료와 강좌를 게시하면서 운영을 해왔습니다.&lt;br /&gt;
그러다보니 지금은 나름 상당히 큰 카페가 되었고..&lt;br /&gt;
&lt;br /&gt;가볍게 시작했던 카페 운영이 지금은 큰 책임과 의무로 자리잡게 되었습니다.&lt;br /&gt;
&lt;br /&gt;처음에도 생각했던 마음이지만.. 제가 공부한 것과 제가 알고 있는 정보를 공개하는게..&lt;br /&gt;
절대 저에게 해가 되거나 또는 특별한 기술이 공개된다고 생각하지 않습니다.&lt;br /&gt;
카페를 운영하면서 남들에게 조금이나마 도움이 되는게 좋은 일이고..&lt;br /&gt;
그 책임감으로 저 또한 더욱 열심히 공부하게 되고 서로서로 도움이 되는게 아닌가 싶네요~&lt;br /&gt;
&lt;br /&gt;이 포스트는 여기서 마무리 하기로 하고..&lt;br /&gt;
&lt;br /&gt;제가 카페을 개설하면서&amp;nbsp;첫글로 작성했던.. &lt;A href="http://cafe.naver.com/micropic/1"&gt;http://cafe.naver.com/micropic/1&lt;/A&gt;&amp;nbsp;&lt;br /&gt;
카페개설취지를&amp;nbsp;끝으로&amp;nbsp;마치겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;DIV class=txc-textbox style="BORDER-RIGHT: #fe8943 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #fe8943 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #fe8943 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #fe8943 1px dashed; BACKGROUND-COLOR: #fedec7"&gt;&lt;STRONG&gt;개설취지&lt;/STRONG&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;안녕하세요 카페를 개설한 요술고양이입니다.&lt;br /&gt;
&lt;br /&gt;카페를 처음 개설하게 된 배경은 이렇습니다.&amp;nbsp;학교에서 마이크로프로세서를 접해보지 않는 한&amp;nbsp;초보자들에겐 시작하기 너무 어려운 점이 많기 때문에 제가&amp;nbsp;공부한 것들을 정리하는 겸&amp;nbsp;가이드를 제공하는 겸해서&amp;nbsp;블로그를 시작했는데 질문 하시는 분들도&amp;nbsp;계시고 관심 갖아주시는 분도 많아지는 것 같아 질문한 것을 답변하는 공간도 마련하고 많은 사람들과 같이 공부도&amp;nbsp;하려고&amp;nbsp;카페를 개설했습니다!&lt;br /&gt;
&lt;br /&gt;마이크로프로세서 또는&amp;nbsp;하드웨어를 공부하면서&amp;nbsp;국내 포털에서의 자료 부재와 정보 부족 그리고 사람들이 자신이 알고 있는 지식을 얼나마 공개하지 않는가를 뼈저리게 느끼고 있습니다. 대부분은&amp;nbsp;정보를 취득하려고만 하고 내놓질 않아 인터넷이 발달한 지금&amp;nbsp;일부 컨텐츠외엔&amp;nbsp;정보와 자료 부족을 느끼는 것이 현실입니다.&lt;br /&gt;
&lt;br /&gt;일례로 한번은 제가 자료를 얻고자&amp;nbsp;국내 포털에서&amp;nbsp;관련 자료를 검색해보았습니다. 그러나 나오는 것은 대부분 엉뚱한 자료들 뿐이었고.. 단어가 부분 일치하는 사이트도&amp;nbsp;얼마 되지 않아 올바른 자료 하나 구하는 게 쉽지 않았습니다.&amp;nbsp;그래서 구X에서 검색해보니..&amp;nbsp;해당 자료는 물론 그림, 방식 모든 정보를 얻을 수 있었습니다. 단순하게 국내에선 자료가 없다!라는 것을 실감해버렸습니다.&lt;br /&gt;
&lt;br /&gt;물도 고이면&amp;nbsp;썩는다고 했습니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;정보의 교류가&amp;nbsp;멈추어 버리면 그 정보는 죽어버리며, 그렇게 되면 우리는 어디서&amp;nbsp;정보를 얻어야 하겠습니까?&lt;br /&gt;
이미 공개된&amp;nbsp;정보라면 더더욱 알리고 아까운 정보나 자신에게 해가 되지 않는 정보라면 서로 공개하고 나누는 것은 어떨런지요..&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;최소한 배운만큼, 얻은 만큼은 다시&amp;nbsp;베풀 줄 아는 카페iN이 되었으면 좋겠습니다.&lt;br /&gt;
그리고 여유와 정이 넘치는 카페가 되었으면 좋겠습니다. ^^&lt;br /&gt;
&lt;/DIV&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-20-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-20-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-20-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2417485" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>나의 카페운영기</category>
			<category>MCU</category>
			<category>PIC</category>
			<category>매니저</category>
			<category>요술고양이</category>
			<category>카페</category>
			<category>카페매니저</category>
			<category>카페주인장</category>
			<category>커뮤니티</category>
			<category>하드웨어</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/20</guid>
			<comments>http://openhardware.tistory.com/20#entry20comment</comments>
			<pubDate>Fri, 23 Jan 2009 11:02:24 +0900</pubDate>
		</item>
		<item>
			<title>갱신.. 이란게 이런건가?</title>
			<link>http://openhardware.tistory.com/19</link>
			<description>처음 블로그 만들고&amp;nbsp;작성했던 몇개의 포스트가 RSS에 등록이 안되어 있는거 같아서..&lt;br /&gt;
&lt;br /&gt;혹시나 싶어 갱신을 하면 등록될줄 알고&amp;nbsp;수정했더니 -. -&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
말 그대로 갱신이되어서 최근 포스트가 되어버렸네요~&lt;br /&gt;
&lt;br /&gt;이거 어떻게 되돌릴 수는 없는지 ㅜ. ㅜ&lt;br /&gt;
&lt;br /&gt;으.. 블로그 초짜다 보니 실수가 많네요~&lt;br /&gt;
&lt;br /&gt;결론적으로 새로운 내용이 갱신된게 없으니 이전 내용을 또 다시 &lt;br /&gt;
&lt;br /&gt;피딩하신분들께는 죄송합니다~&lt;br /&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-19-0" class="entry-ccl-by" src="http://cfs.tistory.com/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-19-1" class="entry-ccl-nc" src="http://cfs.tistory.com/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-19-2" class="entry-ccl-nd" src="http://cfs.tistory.com/static/admin/editor/ccl_black03.png" alt="변경 금지"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-nd/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class="blogger-news-widget" style="width: 100%; text-align: center"&gt;
		  				&lt;embed src="http://api.v.daum.net/static/recombox1.swf?nid=2397197" quality="high" bgcolor="#ffffff" width="400" height="80" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;div style="margin: 10px 0; padding: 0"&gt;&lt;table style="margin:auto; padding:0; border: none"&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;script type="text/javascript"&gt;
//&lt;![CDATA[
var allbletID='40626';
var allbletLink='http://openhardware.tistory.com/30';
var allbletTags='';
//]]&gt;
&lt;/script&gt;
&lt;script type="text/javascript" src="http://allblet2.allblog.net/allblet2.js"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</description>
			<category>이런저런 이야기</category>
			<category>실수</category>
			<category>요술고양이</category>
			<author>요술고양이</author>
			<guid>http://openhardware.tistory.com/19</guid>
			<comments>http://openhardware.tistory.com/19#entry19comment</comments>
			<pubDate>Tue, 20 Jan 2009 01:23:01 +0900</pubDate>
		</item>
	</channel>
</rss>
