<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2654018561442012665</id><updated>2011-11-18T20:25:54.895+09:00</updated><category term='測定器'/><category term='PONG'/><category term='電源'/><category term='AVR'/><category term='電子工作'/><category term='ベッドライト'/><category term='LED'/><category term='ツール'/><category term='プリント基板'/><category term='DRO'/><title type='text'>作る！マイコンバカHazieのブログ</title><subtitle type='html'>いらっしゃいませ。Hazie(へいじー)と申します。趣味に仕事に活用しているマイコンを使った工作を紹介します。アトメル社の8ビットマイコンAVRシリーズをおもに使います。反響が良ければキットの有償頒布も考えています。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-7465507830344113270</id><published>2009-04-10T16:48:00.005+09:00</published><updated>2009-04-10T20:30:57.749+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='プリント基板'/><title type='text'>Thin Fax Line （Olimexプリント基板発注記２）</title><content type='html'>2月19日 19:00。ツベタンくんから新しい発注書をもらったので、これに必要事項を記入します。記入は発注書PDFをドロー系ソフトに取り込んで、上からテキストを貼り付けました。フォントもタイプライターフォントを使って、いかにもという感じです。決済カードにJCBが使えるってのはよほど日本人客が多いのでしょうか。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/Sd8t3bpvSrI/AAAAAAAAARg/0fVaSv8CezA/s1600-h/olimex_po_3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 301px; height: 400px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/Sd8t3bpvSrI/AAAAAAAAARg/0fVaSv8CezA/s400/olimex_po_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5323023714914093746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;一番下のシグネチャーは手書きで書いて、さあ、FAXです。FAX…国際FAXか！そんなのやったことないぞ。大慌てで国際FAXの仕方を調べて、部屋のFAXから送信！&lt;br /&gt;&lt;blockquote&gt;…プルプル…&lt;br /&gt;&lt;/blockquote&gt;お、かかった。向こうのベルが鳴ってる。&lt;br /&gt;&lt;blockquote&gt;…ブッ、ピーガーピーガー…&lt;br /&gt;&lt;/blockquote&gt;お、ネゴシエーション始めた。行ける！&lt;br /&gt;&lt;blockquote&gt;…ギョワー…&lt;br /&gt;&lt;/blockquote&gt;行ってる行ってる！これで安心。数秒後…&lt;br /&gt;&lt;blockquote&gt;…（シ～ン）…&lt;br /&gt;…ピー。グガガガ（紙の排出される音）。「通信エラー」&lt;br /&gt;&lt;/blockquote&gt;うっそぉ～。途中で通信がぶった切られました。なんでだろう？回線状況がたまたま悪かったのだろう。では、気を取り直してもう一度……全く同じ現象が。困った。ブルガリアまでって通信料金が高い。アメリカに送るのとはわけが違うのです。何度もトライはできない。何しろ回線接続まではできちゃうわけだからその分料金はかかる。コンビニで送るっていう手もあるらしいけど、なんだか癪だし、めんどくさいし、きちんと送れる保証はないし。&lt;br /&gt;&lt;br /&gt;で、思いついたのが、SkypeでFAXできないだろうかということ。Skypeの"SkypeOut"サービスはヨーロッパにあるVoIPゲートウェイから電話回線につなぐことができるから、回線品質は日本から直接つなげるよりもきっとずっといいはずだ。ただし、SkypeOutは安いながらも有料で、「Skypeクレジット」という仮想チケットを前払いで購入しておかなければならない。最低料金は750円ですが、今後も何回かOlimexには発注するかもしれないし、長距離電話をSkypeからかけてもいいし、無駄にはならないと思いました。&lt;br /&gt;&lt;br /&gt;Skype用のアドオン（Skype用語で"Extra"という）で、"&lt;a href="http://www.pamfax.biz/index_ja.php"&gt;PamFax&lt;/a&gt;"というものがすぐに見つかりました。インストールするとプリンタとして登録され、どのソフトウェアからでもPamFaxに向かって印刷をするだけというものです。料金はページごとの課金でSkypeクレジットからの引き落としです。うまく送れた場合のみ課金されるはずで、こちらのリスクは低いと思われます。…が本当にうまくできるかどうか怪しい…。心配しつつもトライすると…&lt;br /&gt;&lt;br /&gt;2月19日 21:30。&lt;span style="font-weight: bold;"&gt;送信成功&lt;/span&gt;です。苦闘2時間半。とりあえずPamFax上では送信完了となりました。送信完了通知をメールで受け取ることもでき、そちらもきちんと通知が来ました。&lt;br /&gt;&lt;blockquote&gt;Hazieさん、.&lt;br /&gt;TSVETAN/OLIMEX (+35932621270) 様宛のPamFaxが送信されました。&lt;br /&gt;ポータル画面でFAXの履歴を見ることができます。&lt;br /&gt;PamFaxをご利用いただきありがとうございます。&lt;br /&gt;PamFax Service より&lt;/blockquote&gt;やった、届いた。届いたはず…だよね？Skypeクレジットは&lt;span style="font-weight: bold;"&gt;119円&lt;/span&gt;だけ減っておりました。これ、たぶん安いよね。ブルガリアだもんね。普通に送ったら大変なことになるよね。（後日、立て続けに2回失敗した国際回線での送信で320円かかったことが判明しました。失敗しただけで1回160円だもんね。成功してても500円超えてたかもなあ。今回はこれでよしと。）&lt;br /&gt;&lt;br /&gt;2月20日 9:30。ツベタンくんに何か反応してもらいたいので確認のメール。12時間前にFAXしたけど届いてる？&lt;br /&gt;&lt;blockquote&gt;Dear Tsvetan,&lt;br /&gt;&lt;br /&gt;I placed the order through fax about 12 hours ago.&lt;br /&gt;Did you receive it? If you didn't do so and inform about it,&lt;br /&gt;I'm ready to re-send it again.&lt;/blockquote&gt;…待てど暮らせど返事が来ない。その12時間後、来ました。&lt;br /&gt;&lt;blockquote&gt;fax received&lt;br /&gt;&lt;/blockquote&gt;そ、そんだけかよ？1行だけ？文にもなってないよ？返事が遅くなってすみませんとかもなしかよ。ちょっと憤りを覚えつつも一安心。まあ、忙しいんだろうけどさ。分かってあげようか。FAXが届く＝注文完了なので、製造が始まるわけですが、一番安いコースの"3-5 working days"なので1週間くらいは見ておきましょう。&lt;br /&gt;&lt;br /&gt;3月3日 2:00。キター。ツベタンくんからメール！&lt;span style="font-weight: bold;"&gt;FAX入れてから12日だ。&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;shipped&lt;br /&gt;&lt;/blockquote&gt;また1行野郎だ、コノヤロー。でも出荷されたのね。よかったよかった。しかし、時差を考慮しても&lt;span style="font-weight: bold;"&gt;6 working days&lt;/span&gt;かかっとるな。まあ、仕事じゃないから我慢しよう。その分安いんだから。&lt;br /&gt;&lt;br /&gt;さて、無事にツベタンくんの手を離れて、ブツは国際エアメールのパフォーマンスにゆだねられました。いつ届くのか？こいつも怪しい。&lt;br /&gt;&lt;br /&gt;3月16日…ポストイン。待ちましたよー、待ちました。首がこんなに長くなっちゃったよー。&lt;span style="font-weight: bold;"&gt;13日かかった。&lt;/span&gt;ほんとにエア？なのか？1週間、長くて10日くらいに想像してたのに甘かった。で、記念撮影。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/Sd8YrV77iEI/AAAAAAAAARI/8l-Zilb6jTk/s1600-h/olimex_packet.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/Sd8YrV77iEI/AAAAAAAAARI/8l-Zilb6jTk/s400/olimex_packet.jpg" alt="" id="BLOGGER_PHOTO_ID_5323000417477167170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;中身は3枚まとめてシュリンクラップしてありました。そうか、金フラッシュ仕上げだったのか。半田レベラーにしてもっと安くなんないかな…。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/Sd8YrT7kkAI/AAAAAAAAARQ/sA0A0cRAyxo/s1600-h/olimex_pcb.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 165px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/Sd8YrT7kkAI/AAAAAAAAARQ/sA0A0cRAyxo/s400/olimex_pcb.jpg" alt="" id="BLOGGER_PHOTO_ID_5323000416938790914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ということで、めでたく完成！いきなりジャンパ入ってますが…。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/Sd8nLaH94DI/AAAAAAAAARY/fGM882EoAug/s1600-h/dro3-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 286px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/Sd8nLaH94DI/AAAAAAAAARY/fGM882EoAug/s400/dro3-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5323016361519996978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;※PamFaxのインストールと使い方が分かりやすく載ってるページが&lt;a href="http://blog.livedoor.jp/ak123/archives/51532903.html"&gt;こちら&lt;/a&gt;にありましたので紹介しておきます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-7465507830344113270?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/7465507830344113270/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=7465507830344113270' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/7465507830344113270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/7465507830344113270'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/04/thin-fax-line-olimex.html' title='Thin Fax Line （Olimexプリント基板発注記２）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/Sd8t3bpvSrI/AAAAAAAAARg/0fVaSv8CezA/s72-c/olimex_po_3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-836446902724064980</id><published>2009-04-09T18:24:00.013+09:00</published><updated>2009-04-10T08:44:30.875+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='プリント基板'/><title type='text'>よし、ブルガリアにしよう。（Olimexプリント基板発注記１）</title><content type='html'>前から気になっていました。東欧のある国には激安でプリント基板を作ってくれる業者があるのです。その名は&lt;a href="http://www.olimex.com/pcb/index.html"&gt;Olimex&lt;/a&gt;（たぶんそのまま「オリメックス」と読むのでしょう）。所在地はブルガリア…ブ、ブルガリア？どこ？ヨーグルトの国としか認識していませんでした。それでもトラ技に紹介されていたり、検索すれば多くの&lt;a href="http://www.nori-net.mydns.jp/triflingtoys/products/geek/olimex/order_1st.html"&gt;日本人がトライ&lt;/a&gt;していたり、もうずいぶん有名になりました。「TinyでDRO！」の基板はXYZ軸で3枚いるし、手張りだとLEDの配線が手間だし、密度も高くないし、ここのところ空前の円高ユーロ安だし、今まさにブルガリアを試してみるチャンス。Eagle（回路CAD）のファイルがそのまま使えるのもうれしい。今回はそのOlimexにDROの基板を発注して届くまでの顛末を書こうと思います。&lt;br /&gt;&lt;br /&gt;発注前。EagleでDROのパターン設計を終える。今回はOlimex言うところの"DSS"サイズ、すなわち両面板のユーロカードサイズ160mm×100mmにジャスト3枚面付け（同じパターンを1枚の基板に割りつけること。英語で"panelize"）することにしました。Olimexは既定のカードサイズ以内なら無料で面付けして、希望によりカット("de-panelize")もしてくれるのです。私なりに要点をまとめたので紹介します。&lt;br /&gt;&lt;blockquote&gt;注文を意識した設計のTIPS&lt;br /&gt;&lt;br /&gt;[1] 基板外形サイズを160mm×100mm以内に入れる。外形線は10milの幅で引き、面付けする場合には切り代を10milとる。&lt;br /&gt;[2] OLIMEX用DRCを走らせる。DRCエラーを修正する。&lt;br /&gt;[3] 非標準ドリルを抽出する。&lt;a href="http://www.geocities.jp/p400w/060_eagle2/0_OLIMEX_LIB2.zip"&gt;0_OLIMEX_DRILL.ulp&lt;/a&gt;を実行。現在プロジェクトの直下にできるOLIMEX_DRILL.scrを実行。&lt;br /&gt;[4] ドリル径をOLIMEX仕様に標準化する。&lt;br /&gt;ライブラリに標準ドリル版のパッケージを追加する。&lt;a href="http://www.geocities.jp/p400w/060_eagle2/0_OLIMEX_LIB2.zip"&gt;0_OLIMEX_LIB.ulp&lt;/a&gt;を実行。変更を受けるライブラリを指定。現在プロジェクト直下にできるOLIMEXLIB.scrを実行。ライブラリを保存。基板エディタでライブラリをアップデート。ドリル変更をするすべてのパーツでパッケージ変更（change package)。&lt;br /&gt;[5] シルク幅の変更。&lt;a href="http://www.olimex.com/pcb/OlimexAllSilk.ulp"&gt;OlimexAllSilk.ulp&lt;/a&gt;を実行。すべて10mil幅になる。&lt;br /&gt;[6] ドリル穴数のカウント。drillinfo.ulpまたはcount.ulp（面付け後500穴を超えると割増料金）&lt;br /&gt;[7] 半田マスク層(tStop, bStop)を含めてOLIMEXが使うすべての層に任意の文字列を入れる。基板外形の外でよい。（これを自動化するスクリプトがあるらしいが、当時存在を知らなくて使わなかった。）&lt;br /&gt;[8] .brdファイルとREADME.TXTファイルをZIP圧縮する。&lt;br /&gt;[9] ZIPファイルを添付して注文メールを送る。データの出し直しは3ユーロのペナルティを取られる。&lt;/blockquote&gt;&lt;br /&gt;2月18日。上記[8]のZIPファイルを添付して、最初のメールを送る。&lt;blockquote&gt;From: hazie@mydomain.jp&lt;br /&gt;To: fastpcb@olimex.com&lt;br /&gt;Subject: PCB ORDER&lt;br /&gt;---&lt;br /&gt;Dear&lt;br /&gt;&lt;br /&gt;I would like to order PCB with attached files.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Hazie&lt;br /&gt;&lt;/blockquote&gt;これだけ。本当にこんなんで大丈夫か？かなり心配する。&lt;br /&gt;すると、発信からたった45分で返信が来た。&lt;br /&gt;&lt;blockquote&gt;From: "Olimex Ltd Support" &lt;support@olimex.com&gt;&lt;br /&gt;To: hazie@mydomain.jp&lt;br /&gt;Subject: Re: PCB ORDER&lt;br /&gt;---&lt;br /&gt;Hi&lt;br /&gt;attached is your po form&lt;br /&gt;Best regards&lt;br /&gt;Tsvetan / Olimex&lt;/support@olimex.com&gt;&lt;/blockquote&gt;ををっ！早い！担当者は"Tsvetan"…「ツベタン」ですね。かの有名な「ツベタン」くんとはキミか。発注書が添付されているので中を見ると…&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/Sd3WSoF9cSI/AAAAAAAAAQw/lQK6Bvcf4k4/s1600-h/olimex_po_1.jpg"&gt;&lt;img style="cursor: pointer; width: 311px; height: 400px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/Sd3WSoF9cSI/AAAAAAAAAQw/lQK6Bvcf4k4/s400/olimex_po_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5322645950110200098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;45.5ユーロね。ん？こちらの見積りよりちょっと高いな。あれ？"Non Standard drill sizes    4pce    Euro 4.00"って何？非標準のドリルが4種類もあるって。実は、この時点ではドリル径の標準化を知らずに発注してしまったのでした。うーん、このまま発注すれば4ドルのプラス、修正して出し直せば3ドルのプラス。これは、修正したほうがわずかに安く済むな。もしかしたら、初めてってことで無償で対応してくれたりして…と淡い期待をいだきつつ、ネット情報で確認しつつ修正です。&lt;br /&gt;&lt;br /&gt;2月19日、（こちらの）朝一。修正しますとツベタンに一報。&lt;blockquote&gt;Dear Tsvetan,&lt;br /&gt;&lt;br /&gt;I have to say I'm sorry that I attached wrong data.&lt;br /&gt;I didn't check enough for your standard drill sizes.&lt;br /&gt;The data standardized will be made and I will place another order.&lt;br /&gt;&lt;/blockquote&gt;ごめんね、チェック不足で間違っちゃったから、すぐに直すねって、かわいく聞こえただろうか？んなわけないなぁ…。&lt;br /&gt;&lt;br /&gt;その日の昼前、11時ごろ、修正済みファイルを添付して送信。&lt;br /&gt;&lt;blockquote&gt;I would like to order PCB with attached files.&lt;br /&gt;Please cancel previous order PO#xxxxxxx and send another PO form.&lt;br /&gt;&lt;/blockquote&gt;今度は4時間半後。ツベタンから返事が。&lt;br /&gt;&lt;blockquote&gt;Hi&lt;br /&gt;please note in this case file re-processing charge EUR 3.00 will be add to your order&lt;br /&gt;Thanks&lt;br /&gt;Tsvetan&lt;/blockquote&gt;ううぅ、許してくれなかった…無慈悲にも追加料金が。まあ、こちらが悪いのであきらめて…&lt;br /&gt;&lt;blockquote&gt;Dear Tsvetan,&lt;br /&gt;&lt;br /&gt;Oh, I didn't know it. But I agree re-processing the data with the extra-charge EUR 3.00. Please send another PO.&lt;br /&gt;&lt;br /&gt;I will be more careful next time. Thanks.&lt;/blockquote&gt;即、受け入れることにしました。今読むとここまでへりくだる必要はないかも。&lt;br /&gt;&lt;br /&gt;その3時間後、例のそっけない文面で新しい発注書が届いた。&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/Sd3Rsn4PBAI/AAAAAAAAAQo/YX49qOXD_K0/s1600-h/olimex_po_2.jpg"&gt;&lt;/a&gt;&lt;blockquote&gt;Hi&lt;br /&gt;attached is your po form&lt;br /&gt;Best regards&lt;/blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/Sd3Wkk_fjrI/AAAAAAAAAQ4/DWBv0VwueXs/s1600-h/olimex_po_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 148px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/Sd3Wkk_fjrI/AAAAAAAAAQ4/DWBv0VwueXs/s400/olimex_po_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5322646258515414706" border="0" /&gt;&lt;/a&gt;キミは無口だなあ。ま、"Best regards"がついているだけいいか。ちなみに、修正したデータの場合は注文番号に「X」がつくようです。なんか落第点とったみたいでへこむなあ。でもきっちり1ユーロ安くなりました。&lt;br /&gt;&lt;br /&gt;さあ、ここからまた一騒動ありました。つづきは次回へ。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-836446902724064980?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/836446902724064980/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=836446902724064980' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/836446902724064980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/836446902724064980'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/04/olimex.html' title='よし、ブルガリアにしよう。（Olimexプリント基板発注記１）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/Sd3WSoF9cSI/AAAAAAAAAQw/lQK6Bvcf4k4/s72-c/olimex_po_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-4385146657190807086</id><published>2009-04-02T14:05:00.012+09:00</published><updated>2009-04-02T17:36:43.661+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='ツール'/><title type='text'>タイミングチャートの作図ツール</title><content type='html'>この手のブログで避けて通れないのがタイミングチャートによる説明です。クロックなどの繰り返し波形あり、波形のエッジの前後関係の厳密さあり、論理反転した波形ありでソフトウェアツールによる作図が最適と思えます。&lt;br /&gt;&lt;br /&gt;PowerPointとかVisioを駆使して作図するのも疲れるので、巷の人たちはどのようなツールを使っていらっしゃるのだろうと調べてみましたが、あまり決定番ってないんですね。Excelのマクロなども含め、フリーのツールもいくつか（国産２つ、海外産２つ）試してみましたが、どうもぴったりしたのがない。結局は等幅フォントを使ったプレーンテキストで描くのが一番早くて楽だったり、何しろ何でも描けて自由ですから。で、このブログではいまだにテキストで描いたものを張り付けている次第なんですが…。&lt;br /&gt;&lt;br /&gt;今回は試したフリーのツールの中で一番よくできていたものを紹介します。"TimingTool"というそのものずばりの名称で、"MOHC Ltd."という---おそらく英国の会社・詳細不明---の製品が商品化されており、その試用版"TimingTool Lite"がそれです。&lt;a href="http://www.timingtool.com/tt_lite"&gt;リンクはここから&lt;/a&gt;。とりあえずスクリーンショットを見てみましょう。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SdROSSazKiI/AAAAAAAAAQI/xuLN81YuUU8/s1600-h/TimingToolOnline.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 310px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SdROSSazKiI/AAAAAAAAAQI/xuLN81YuUU8/s400/TimingToolOnline.png" alt="" id="BLOGGER_PHOTO_ID_5319963135920253474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;なかなか本格的な面構え。製品版とほとんど同じなので当たり前ですが。今回のDROのタイミングチャートを書くのに使おうと思って、途中まで入力してみたものです。どんな特徴があって製品版と何が違うか。&lt;ul&gt;&lt;li&gt;Java-Appletでオンラインで動くのでダウンロード、インストール不要。とりあえず動かすのにはユーザ登録も不要。&lt;/li&gt;&lt;li&gt;ユーザ登録をすれば専用のワークスペースを先方のサーバー上に作ってくれ、データをワークスペース上に保存しておける。&lt;/li&gt;&lt;li&gt;試用期間に制限はない。（この製品が存続する限り？）&lt;br /&gt;&lt;/li&gt;&lt;li&gt;製品版ではタイミング解析とかその他の高級な機能（HDLツールやマクロ）が使えるが、これは使えない。それ以外の機能は"lite"でも変わらない（らしい）。&lt;/li&gt;&lt;li&gt;デジタルの波形のみ。アナログ波形は不可。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;波形の形状がわりときれい（主観です）。&lt;/li&gt;&lt;li&gt;印刷出力もしくはエクスポート出力には必ず"TimingTool"のロゴが入る（製品版は不明）。下は印刷プレビューのショット。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SdRSmdUZ5tI/AAAAAAAAAQQ/y_0UTbDkDl4/s1600-h/TimingToolOnline_preview.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 259px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SdRSmdUZ5tI/AAAAAAAAAQQ/y_0UTbDkDl4/s400/TimingToolOnline_preview.png" alt="" id="BLOGGER_PHOTO_ID_5319967880490116818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;エクスポートのフォーマットは↓こんな感じ。ただし、長ーい周期をズームアウトして１枚にまとめたりするとき波形がつぶれます。そのつぶれ方がちょっと変。なるべく波形をつぶさない大きさで出力するべし。これは印刷も同じ。&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SdRUIMIuuCI/AAAAAAAAAQY/FKlgaypbIPk/s1600-h/TimingToolOnline_format.png"&gt;&lt;img style="cursor: pointer; width: 313px; height: 265px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SdRUIMIuuCI/AAAAAAAAAQY/FKlgaypbIPk/s400/TimingToolOnline_format.png" alt="" id="BLOGGER_PHOTO_ID_5319969559504926754" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;コメントやテキストの入力では、下付き文字、上付き文字、オーバーバーなど文字の装飾がいろいろ選べるが、日本語は入らない。化けるんじゃなくて、そもそも入力できない。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;UIがかなり特殊な部類。エッジの左をクリックしたときと右をクリックしたときで挙動を変えるとか。右をちょっと長めにクリックしっぱなしにすると別のメニューが出るとか。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Javaベースなので動きはちょっと遅め。サーバーも重め。&lt;/li&gt;&lt;/ul&gt;上にも書きましたがUIがちょっと特殊なので、波形のコピーとかやり方をマスターするのに苦労しました。ディレイやセットアップ／ホールドなどのパラメータをきっちり入れることもできますが、今回はそこまで試しませんでした。でも、使いこなせばかなり高度なことができそうなので、試す価値はあると思います。（なにしろタダですから！）&lt;br /&gt;&lt;br /&gt;なお、日本では一般に「タイミング図」や「タイミングチャート」などと言いますが、ググった感じ、英語では"Timing Diagram"というほうが通りがいいようです。検索の参考までに。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-4385146657190807086?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/4385146657190807086/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=4385146657190807086' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/4385146657190807086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/4385146657190807086'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/04/blog-post.html' title='タイミングチャートの作図ツール'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/SdROSSazKiI/AAAAAAAAAQI/xuLN81YuUU8/s72-c/TimingToolOnline.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-3796884694222659126</id><published>2009-04-01T14:44:00.012+09:00</published><updated>2009-04-01T20:03:29.184+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでDRO!（ソフトウェア２）</title><content type='html'>データの頭出しは、データ送出の時間間隔が約0.3秒開いているという仕様に頼ります。&lt;span style="font-weight: bold;"&gt;約&lt;/span&gt;0.3秒と仕様にしてはやや甘いので、実際のプログラムでは「0.25秒以上開いたら」という条件に置き換えます。&lt;br /&gt;&lt;br /&gt;このタイミングはTimer1を使って計ります。システムクロックを256分周した周波数でカウントアップします。カウントアップの最大値が0.25秒で訪れるように比較一致レジスタOCR1Aを設定し、最大値に達したら自動ゼロクリアするようにCTC動作にします。&lt;br /&gt;&lt;br /&gt;下図のタイミングチャートでは、データビットの送出タイミングに合わせてTimer1のカウント値がどのように変化するかを示しています。「絶対座標のデータ」または「相対座標のデータ」の下の部分を見て分かる通り、データビットを取り込むタイミング（INT1のハンドラ内）でTimer1をクリアしています（図の「エッジ割り込みでクリア」と書いてある部分）。0.25秒未満の短い間隔では決して最大値には達しません。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SdMUhUYDnVI/AAAAAAAAAP8/iuqk-g9YdeU/s1600-h/dro_timing_timer.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 102px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SdMUhUYDnVI/AAAAAAAAAP8/iuqk-g9YdeU/s400/dro_timing_timer.png" alt="" id="BLOGGER_PHOTO_ID_5319618147492535634" border="0" /&gt;&lt;/a&gt;ところが、データを送出し終わってしばらくデータが来ないとTimer1を強制クリアする機会がなく、そのまま増加し続け、0.25秒経過の後ついには最大値＝比較一致レジスタの値に達します（図の「比較一致」）。つまり、この時点でデータの区切りが訪れたと認識するのです。プログラムでは比較一致割り込みを起こさせるようにしてあり、そのハンドラの中でバッファポインタを先頭に持ってくる、つまりデータの頭出しをすることになります。以下は再び"interrupt.c"の該当部分です。（行間が空いているのはCPUタイプによるIF-DEFを消して見やすくしたためです。）&lt;br /&gt;&lt;pre name="code" class="c:nocontrols:firstline[60]"&gt;&lt;br /&gt;// スケールのデータ送信間隔を測る&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ISR(TIMER1_COMPA_vect)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;  Rbufp = Rbuf; /* バッファポインタを先頭へ */&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-3796884694222659126?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/3796884694222659126/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=3796884694222659126' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/3796884694222659126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/3796884694222659126'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/04/tinydro.html' title='TinyでDRO!（ソフトウェア２）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SdMUhUYDnVI/AAAAAAAAAP8/iuqk-g9YdeU/s72-c/dro_timing_timer.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-6257128817069256619</id><published>2009-03-27T21:15:00.029+09:00</published><updated>2009-04-02T13:47:35.616+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでDRO!（ソフトウェア１）</title><content type='html'>ソフトウェアの説明です。例によってSourceForgeで公開します。&lt;br /&gt;&lt;br /&gt;&lt;script src="http://sourceforge.jp/projects/hazie-dro2313/releases/compact.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;br /&gt;ヒューズの設定はZIPファイルの中のFuseMapping.jpgにAVRStudioの（中のAVRProgの）設定画面のスクリーンショットを入れてありますので参考にしてください。また、ソースコード中にもコメントで書き込んであります。要は内蔵RC発振器をONにして、1/8分周をOFFにするということです。&lt;br /&gt;&lt;br /&gt;今回のプログラムの要点は、スケールから送られてくるデータをクロックに同期して取り込むこと、そして直列で送られてくるデータを切り出し---つまり頭出し---することです。&lt;br /&gt;&lt;br /&gt;まずマクロな視点から。データブロックは約0.3秒の間隔でスケールから出力されています。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SdFqzIGE9lI/AAAAAAAAAPY/5QvrAEC576U/s1600-h/dro_timing_data_interval.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 84px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SdFqzIGE9lI/AAAAAAAAAPY/5QvrAEC576U/s400/dro_timing_data_interval.png" alt="" id="BLOGGER_PHOTO_ID_5319150061480113746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;クロック（CLK）は出っぱなしではなく、データ（DATA）が送られるときのみ出ているのが分かります。クロックが出ていないときは論理"0"（-1.5V電位）にスタックしています。データブロックの部分をクローズアップしてみます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SdFqzWTDSCI/AAAAAAAAAPg/QX8DspN8NfU/s1600-h/dro_timing_data_structure.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 62px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SdFqzWTDSCI/AAAAAAAAAPg/QX8DspN8NfU/s400/dro_timing_data_structure.png" alt="" id="BLOGGER_PHOTO_ID_5319150065292625954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;クロックはデータ出力開始直前に"1"（GND電位）となり、しばらくしてからクロッキングを始めます。クロック周期は約12usですので、周波数にすると約83kHzです。&lt;br /&gt;&lt;br /&gt;データは2種類送られてきます。先に絶対座標のデータ、後に相対座標のデータです。絶対座標はそのスケール固有の位置情報で、原点が絶対にずれることはありません。相対座標はスケールのゼロクリアボタンを押すごとに原点を設定するもので、通常はこちらが使われることになります。&lt;br /&gt;&lt;br /&gt;これらのデータは24ビット長で、クロックパルスに同期して順次最下位ビットから送り出されます。図でA0～A23が絶対座標、R0～R23が相対座標です。R24（ダミー）と書いてあるビットがありますが、これは本来は取り込まないビットで、後ほど説明します。&lt;br /&gt;&lt;br /&gt;図で分かる通りクロックの立下りエッジでデータを取り込むとよさそうな感じです。実際のプログラムでは、AVRに入ってくるときにレベルシフタにより&lt;span style="font-weight: bold;"&gt;論理反転していますので、クロックの立ち上がりエッジで捉える&lt;/span&gt;ことにしています。ここでファイル"interrupt.c"の該当部分。（コメント部分で改行されてしまい読みにくいのでコメントをちょっといじってあります。）&lt;br /&gt;&lt;pre name="code" class="c:nocontrols:firstline[49]"&gt;&lt;br /&gt;// スケールからのデータ取り込み。検出エッジは立上がりエッジ。&lt;br /&gt;ISR(INT1_vect)&lt;br /&gt;{&lt;br /&gt;*Rbufp++ = SCALE_PIN; /* 読んでバッファにためる */&lt;br /&gt;if (Rbufp &gt;= Rbuf + sizeof(Rbuf)) {/*バッファ端*/&lt;br /&gt;   Rbufp = Rbuf + sizeof(Rbuf) - 1;&lt;br /&gt;   Updated = 1;    /* main()に更新を通知 */&lt;br /&gt;}&lt;br /&gt;TCNT1 = 0;      /* 送信間隔タイマーをクリア */&lt;br /&gt;}&lt;/pre&gt;INT1は立ち上がりエッジを検出するように設定されています。重要なことは割り込みセンスから割り込みプログラムが起動されるまでの時間がかなりかかることです。あまり時間がかかるとデータを読みそこなってしまいます。割り込み処理のシーケンスは、&lt;br /&gt;&lt;ol&gt;&lt;li&gt;INT1エッジ認識&lt;/li&gt;&lt;li&gt;割り込みハンドラに分岐&lt;/li&gt;&lt;li&gt;使用するレジスタ群を退避&lt;/li&gt;&lt;li&gt;ユーザの定義した割り込み処理プログラムを実行&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;上記の1.から2.までで約4クロックかそれ以上かかり、これはAVRハードウェアによるオーバーヘッドですので回避不能です。3.はコンパイラの出力するコードによるオーバーヘッドが含まれ、アセンブラで書かない限りは制御はやっかいです。コンパイラのアセンブラ出力を見るとここに16クロックかかっていることが分かります。そこでこの割り込み処理では、スケールのDATAがつながっている入力ポート（上記リストの"SCALE_PIN"＝PIND）を何はともあれ読み込んで、バッファにためることだけを行っています（52行目）。その際にそのビットを抽出するなど余計なことはやっていません。ちょっとでも複雑なことをしようとすると、コンパイラはためらうことなくたくさんのレジスタを使おうとして、それらを退避するコードを割り込み処理の冒頭に突っ込んでくるからです。&lt;br /&gt;&lt;br /&gt;今回データ読み込みはすべてクロックの立ち上がりエッジ（タイミング図上では立下り）で検出しているので、前出のタイミング図では、データ送出終わった後にクロックが"0"スタックする時点でもうひとつ検出エッジが来てしまいます。これが「R24（ダミー）」と書いてあるゆえんです。プログラムではこの部分も愚直に読み込んでしまうことで、割り込みプログラム中の無用な条件判定を回避しています。読み込んだとしても値を集計するときに使わなければいいのです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-6257128817069256619?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/6257128817069256619/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=6257128817069256619' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6257128817069256619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6257128817069256619'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/03/tinydro_27.html' title='TinyでDRO!（ソフトウェア１）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pu3jRc33fFQ/SdFqzIGE9lI/AAAAAAAAAPY/5QvrAEC576U/s72-c/dro_timing_data_interval.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-4845571907509229744</id><published>2009-03-25T16:36:00.007+09:00</published><updated>2009-03-31T11:05:49.650+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでDRO!（ハードウェア２）</title><content type='html'>このプロジェクトで何が一番難しかったかって、デジタルスケールにどうやってケーブルを接続するか考え出すことでした。プラグインできる汎用のコネクタなどありませんし、かといってケーブルをじかに出すのは気が引けるし。逡巡したあげく結局どこかのサイトで見た、コネクタヘッダをはんだ付けする方法を取りました。出来上がりはこんな風になります。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/ScniGbTkUGI/AAAAAAAAANk/e1AT9wkalFY/s1600-h/dro9-2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 246px; height: 240px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/ScniGbTkUGI/AAAAAAAAANk/e1AT9wkalFY/s320/dro9-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5317029435124502626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;スケールを完全に分解する改造です。メーカー保証はあきらめましょう。分解して基板をむき出しにしたら基板用コネクタヘッダをはんだ付けします。基板エッジにでている接点パターンは、きちんと計測すると1.65mmピッチくらいだということが分かるのですが、ここでは2.0mmピッチの&lt;a href="http://www.sengoku.co.jp/mod/sgk_cart/search.php?multi=%EF%BC%B5%EF%BC%AA%EF%BC%B3%EF%BC%91%EF%BC%91%EF%BC%90%EF%BC%91%EF%BC%8D%EF%BC%94&amp;amp;x=5&amp;amp;y=10&amp;amp;cond8=and"&gt;これ&lt;/a&gt;を使いました。4ピンなのでぎりぎりこれでも大丈夫です。ただ、このコネクターは非常に熱に弱くて少しでも余分に長くこてを当てようものならコネクタハウジングが融けてピンが泳ぎだすのが難点です。少々高くても他のメーカーのものを使うのが賢明でしょう。なお、分解しないで無理やりはんだ付けする方法もありますが、スケールのケースが溶けるのでお勧めはできません。後述のコネクタカバーが閉まらなくなってしまいます。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/ScniGU4yq-I/AAAAAAAAANc/LRL1O3rHfx0/s1600-h/dro7-2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 248px; height: 240px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/ScniGU4yq-I/AAAAAAAAANc/LRL1O3rHfx0/s320/dro7-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5317029433401584610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;組み立てる前にスケールのプラスチックカバーの加工をします。下の写真の緑の四角で囲んである部分を削り落します。こうしないとコネクタヘッダの下半分が干渉してしまうからです。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScniGg78QBI/AAAAAAAAANs/aOgDcgRyovY/s1600-h/dro11-2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScniGg78QBI/AAAAAAAAANs/aOgDcgRyovY/s320/dro11-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5317029436636020754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;組み立てた後はこうなります。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/ScniGtNCj2I/AAAAAAAAAN0/cDmwdog_rFM/s1600-h/dro12.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/ScniGtNCj2I/AAAAAAAAAN0/cDmwdog_rFM/s320/dro12.jpg" alt="" id="BLOGGER_PHOTO_ID_5317029439928962914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;このままだとコネクタカバーが閉まりませんのでこいつも加工します。左下から11.0mm×2.5mmだけ削り込んでやると…&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScnzCqUgsnI/AAAAAAAAAOE/l8DX3Ri2aIU/s1600-h/dro13-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScnzCqUgsnI/AAAAAAAAAOE/l8DX3Ri2aIU/s320/dro13-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5317048062133187186" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;下側の「ツメ」がぎりぎり0.5mmほど残ります。このおかげでパチンと小気味よくカバーが閉まります。このポストの最初の写真がカバーを閉めたところです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-4845571907509229744?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/4845571907509229744/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=4845571907509229744' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/4845571907509229744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/4845571907509229744'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/03/tinydro_25.html' title='TinyでDRO!（ハードウェア２）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pu3jRc33fFQ/ScniGbTkUGI/AAAAAAAAANk/e1AT9wkalFY/s72-c/dro9-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-6164921086548084932</id><published>2009-03-19T18:48:00.011+09:00</published><updated>2009-03-31T11:05:49.651+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでDRO!（ハードウェア１）</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/Scy_uvmuOyI/AAAAAAAAAPM/_6Q3ui1AuGg/s1600-h/dro-sch.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 142px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/Scy_uvmuOyI/AAAAAAAAAPM/_6Q3ui1AuGg/s200/dro-sch.png" alt="" id="BLOGGER_PHOTO_ID_5317836069791480610" border="0" /&gt;&lt;/a&gt;このシステム全体は+5V電源で動作するようになっています。5V出力のACアダプターで直接給電です。それを前提に回路の説明です。&lt;br /&gt;&lt;br /&gt;図の左端にはスケールからのクロックおよびデータの信号入力があります。スケールの電源は電位の高いほうがフレーム＝GND電位で、低いほうが-1.5Vと通常とは逆の電位になっているので、C3およびC4による容量結合で4049（hex inverter, IC１）でレベルシフト、増幅しています。4049から出力された両信号は元の信号の反転になっています。これらはTiny2313のポート入力につながります。&lt;br /&gt;&lt;br /&gt;左上のNチャンネルMOSFET uPA2753GR（Q7）はゼロクリアをスケールに対して送るためにあります。ポート出力でスケールのGNDとクロック線を（抵抗を介して）ショートさせます（スケール本体のZEROボタンを押したのとまったく等価と思われる）。&lt;br /&gt;&lt;br /&gt;図の上半分はLEDドライブ回路です。Tiny2313の少ないポートでこれだけのLEDセグメントを駆動するためダイナミック点灯をさせることにします。数字が6桁すなわちデューティ1/6なので、見掛け上の明るさを稼ぐために1セグメントあたり20mAずつ流します。1コモン端子あたりの最大電流は、7セグメント＋1DPで8素子ですから×8で、160mAです。ドライブ用トランジスタをポピュラーな2SA1015ではなく2SA950にしたのはこのためです。実は160mAというのはTiny2313の「全ポートのI&lt;span style="font-size:85%;"&gt;OL&lt;/span&gt;の合計が60mAを超えるべきではない」という注意書きから外れています（前モデルの90S2313にすればこの条件が100mAと若干軽減されます）。本来ならばドライバトランジスタを挿入するべきでしょう。…が、とりあえず動いているのでまあいいかと。&lt;br /&gt;&lt;br /&gt;LEDコモンのドライバトランジスタの選択に74HC138（3-to-8 decoder, IC3）を使用しています。Tiny2313のピン数が足りないための苦肉の策。リセット直後のポート出力が確定していない時期に、特にフラッシュ書き込みを行っている最中に変な表示が出ないように、リセットが利いている間は出力を禁止するようHC138のG1にリセット線を接続しています。&lt;br /&gt;&lt;br /&gt;図の右下にダイオードを介してスイッチがつながっているのが見えます。LEDの（ダイナミック点灯のための）スキャンをキーのスキャンにも利用しているのです。これもやはりポートが足りないのが理由です。LEDはダイナミック点灯により約360Hz周期で切り替えますので約60Hzで1周します。キーのスキャンにはちょうど良いくらいの周期です。この方法ならばあと4つもスイッチを増やすことも可能です。なおダイオードと反対側のスイッチの端子は1つの入力ポートに集められます。この入力ポートはプルアップされてなければいけません。ダイオードの役割は2つのスイッチが同時にONになったときHC138の出力同士がショートしてしまうのを防ぐためにあります。逆流防止ダイオードとかいいますね。&lt;br /&gt;&lt;br /&gt;Tiny2313にはセラロックが接続されているように書いてありますが、内蔵のRC発振回路で十分だということが分かりましたので、実際は接続しません。ただ、90S2313を使用する場合は必要です。RC発振回路が内蔵されていないからです。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/ScIkc2_gzfI/AAAAAAAAANM/hVWQ2hnzuxc/s1600-h/dro1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/ScIkc2_gzfI/AAAAAAAAANM/hVWQ2hnzuxc/s200/dro1.jpg" alt="" id="BLOGGER_PHOTO_ID_5314850588467449330" border="0" /&gt;&lt;/a&gt;回路の簡単な説明でした。次は基板を設計してOLIMEXに発注するのですが、先人が苦労されてきたとおりやはり最初は一筋縄ではいかずちょっと苦労しました。その話はまたいずれ。&lt;br /&gt;&lt;br /&gt;基板が届くまでにずいぶんと時間がありますから、その間にソフトのコーディングとブレッドボードによるプロトタイピングです。これはそのときの様子です。ここまでちゃんと動くのに結構悩みました…。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-6164921086548084932?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/6164921086548084932/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=6164921086548084932' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6164921086548084932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6164921086548084932'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/03/tinydro_19.html' title='TinyでDRO!（ハードウェア１）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/Scy_uvmuOyI/AAAAAAAAAPM/_6Q3ui1AuGg/s72-c/dro-sch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-4438244398321107319</id><published>2009-03-18T16:43:00.014+09:00</published><updated>2009-03-18T20:32:15.026+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='DRO'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでDRO!（概要）</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScC3rBqTbRI/AAAAAAAAAM8/wbwOPHqyKLA/s1600-h/dro6.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScC3rBqTbRI/AAAAAAAAAM8/wbwOPHqyKLA/s200/dro6.jpg" alt="" id="BLOGGER_PHOTO_ID_5314449510105312530" border="0" /&gt;&lt;/a&gt;以前このブログでデジタルスケールをフライスに装着した話を載せました。その中で、「そのうちLEDの表示器作ろっと」と書いたとおり作ってしまいました。&lt;br /&gt;&lt;br /&gt;まずは先例の調査から。ググるためにはまずキーワードが必要です。「デジタルスケール」ちゅう言葉は実は「デジタル式の秤」--つまりキッチンスケール--の意味のほうが（英語でも）一般的らしい。いろいろ探し回ったところ、こういうのは「DRO (Digital Read-Out) 」と言うのだということが分かりました。NCフライスなどを使ったことのある人にとっては当たり前のことかもしれませんが、知らなかったなぁ…。あと、まったく同じメカニズムを持つ「デジタルノギス」「Digital Caliper」なども検索キーワードとしては役に立ちました。&lt;br /&gt;&lt;br /&gt;果たして信号の解説をしているサイト（&lt;a href="http://www.shumatech.com/support/chinese_scales.htm"&gt;ここ&lt;/a&gt;や&lt;a href="http://sec-suzuki.com/newpage349.htm"&gt;ここ&lt;/a&gt;）や製作例を掲げるいくつかのサイト（&lt;a href="http://www.geocities.jp/p400w/062_dro3/062_dro3.html"&gt;ここ&lt;/a&gt;や&lt;a href="http://www.compendiumarcana.com/caliper/"&gt;ここ&lt;/a&gt;）が見つかりました。信号の解説をしているサイトによれば、また、自身で測定してみたところこのデジタルスケールの信号は以下の特徴があることが分かります。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;クロック線と1本のデータ線を持つ同期式シリアルである。&lt;/li&gt;&lt;li&gt;電源はGNDと-1.5V。GNDはフレームに落ちている。&lt;/li&gt;&lt;li&gt;データは24ビットの2の補数で、最下位ビット（LSB）から送られてくる。&lt;/li&gt;&lt;li&gt;1回のデータ送信で2つのデータ--先に絶対座標、後に相対座標--がつながって送られる。&lt;/li&gt;&lt;li&gt;データの送信間隔は約0.3秒。&lt;/li&gt;&lt;li&gt;クロックの周波数は約80kHz。データ送信していない間は-1.5Vに固定されている。&lt;/li&gt;&lt;li&gt;データの取り込みはクロックの立下りエッジで行うのが妥当。&lt;/li&gt;&lt;li&gt;外からクロック線をGNDレベルに落とすことでゼロクリア信号入力となる。つまりZEROボタンを押したのと同じ。&lt;/li&gt;&lt;li&gt;外からデータ線をGNDレベルに落とすことでモード切換え入力となる。これ相当のボタンは本体にはない。&lt;/li&gt;&lt;li&gt;スケール本体の電源がOFFでも信号だけは出力され続ける（液晶画面は消えている）。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;負電圧になっているのが嫌だなあと思いつつ、ここは挑戦です。以下の目標を掲げて突進です。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;とにかく安い部品を使って仕上げる。そのためATTiny2313を使う。できれば部品箱に眠っているAT90S2313でも動くようにする。&lt;/li&gt;&lt;li&gt;軸ごとの独立とする。つまり、X・Y・Z軸それぞれに1基板を使う。&lt;/li&gt;&lt;li&gt;ボタンはゼロクリアとミリ／インチ切り替えのみ。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;枚数の少ない試作基板では一番安価と思われるブルガリアのOLIMEXに基板を発注する。&lt;/li&gt;&lt;li&gt;最近になって秋月で販売し始めたプラスチックケース（195×110×76mm）に収める。これは500円で非常に安価だ。&lt;/li&gt;&lt;li&gt;スケール本体から出すケーブルにはUSBケーブルのデバイス側をちょん切って使う。切ったところに2mmピッチ×4ピンのコネクタをつける。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;スケール本体から出るケーブルとDROの接続はUSB（A-Type＝ホスト側）を使う。安く上げるため。A-Typeメスのパネル取り付け用ケーブルが2本入りで280円（＠千石）。&lt;/li&gt;&lt;li&gt;基板以外は1軸あたり1,000円程度に抑える。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;写真は完成して動作させているところです。上からX軸、Y軸、Z軸なのですが、Z軸にはスケールそのものがついていない（まだ買ってない…）ので消えたままになっています。次回はハードウェアの説明をします。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-4438244398321107319?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/4438244398321107319/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=4438244398321107319' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/4438244398321107319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/4438244398321107319'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/03/tinydro.html' title='TinyでDRO!（概要）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/ScC3rBqTbRI/AAAAAAAAAM8/wbwOPHqyKLA/s72-c/dro6.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-5280437926710884607</id><published>2009-02-20T13:29:00.014+09:00</published><updated>2009-02-20T17:53:30.136+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（ソフトウェア４）</title><content type='html'>水平1ライン分を描画するプログラムの仕上げとしてスコア表示を説明しましょう。&lt;br /&gt;&lt;br /&gt;スコアは2桁の数字です。普通に考えれば1桁分の「数字フォント」を0から9まで10種類用意することになるのですが、ここではフォントの幅＝ドット数も勘案して2桁で1つの数字として扱っています。2桁だと100種類のバリエーションができてフォントの格納領域が膨大になってしまいそうですが、そこはPONG。0点から15点まで16種類しか必要としません。その定義が以下の"fconst.asm"です。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;fconst.asm （"1"を強調表示しています）&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2dkSD-I/AAAAAAAAALc/pYk8ypcTNL8/s1600-h/pong_fconst_0-3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 349px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2dkSD-I/AAAAAAAAALc/pYk8ypcTNL8/s400/pong_fconst_0-3.png" alt="" id="BLOGGER_PHOTO_ID_5304733322320154594" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2fJAhII/AAAAAAAAALk/JcEPTup0h2M/s1600-h/pong_fconst_14-15.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 176px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2fJAhII/AAAAAAAAALk/JcEPTup0h2M/s400/pong_fconst_14-15.png" alt="" id="BLOGGER_PHOTO_ID_5304733322742629506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;.setと.dbがあって一瞬なんだこりゃ？ですが、フォントをビジュアルで定義するための小技です。1のビットが白――文字部分――になります。1つの数字は横×縦＝4×5ドットの枠の中に3×5ドットとして表現されています。これを横に2桁分並べて8×5ドットの「2桁数字」を1フォントにしています。&lt;br /&gt;&lt;br /&gt;一方、画面デザイン上の問題として、フォントの1ドット＝画面上の1ドットにしてしまうと数字があまりにも小さくなりすぎてバランスが良くありません。数字をある程度の大きさで見せるためにはサイズを拡大してあげないといけない。そこでフォントの1ドット＝画面上の4ドットと縦横4倍になるようにしています。&lt;br /&gt;&lt;br /&gt;また、スコアの数値自体はSRAM上の変数ScoAとScoBに入っているのですが、そこから上記のフォントデータに変換して、4倍にふくらませて…とやっていると水平ブランキング期間内に処理が終わりません。そこで、スコア→フォントデータへの変換部分だけはあらかじめ――垂直ブランキング期間内に――終わらせておくという措置をとります。その処理をするのが"font_cache.asm"です。ScoA/Bの値を表すフォントデータがSRAM上のバッファ変数Ftbufに格納されます。&lt;br /&gt;&lt;br /&gt;さて、Ftbufに格納されたフォントデータを描画する部分が"draw.asm"の最後の部分です。まず、スコアが描かれる縦位置に来たかどうか判定します。&lt;br /&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;      ;; --- draw scores ---&lt;br /&gt;drawscore:&lt;br /&gt;      mov     zl, nxline      ; +1=42 prepare for font load&lt;br /&gt;      subi    nxline, DGT_TOP ; +1=43&lt;br /&gt;      cpi     nxline, DGT_BOT+1-DGT_TOP; +1=44&lt;br /&gt;      brsh    eol             ; +1=45&lt;/pre&gt;&lt;br /&gt;スコアが描かれる位置に来ました。次はフォントを縦4倍に広げるのですが、どうしたらよいのでしょう。答えは「4回足踏みして待つ」です。次にどこの行を走査するのかを示す変数nextlineは1ずつ増加するのに対し、4回同じデータを描画すれば縦が4倍に伸びることになります。nxline（のコピーのZL）を4で割っている（LSR命令が2回）のはそのためです。&lt;br /&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;      lsr     zl              ; +1=46&lt;br /&gt;      lsr     zl              ; +1=47&lt;br /&gt;      addi    zl, low(Ftbuf)-DGT_TOP/4; +1=48&lt;br /&gt;      clr     zh              ; +1=49&lt;/pre&gt;&lt;br /&gt;そして横の4倍化。「11110000」と「00001111」の2つのビットパターンを用意しておいて、フォントデータの1になっているビットの位置によってこれら2つを使い分けて行のデータと論理和を取ります。分かりにくいと思うので実例で。&lt;br /&gt;&lt;br /&gt;今、描画しようとしている先の行には下記のようにボールの一部が描画されているとします。R7-R10はスコアを表示する位置にあたります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2njP2lI/AAAAAAAAAL0/p5hIGzWF6RM/s1600-h/pong_font_bitblt_before.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 51px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2njP2lI/AAAAAAAAAL0/p5hIGzWF6RM/s400/pong_font_bitblt_before.png" alt="" id="BLOGGER_PHOTO_ID_5304733325000170066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ここにたとえばフォントデータ"14"を重ねて描画しようとしたとして、&lt;br /&gt;&lt;blockquote&gt;　　　　11001010&lt;br /&gt;　　　　01001010&lt;br /&gt;　　　　01001110 ←この行を描画&lt;br /&gt;　　　　01000010&lt;br /&gt;　　　　11100010&lt;/blockquote&gt;&lt;br /&gt;今はそのフォントの3行目だとすると、その描画データは01001110です。これを上位ビットから判定していきます。ルールは0なら何もせず、1ならそれが偶数ビットであればパターン11110000を、奇数ビットであればパターン00001111を重ねるというものです。するとこうなります。&lt;br /&gt;&lt;blockquote&gt;　　　　ビット7は0 … 何もしない&lt;br /&gt;　　　　ビット6は1 … パターン00001111をR7に重ねる&lt;br /&gt;　　　　ビット5は0 … 何もしない&lt;br /&gt;　　　　ビット4は0 … 何もしない&lt;br /&gt;　　　　ビット3は1 … パターン11110000をR9に重ねる&lt;br /&gt;　　　　ビット2は1 … パターン00001111をR9に重ねる&lt;br /&gt;　　　　ビット1は1 … パターン11110000をR10に重ねる&lt;br /&gt;　　　　ビット0は0 … 何もしない&lt;/blockquote&gt;&lt;br /&gt;図示するとこうです。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2lBjrRI/AAAAAAAAALs/3IzHRIqmrho/s1600-h/pong_font_bitblt.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 397px; height: 400px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2lBjrRI/AAAAAAAAALs/3IzHRIqmrho/s400/pong_font_bitblt.png" alt="" id="BLOGGER_PHOTO_ID_5304733324321991954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;この部分のソースはこれです。ScoA側だけ示します。SBRC命令を使って0のビットをスキップしています。ScoBについても同じ処理になります。&lt;br /&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;      .def    fontd   =r24&lt;br /&gt;      .def    pat10   =r27&lt;br /&gt;      .def    pat01   =r26&lt;br /&gt;      ldi     pat10, 0b11110000; +1=50&lt;br /&gt;      ldi     pat01, 0b00001111; +1=51&lt;br /&gt;      ;; for Score A&lt;br /&gt;      ld      fontd, z        ; +2=53 load a font row of A&lt;br /&gt;      sbrc    fontd, 7        ; +1=54&lt;br /&gt;      or      rast7, pat10    ; +1=55&lt;br /&gt;      sbrc    fontd, 6        ; +1=56&lt;br /&gt;      or      rast7, pat01    ; +1=57&lt;br /&gt;      sbrc    fontd, 5        ; +1=58&lt;br /&gt;      or      rast8, pat10    ; +1=59&lt;br /&gt;      sbrc    fontd, 3        ; +1=60&lt;br /&gt;      or      rast9, pat10    ; +1=61&lt;br /&gt;      sbrc    fontd, 2        ; +1=62&lt;br /&gt;      or      rast9, pat01    ; +1=63&lt;br /&gt;      sbrc    fontd, 1        ; +1=64&lt;br /&gt;      or      rast10, pat10   ; +1=65&lt;/pre&gt;&lt;br /&gt;以上で映像出力と描画関連のプログラムの説明は終わりです。ゲームの進行については垂直ブランキング期間――1/60秒に1回かつ1.28msの間だけ――に行われますが、それはgame.asmを読んでいただくことにしましょう。&lt;br /&gt;&lt;br /&gt;長々と説明をしてきましたが、とりあえずソフトウェアの説明はこれで終了です。お疲れ様でした！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-5280437926710884607?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/5280437926710884607/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=5280437926710884607' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/5280437926710884607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/5280437926710884607'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/02/tinypong_20.html' title='TinyでPONG！（ソフトウェア４）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pu3jRc33fFQ/SZ4y2dkSD-I/AAAAAAAAALc/pYk8ypcTNL8/s72-c/pong_fconst_0-3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-8427428563941416393</id><published>2009-02-07T01:00:00.002+09:00</published><updated>2009-02-09T08:30:40.579+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（ソフトウェア３）</title><content type='html'>TinyでPONG！（ソフトウェア２）では映像出力の最前線の部分の説明をしました。1水平ライン分の映像データは24個の汎用レジスタのR0～R23に用意されているということが前提でした。逆にいえばデータをレジスタに入れさえすればいいわけです。&lt;br /&gt;&lt;br /&gt;全速力で1ラインの映像を出力した後は、次のライン出力の出番が来るまでのつかの間にデータを仕込みます。ソースは"draw.asm"にあります。最初に判定すべきは何のデータを仕込まなければならないのかです。つまり次に何行目を走るのかで書きだすものを変える。大くくりでは、&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1～10行目 → サイドライン（横一本ずっと白＝「１」）&lt;/li&gt;&lt;li&gt;11～226行目 → コート内部（センターライン、スコア、ボール、パドル）&lt;/li&gt;&lt;li&gt;227～236行目 → サイドライン&lt;/li&gt;&lt;/ul&gt;となります。この判定をしているのが以下の部分。&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;        ;; --- prepare next raster ---&lt;br /&gt;        cpi     nxline, COURT_MIN; +1=2&lt;br /&gt;        brlo    sideline        ; +1=3&lt;br /&gt;        cpi     nxline, COURT_MAX; +1=4&lt;br /&gt;        brlo    field           ; +2=6&lt;br /&gt;&lt;br /&gt;        ;; --- draw sidelines ---&lt;br /&gt;sideline:                       ; draw sideline&lt;br /&gt;        filrast                 ; (+24)&lt;br /&gt;        rjmp    eol&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;次に何行目を走るのかはnxline（ここではR27と同義）に入っています。それがコート内部にあるかどうかの比較があって、外部であればサイドラインを書くべくfilrastを実行して終わりです。filrastはマクロで、汎用レジスタR0～R23の全ビットを1に立てるだけです。これは簡単。&lt;br /&gt;&lt;br /&gt;コート内部だったら前出の通りサイドラインとボールとスコアとパドルのデータを用意しなくてはなりません。これらは排他的ではなくて、すべて書かなければならない状態もあり得ますから1つ書いてサヨナラというわけにはいきません。全部説明するのも冗長なのでここではまずボールを書く部分を。&lt;br /&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;        ;; --- draw ball ---&lt;br /&gt;        .def    pos     =r24&lt;br /&gt;drawball:&lt;br /&gt;        lds     pos, Ballt      ; +2=10&lt;br /&gt;        cp      nxline, pos     ; +1=11 skip if (line &amp;gt Ball_top)&lt;br /&gt;        brlo    drawpad         ; +1=12&lt;br /&gt;        addi    pos, BAL_HEI    ; +1=13&lt;br /&gt;        cp      pos, nxline     ; +1=14 skip if (line &amp;lt Ball_bot)&lt;br /&gt;        brlo    drawpad         ; +1=15 / +2=16&lt;br /&gt;&lt;br /&gt;        .def    pattern =r26&lt;br /&gt;        clr     zh              ; +1=16&lt;br /&gt;        lds     zl, Ballad      ; +2=18&lt;br /&gt;        lds     pattern, Ballpt ; +2=20&lt;br /&gt;        st      z, pattern      ; +2=22&lt;br /&gt;        com     pattern         ; +1=23&lt;br /&gt;        std     z+1, pattern    ; +2=25 (r24 can be written)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;次の行nxlineがボールの上辺の位置Balltと下辺の位置Ballt+BAL_HEIの間にあるかどうかの判定が冒頭にあります。なければそこにはボールがないので書く必要がないということになり、次のパドルを書きに行きます。&lt;br /&gt;&lt;br /&gt;ボールを書く場合、ボールのバイトアドレスBalladで&lt;span style="font-weight: bold;"&gt;レジスタ番号&lt;/span&gt;を指定し、ボールのビットパターンBallptをそのレジスタに書き込みます。ここがAVRのアーキテクチャの特徴をうまく使った部分で、レジスタがメモリアドレスのゼロ側にマップされていることを利用しています。つまり、メモリアドレス0x0000はR0を、0x001fはR31を指し示し、この例のようにZレジスタ間接などでもあたかもSRAMをアクセスしているかのごとしです。このようにできることはデータシートには書いてなくて（探しが足りなかったのかも）、実験してみたらできてしまってラッキーでした。こいつは便利だ。AVRすごい！&lt;br /&gt;&lt;br /&gt;ボールのビットパターンを書くと言いましたが、ボールの幅が8ドット＝8ビット、レジスタが8ビット単位なので（ほとんどの場合）2つのレジスタにまたがって書かなければなりません。この例ではまず指定されたレジスタに左側を書き、次のレジスタに右側を書いています。右側のパターンはちょうど左側のパターンのビット反転になっているのが分かりますでしょうか。（だからcom命令で反転しています）&lt;br /&gt;&lt;br /&gt;ボールの形を書く&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SYwWs6WyetI/AAAAAAAAAK0/4OHroJuTYo4/s1600-h/pong_ball_pattern.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 340px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SYwWs6WyetI/AAAAAAAAAK0/4OHroJuTYo4/s400/pong_ball_pattern.png" alt="" id="BLOGGER_PHOTO_ID_5299635822343125714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今回はこのくらいで。次はスコアの表示です。&lt;br /&gt;&lt;br /&gt;そうそう、ソースアーカイブにレジスタマップ(regmap.txt)を入れておいたのを忘れていました。今Excelで開いてもう少し見やすくしたイメージを下に貼っておきます。&lt;br /&gt;&lt;br /&gt;レジスタマップ&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SYwJYBGHxPI/AAAAAAAAAKs/Rdk39DjsfoY/s1600-h/pong_regmap.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 230px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SYwJYBGHxPI/AAAAAAAAAKs/Rdk39DjsfoY/s400/pong_regmap.png" alt="" id="BLOGGER_PHOTO_ID_5299621169723852018" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-8427428563941416393?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/8427428563941416393/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=8427428563941416393' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8427428563941416393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8427428563941416393'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/02/tinypong_07.html' title='TinyでPONG！（ソフトウェア３）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pu3jRc33fFQ/SYwWs6WyetI/AAAAAAAAAK0/4OHroJuTYo4/s72-c/pong_ball_pattern.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-8605225412002050125</id><published>2009-02-06T11:05:00.007+09:00</published><updated>2009-02-06T11:51:34.036+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（液晶テレビで映らない？）</title><content type='html'>このPONGの記事を参考に&lt;a href="http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews36#gdc4f048"&gt;実際に作ってみてくださった方&lt;/a&gt;がいらっしゃるらしくてとても光栄な気持ちです。この場を借りて御礼します。&lt;br /&gt;&lt;br /&gt;そちらの記事の中で液晶テレビには映らないというご報告がありました。本当に申し訳ないのですがそのことを説明するのを忘れていました。そうなんです。確かに私も確認していました。仕事で使っているNTSC入力付きのデルの液晶モニターには映りませんでした。これは液晶テレビ全般がだめかと思いきや、自宅で使っている三菱製の32インチの液晶テレビ（2005年製の地デジ・BSデジ対応機）では映ります。&lt;br /&gt;&lt;br /&gt;実は、今回の作例ではNTSCの信号規格を完全には満たしていません。一番効いているのが、簡略化のためなのですが、&lt;span style="font-weight: bold;"&gt;インターレースにしていない&lt;/span&gt;ところでしょう。本来は秒間60フレームではなくて2フィールド×30フレームにするために同期タイミングを小細工しなくてはならないのです。これが、シビアな同期判定の仕組みを持つ最近の液晶テレビだと認識してくれない（だまされてくれない）ケースがあるんじゃないかと。説明が不足していてすみません。&lt;br /&gt;&lt;br /&gt;むか～し同じような簡略化をしていたやつ（ゲーム機だったか、コンピュータだったか）があったような。そういうのは液晶テレビには映らない（ことがある）んでしょうね。&lt;br /&gt;&lt;br /&gt;（次回はソフトウェアの解説の続きをします。）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-8605225412002050125?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/8605225412002050125/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=8605225412002050125' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8605225412002050125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8605225412002050125'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/02/tinypong.html' title='TinyでPONG！（液晶テレビで映らない？）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-746794942611015159</id><published>2009-02-02T18:41:00.007+09:00</published><updated>2009-02-04T11:46:56.189+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><title type='text'>フライスにデジタルスケールがついた</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7BTOAVI/AAAAAAAAAJY/A849Tyf3cr0/s1600-h/milling_scale.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 132px; height: 200px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7BTOAVI/AAAAAAAAAJY/A849Tyf3cr0/s200/milling_scale.jpg" alt="" id="BLOGGER_PHOTO_ID_5298134131841827154" border="0" /&gt;&lt;/a&gt;プロクソンの小型フライスを使っています。プラケースにスライドスイッチ用の角穴を開ける時などに重宝しているのですが、X-Yテーブルの送りハンドルのバックラッシュ（遊び）に手を焼いていました。バックラッシュがあるのは当然のことだとは思うのですが、それを考慮に入れてもハンドルに刻んである目盛がなんか信用できない。ハンドルの目盛を頼りに四角くぐるっと一周しても元の位置に戻らないんです。&lt;br /&gt;いらいらは募り、ついにデジタルスケールを装着することにしました。かなり高額なものなんだろうと思っていたら、探したら結構安いのがあったんです。&lt;br /&gt;&lt;br /&gt;昨今はこの手のフライスを改造してコンピュータNC化するキットなども比較的安価（といっても20万円くらいはする）に買え、それを使えばNCデータを作成するだけで加工は機械任せにできます。しかし…そこまで一足飛びにやるべきか？とりあえず練習の意味を込めて手動でもきちんと図面通りに加工できるレベルに到達することが大切と考えました。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7FILUqI/AAAAAAAAAJg/jvWsSFwRp9c/s1600-h/milling_scale_x.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7FILUqI/AAAAAAAAAJg/jvWsSFwRp9c/s200/milling_scale_x.jpg" alt="" id="BLOGGER_PHOTO_ID_5298134132869255842" border="0" /&gt;&lt;/a&gt;右の写真はX軸側、左下のはY軸側です。3×30mmのアルミ材に固定し、そのアルミ材をテーブルに固定しています。スライダー部の裏側には同じアルミ材やLアングル（今回は手元にあったアルミ製のブックエンドを切って利用）をねじ止めしています。困ったのはテーブルの壁面が垂直じゃないこと！微妙に下方向にすぼまってる。あと、ねじの頭が引っかからないように皿ネジにしたり、ハンドルのコラムが邪魔でタップ（ネジ切りの道具）のハンドルが回せないところにある穴はタップタイトねじを使ってねじ切りしたり…。まあいろいろと、現物合わせで苦労しましたが、なんとか形になりました。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7Waw6OI/AAAAAAAAAJo/2TcCaUcSxnU/s1600-h/milling_scale_y.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7Waw6OI/AAAAAAAAAJo/2TcCaUcSxnU/s200/milling_scale_y.jpg" alt="" id="BLOGGER_PHOTO_ID_5298134137510619362" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;このX-Yテーブルは左右に約140mm（＝±70mm）、前後に110mm移動しますので、デジタルスケールはどちらも150mmまで計測可能なタイプにしました。ゼロ点合わせ、インチ／ミリ切り替えの機能がついて1本税込3,780円と安価でした。ちゃんとしたモノでしたよ。バックル付きの木箱に入って、合格検査証も入ってたし。でも…たぶん某国製なんでしょうね、取説の説明と現物が合わない…ボタンの数が違うし…。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SYbPaToYBmI/AAAAAAAAAJw/Qvm_yEb86m0/s1600-h/digital_scale_connector.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SYbPaToYBmI/AAAAAAAAAJw/Qvm_yEb86m0/s200/digital_scale_connector.jpg" alt="" id="BLOGGER_PHOTO_ID_5298150062501135970" border="0" /&gt;&lt;/a&gt;あと、通常デジタルスケールにはリードアウト端子が出ていて外部表示装置をつなぐことができるようになっているのですが、今回購入したものは端子がありませんでした（涙）。取説上はあることになっているのに。諦めきれずに分解して中をのぞくと…ありました！それらしきものが。オシロで観測してみるときちんと信号が出ています。ラッキー！ケースの外には出てないけど、基板上にはあったのです。むふふ。そのうちLEDの表示器作ろっと。ケースに穴あけて。おっと、右の写真、ピンボケですな…。&lt;br /&gt;&lt;br /&gt;ちなみにデジタルスケールの購入先は&lt;a href="http://store.shopping.yahoo.co.jp/threes-com/"&gt;スリースカンパニー&lt;/a&gt;でした。きちんと使えるし、質感も悪くないし、値段考えると十分満足。他の特価商品としてデジタルノギス1,400円(!)などがありました。うぉっ、安すぎる…。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-746794942611015159?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/746794942611015159/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=746794942611015159' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/746794942611015159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/746794942611015159'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/02/blog-post.html' title='フライスにデジタルスケールがついた'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/SYbA7BTOAVI/AAAAAAAAAJY/A849Tyf3cr0/s72-c/milling_scale.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-1638945472000488625</id><published>2009-01-20T20:10:00.021+09:00</published><updated>2009-01-28T09:38:04.129+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（ソフトウェア２）</title><content type='html'>映像出力の仕方を具体的に説明します。&lt;br /&gt;&lt;br /&gt;映像データを出力ポートに滞りなく書きこまねばならないのですが、どのくらいの速度でなければならないのでしょう。水平方向192ドットを、水平映像期間48μs＝384クロックで出力するので、1ドット当たり2クロックにすればよいのです。&lt;br /&gt;&lt;br /&gt;この速度はプログラムをいくら効率よく書いてもループ（分岐）を使った時点で達成はできません。分岐命令は、後方分岐（ループ）の場合それだけで2クロックを消費してしまうからです。そこで、ループを「展開する」ことにしました。ループを展開するというのは同じ命令をループの回数だけずらっと並べて書くということで、当然プログラムの容量は増大します。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SXbTlNpO-tI/AAAAAAAAAH4/ICjXwXS4440/s1600-h/pong_loop.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 316px; height: 64px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SXbTlNpO-tI/AAAAAAAAAH4/ICjXwXS4440/s400/pong_loop.png" alt="" id="BLOGGER_PHOTO_ID_5293651048291826386" border="0" /&gt;&lt;/a&gt;ループを展開するとは&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SXbT69c92HI/AAAAAAAAAIA/HsWEPs3t88g/s1600-h/pong_loop_expand.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 142px; height: 110px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SXbT69c92HI/AAAAAAAAAIA/HsWEPs3t88g/s320/pong_loop_expand.png" alt="" id="BLOGGER_PHOTO_ID_5293651421902526578" border="0" /&gt;&lt;/a&gt;ということです。簡単ですね。&lt;br /&gt;&lt;br /&gt;ループの展開をすれば1ドット出力に2クロックを使うことができます。しかし2クロックしかありませんから、これとてもいくつかの工夫をしなくてはなりません。&lt;ol&gt;&lt;li&gt;汎用レジスタにあらかじめ映像データを用意しておく。&lt;/li&gt;&lt;li&gt;1つめのクロックでポート出力を完了させ、&lt;/li&gt;&lt;li&gt;次の1クロックで汎用レジスタ内の映像データを1ビット（左）シフトする。&lt;/li&gt;&lt;/ol&gt;直前の周期であらかじめ1行分の映像データを汎用レジスタ（群）に仕込んでおくことで上記のアイディアが実現できます。これは汎用レジスタが32本と多いAVRだからこそできる技で、そのうちの24本をこの目的のためにつかいます。24本×8ビット＝192ドットですから。&lt;br /&gt;&lt;br /&gt;また、出力命令のOUTは1クロックで完了するのですが、8ビットいっぺんに出力されます。8ビットマイコンなんで当たり前のことですね。その中の1ビットだけ出力したい（変化させたい）という場合、通常はポートを8ビットで読んで→狙ったビットをクリアし→狙ったビット以外の部分を0でマスクしたデータと論理和し→ポートに書き戻すとか、ビットクリア／ビットセット命令を分岐で使い分けたりと結構面倒なもので、とても1クロックで済むような話ではありません。&lt;br /&gt;&lt;br /&gt;そこで、出力ポートの他のビットを無視すなわち未使用にすることにしました。そうすると面倒くさい1ビット書き換え処理が全く不要になり、単に8ビットいっぺんに出力するだけで済んでしまうのです。以前「映像出力がポートの最上位ビットであることと、同じポートの他のビットに出力が割り当てられていないことがとても重要」と書いたのはこのためだったのです。&lt;br /&gt;&lt;br /&gt;これらを図で示すと下記のようになります。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SX-okHt2gAI/AAAAAAAAAIQ/r5DwRPCi39Y/s1600-h/pong_raster_out.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 396px; height: 400px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SX-okHt2gAI/AAAAAAAAAIQ/r5DwRPCi39Y/s400/pong_raster_out.png" alt="" id="BLOGGER_PHOTO_ID_5296137025311113218" border="0" /&gt;&lt;/a&gt;プログラムの中でこの処理をやっているのはファイル"draw.asm"の以下の部分です。ループの展開はまだるっこしく読みにくいのでマクロを使っています。&lt;br /&gt;&lt;br /&gt;8ビット分のループ展開（マクロ定義）&lt;br /&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;   .macro  vout8px&lt;br /&gt;   out     PORTB, @0       ; +1=1  output bit7&lt;br /&gt;   lsl     @0              ; +1=2&lt;br /&gt;   out     PORTB, @0       ; +1=3  output bit6&lt;br /&gt;   lsl     @0              ; +1=4&lt;br /&gt;   out     PORTB, @0       ; +1=5  output bit5&lt;br /&gt;   lsl     @0              ; +1=6&lt;br /&gt;   out     PORTB, @0       ; +1=7  output bit4&lt;br /&gt;   lsl     @0              ; +1=8&lt;br /&gt;   out     PORTB, @0       ; +1=9  output bit3&lt;br /&gt;   lsl     @0              ; +1=10&lt;br /&gt;   out     PORTB, @0       ; +1=11 output bit2&lt;br /&gt;   lsl     @0              ; +1=12&lt;br /&gt;   out     PORTB, @0       ; +1=13 output bit1&lt;br /&gt;   lsl     @0              ; +1=14&lt;br /&gt;   out     PORTB, @0       ; +1=15 output bit0&lt;br /&gt;   clr     @0              ; +1=16 clear this segment for next timing&lt;br /&gt;   .endmacro&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;24レジスタ分のループ展開&lt;br /&gt;&lt;pre name="code" class="c:nogutter:nocontrols"&gt;&lt;br /&gt;   vout8px r0              ; 16*24=384cycles(visible period)&lt;br /&gt;   vout8px r1&lt;br /&gt;   vout8px r2&lt;br /&gt;   vout8px r3&lt;br /&gt;   vout8px r4&lt;br /&gt;   vout8px r5&lt;br /&gt;   vout8px r6&lt;br /&gt;   vout8px r7&lt;br /&gt;   vout8px r8&lt;br /&gt;   vout8px r9&lt;br /&gt;   vout8px r10&lt;br /&gt;   vout8px r11&lt;br /&gt;   vout8px r12&lt;br /&gt;   vout8px r13&lt;br /&gt;   vout8px r14&lt;br /&gt;   vout8px r15&lt;br /&gt;   vout8px r16&lt;br /&gt;   vout8px r17&lt;br /&gt;   vout8px r18&lt;br /&gt;   vout8px r19&lt;br /&gt;   vout8px r20&lt;br /&gt;   vout8px r21&lt;br /&gt;   vout8px r22&lt;br /&gt;   vout8px r23&lt;br /&gt;   out     PORTB, r23      ; 0+1=1 set to blank level&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;最後のOUT命令は描画が終わったら背景の黒レベルにもどす処理です。これをやらないと右端のドットが１だった場合、白い線が画面の右端までびよ～んと尾を引いてしまいます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-1638945472000488625?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/1638945472000488625/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=1638945472000488625' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/1638945472000488625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/1638945472000488625'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/01/tinypong_20.html' title='TinyでPONG！（ソフトウェア２）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/SXbTlNpO-tI/AAAAAAAAAH4/ICjXwXS4440/s72-c/pong_loop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-6430466024269528191</id><published>2009-01-19T09:46:00.018+09:00</published><updated>2009-01-19T18:59:06.532+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（ソフトウェア１）</title><content type='html'>さあ、ここからが本番、ソフトウェアの説明に入ります。早速ソースコードをアップロードしておきました。&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var sfjp_widget_width = null;&lt;br /&gt;var sfjp_widget_customcss = null;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script src="http://sourceforge.jp/projects/hazie-pong2313/files/compact.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;br /&gt;トップレベルのエントリーは"pong.asm"です。拡張子を見ただけで分かると思いますが、8MHzという低速のCPUでビデオ信号のタイミングにシビアに合わせるためアセンブラを使っています。AVRのような簡易なマイコンはパイプライニングなどの高級な高速化技術を一切使っていないため、命令表の消費クロック数の値がそのままタイミングカウントとして簡単に計算できますので、アセンブラで記述すればタイミングを正確に合わせることができます。&lt;br /&gt;&lt;br /&gt;時代はデジタルハイビジョンに向かっているのに今更ながらアナログTV信号（NTSC方式）を扱いますが、アナログ放送の停波まで公式にはまだ2年ちょっとありますし、全世帯からアナログTVがなくなるのはまだまだ時間がかかると思います。逆にデジタルTVへの切り替えで不要になるアナログTV（壊れても泣かなくて済む！）を実験などに存分に使えるようになる絶好の機会が到来すると前向きに考えましょう。&lt;br /&gt;&lt;br /&gt;NTSC信号を使ってTVに絵を出すためにどんな信号をどのようなタイミングで出さなければならないかは、&lt;a href="http://www.nahitech.com/nahitafu/mame/mame6/mame6.html"&gt;こちら&lt;/a&gt;などのサイトに素晴らしい説明がされていますので参照していただくことにして、本プロジェクトではそのタイミングをどのようにして作り出しているのかを説明します。なお、本プロジェクトで扱う映像信号は白黒で、カラーではありません。また、グレースケールはなく2値の白黒ーーすなわち1画素＝1ビットです。&lt;br /&gt;&lt;br /&gt;信号出力のタイミングは唯一、16ビットタイマーのTimer1からの割り込みによります。Timer1は原クロック8MHzでカウントアップし、水平同期信号の周期（63.555μs≒64μs）に達したところでゼロクリアして自動的に循環するモードに設定。このカウンタの2つある比較レジスタ一致の1つOCR1Bでの一致により発生する割り込みで映像信号出力を開始します。同時に比較レジスタOCR1Aの値によるPWM動作を設定し、OC1Aピン（＝PB1ピン）から水平同期信号を自動的に出力しています。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SXQ-idng3kI/AAAAAAAAAGw/aE_yc0CgFBg/s1600-h/pong_hsync.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 398px; height: 190px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SXQ-idng3kI/AAAAAAAAAGw/aE_yc0CgFBg/s400/pong_hsync.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5292924223854009922" /&gt;&lt;/a&gt;&lt;br /&gt;これをこのように作ります。無理やりテキストで書いて、見にくくてすみません。のこぎり状の波形はTimer1カウンタの内容です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SXRO1i2Ey1I/AAAAAAAAAHY/e894a3nPtiM/s1600-h/pong_pwm.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 235px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SXRO1i2Ey1I/AAAAAAAAAHY/e894a3nPtiM/s400/pong_pwm.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5292942143860820818" /&gt;&lt;/a&gt;&lt;br /&gt;水平方向にいくつカウントするかは64μs×8MHz＝512カウントですのでTimer1は0から511まで変化します。カウンタがOCR1Bレジスタと一致したところで事前に準備してあった水平1行分の映像データをタイミングをきちんと計算されたプログラムで1画素＝1ビットずつ出力します（図中の「映像送」）。1行出力した直後には次の行のデータを準備しておきます。図中「備」と書かれた部分がそれに相当します。準備してから次の割り込みが来るまでの間は、たった数クロック程度の余裕しかありませんが、スリープ（図中の「Z」）して待ちます。&lt;br /&gt;&lt;br /&gt;割り込みハンドラ（ソースtim1oc1b.asm）は垂直方向のカウント、垂直同期の生成、パドル＝簡易A/Dコンバータの状態遷移の管理、音声出力など軽い処理をするのみです。&lt;br /&gt;&lt;br /&gt;割り込みハンドラから戻ってくるとメインプログラム（main.asm）のスリープ命令が解除されて、映像送出（draw.asm）と次の行の準備（同）を行います。&lt;br /&gt;&lt;br /&gt;OC1A出力はOCR1Aレジスタでの一致で"L"を出力、カウントトップすなわちICR1レジスタとの一致で"H"を自動的に出力するような高速PWMモードの設定にしてあります。これが同期信号出力になります。&lt;br /&gt;&lt;br /&gt;水平方向の表示期間が終わり、垂直ブランキング期間に入ったかどうかはメインプログラムの冒頭で判断しています。本プログラムでは水平20行分がその期間となります。その中の3行分の期間は水平同期信号の極性反転を行います。これが垂直同期信号となります。極性反転は前述のPWMの条件を反転するだけで実現しています（つまり、OCR1A一致で"H"、トップで"L"になるように）。&lt;br /&gt;&lt;br /&gt;垂直ブランキング期間では、映像出力が必要なくなるのでこの時とばかりにゲーム本来の動作を実行します（game.asm）。表示期間とブランキング期間合わせて全部で256行あるうちたった20行がゲーム進行に使われますので、本来の7％のパフォーマンスしか得られません。8MHzで公称8MIPSのAVRでも約0.6MIPSとなります。それでもこの程度のゲームであれば全く問題なくスムーズに動作しています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-6430466024269528191?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/6430466024269528191/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=6430466024269528191' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6430466024269528191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6430466024269528191'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/01/tinypong_19.html' title='TinyでPONG！（ソフトウェア１）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pu3jRc33fFQ/SXQ-idng3kI/AAAAAAAAAGw/aE_yc0CgFBg/s72-c/pong_hsync.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-817998833944652780</id><published>2009-01-07T12:57:00.006+09:00</published><updated>2009-02-12T21:26:53.276+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（ハードウェア）</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZQTj2BskBI/AAAAAAAAALU/Pf363vgOsw8/s1600-h/pong2313-sch.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 142px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZQTj2BskBI/AAAAAAAAALU/Pf363vgOsw8/s200/pong2313-sch.png" alt="" id="BLOGGER_PHOTO_ID_5301884167840894994" border="0" /&gt;&lt;/a&gt;長らくのお待たせでした。PONG復活です。今回は回路図の公開とハードウェアの解説をしましょう。&lt;br /&gt;&lt;br /&gt;例によって秋葉原の某所（ほとんど秋月ですが…）で入手しやすくできるだけ安価な部品ばかり集めています。基板を除けば千円でお釣りがくるくらいです。&lt;br /&gt;&lt;br /&gt;Tiny2313は約8MHzのRC内蔵発振器を持っていますが、わざわざセラロックを用いているのは周波数の安定性が重要になるからです。もちろん水晶発振子でもかまいません。ためしに内蔵発振器を使って画面出力をしてみたところ、絵がゆらゆら、ばらばらでとても見られたものではありませんでした。温度係数もやたら大きくて、温めたり冷やしたりすると揺れ具合も大きく変化します。&lt;br /&gt;&lt;br /&gt;映像出力はPB7、同期信号出力OC1A（＝PB3）で、これらはダイオードとRを使って混ぜてコンポジット出力としています。実は映像出力がポートの最上位ビットであることと、同じポートの他のビットに出力が割り当てられていないことがとても重要なのです。（PB3が出力として使っているように見えますが、これはあくまでもOC1A出力として使っているので影響ありません。）&lt;br /&gt;&lt;br /&gt;音声出力はPD6から出しています。出力コンデンサを省略していますが、心配ならば100uF程度のアルミ電解を直列につなぐと良いでしょう。&lt;br /&gt;&lt;br /&gt;パドル入力用の簡易ADCにはコンデンサーへの充放電を制御する出力PD4、PD5と放電時間を計測するための入力PD0、PD1を使います。PD4またはPD5をHにしてダイオードを経由して急速に充電したのちLに切り替えます。放電はボリュームの抵抗を通って徐々に行われます。コンデンサの端子電圧がV&lt;span style="font-size:60;"&gt;IL&lt;/span&gt;まで下がったことをPD0またはPD1でセンスし、それまでの時間をボリュームの抵抗値＝パドルの位置として求めるのです。&lt;br /&gt;&lt;br /&gt;ありがたいことにTiny2313は旧製品の90S2313と違って3Vで動作しますので、電源は単三乾電池2本でOKです。この回路では電源スイッチはありませんが、ソフトウェアスイッチ（サーブスイッチSW2を長押し）でパワーダウンモードに入ります。この時の消費電流は極めて低くて1μA未満です。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;（2009.2.12 回路図のTYNY2313のシンボルマークを修正。）&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-817998833944652780?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/817998833944652780/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=817998833944652780' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/817998833944652780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/817998833944652780'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/01/tinypong.html' title='TinyでPONG！（ハードウェア）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZQTj2BskBI/AAAAAAAAALU/Pf363vgOsw8/s72-c/pong2313-sch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-8978151525269189817</id><published>2009-01-06T18:59:00.012+09:00</published><updated>2009-01-06T20:28:54.984+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ベッドライト'/><category scheme='http://www.blogger.com/atom/ns#' term='LED'/><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>90S2323でスリープタイマー付きベッドライト（2）</title><content type='html'>あけましておめでとうございます。&lt;br /&gt;うだうだしている間に時間がたってしまい…年が明けてしまいました。&lt;br /&gt;この先どうなる事やら…ま、気を取り直して更新してまいりましょう。&lt;br /&gt;&lt;br /&gt;本件のベッドライトは自宅で毎日便利に使っております。自分としては満足です。&lt;br /&gt;&lt;br /&gt;操作はいたって簡単で、白いボタンで点灯、もう一度白いボタンで30分スリープタイマー起動です。消したくなったら黒いボタンを押すだけ。たったそれだけのものなのですが、これで本を読みながら眠ってしまっても大丈夫。照度は十分すぎるくらいにとれていて、逆にまぶしすぎるくらいです。白色LEDの性能上少し青白いので赤とか黄色のLEDキャップをいくつかはめ込むとちょうどいいくらいの感じになります。&lt;br /&gt;&lt;br /&gt;写真ギャラリー：&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SWMx8qYo4GI/AAAAAAAAAFk/u_ZSJ40G5vo/s1600-h/bedlight5.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SWMx8qYo4GI/AAAAAAAAAFk/u_ZSJ40G5vo/s200/bedlight5.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5288125305702637666" /&gt;&lt;/a&gt;秋月の100円ユニバーサル基板（72x47mm）に組みました。左側から出ている4本の赤いリード線はポリウレタン線で、LED出力となっています。LEDヘッドを支えるアームをケースに固定している部分が見えます。アームは嫁が手芸用に持っていたダイソーの直径3mmのアルミニウム線を使っています。ちょうどポリウレタン線と同じ色の塗装がかかっていてうまい具合です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SWMvbl-95iI/AAAAAAAAAFU/NHayjimJ-Mk/s1600-h/bedlight4.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SWMvbl-95iI/AAAAAAAAAFU/NHayjimJ-Mk/s200/bedlight4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5288122538562283042" /&gt;&lt;/a&gt;ケースはタカチのプラケースSW-95Bだったと思います。白ボタンの上に開いている穴はパイロットランプ用。タイマー動作中は1Hzで点滅します。アームは、軸のアルミ線とLED出力のポリウレタン線にシリコンチューブをかぶせて両端を熱収縮チューブでギュッとしめてあります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SWMvbVNsp_I/AAAAAAAAAFM/NyFBc38xfeM/s1600-h/bedlight3.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SWMvbVNsp_I/AAAAAAAAAFM/NyFBc38xfeM/s200/bedlight3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5288122534060664818" /&gt;&lt;/a&gt;LEDヘッド部を正面から見たところです。グリーンレジストのかかったユニバーサル基板の切れ端にLEDをマウントしています。黒い台座は…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SWMvbFy25oI/AAAAAAAAAFE/LZ6VxzQsSbU/s1600-h/bedlight2.jpg"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SWMvbFy25oI/AAAAAAAAAFE/LZ6VxzQsSbU/s200/bedlight2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5288122529921558146" /&gt;&lt;/a&gt;実はヒートシンクを2個連結したものだったのです。分厚い熱伝導シートを基板との間に挟みねじでしっかりと密着固定しています。LEDが低消費電力だと言ってもかなり発熱しますし、その熱がLEDの寿命を縮めますので放熱してあげることは良いことです。このヒートシンクも秋月の1個50円のものです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ソースと回路図を以下に載せておきました。&lt;br /&gt;&lt;br /&gt;&lt;script src="http://sourceforge.jp/projects/bedlight/releases/compact.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-8978151525269189817?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/8978151525269189817/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=8978151525269189817' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8978151525269189817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8978151525269189817'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2009/01/90s23232.html' title='90S2323でスリープタイマー付きベッドライト（2）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pu3jRc33fFQ/SWMx8qYo4GI/AAAAAAAAAFk/u_ZSJ40G5vo/s72-c/bedlight5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-2935719513040652478</id><published>2008-11-14T15:57:00.010+09:00</published><updated>2008-11-14T17:44:03.107+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ベッドライト'/><category scheme='http://www.blogger.com/atom/ns#' term='LED'/><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>90S2323でスリープタイマー付きベッドライト（1）</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SR0qz01XJuI/AAAAAAAAAEk/5esDc-6DWOw/s1600-h/bedlight1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 142px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SR0qz01XJuI/AAAAAAAAAEk/5esDc-6DWOw/s320/bedlight1.jpg" alt="" id="BLOGGER_PHOTO_ID_5268414208937502434" border="0" /&gt;&lt;/a&gt;いやあ、すっかりご無沙汰してしまいました。とはいってもPONGの続きではございません。&lt;br /&gt;&lt;br /&gt;私、寝床についてから眠くなるまで本を読むのが日課なんですが、眠くなってきて、いよいよ眠りに就くぞというときに電気スタンドを消す動作をしたとたん、眠さ50％オフ！で、結局入眠できず…（涙）ということを難儀に思っていました。&lt;br /&gt;&lt;br /&gt;眠くなったらそのまま何もしないで自然に眠りにつきたい…そういう需要ってちまたにもあるんですね。タイマー付きのベッドライトって市販されています。でも、いまさら買いたくはないし…。&lt;br /&gt;&lt;br /&gt;いろいろ逡巡したあげく、以前仕事の関連で購入しておいた超高輝度の白色LEDがたくさんあったことを思い出し、自作することにしました。これのために新たに購入することはせず、手持ちの部品だけでなんとかなりました。&lt;br /&gt;&lt;br /&gt;このベッドライトの仕様は&lt;ul&gt;&lt;li&gt;白色LED×９灯＝25cd×9＝225cd（６灯でやってみてちょっと暗かったもので…）&lt;/li&gt;&lt;li&gt;30分間のスリープタイマー（タイマー起動後30分で消灯）&lt;/li&gt;&lt;li&gt;スリープタイマーで消灯するときは徐々に減光するギミック&lt;/li&gt;&lt;li&gt;電源はDC12VのACアダプター&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;です。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SR0sn48LssI/AAAAAAAAAE8/vTLBxD9_a58/s1600-h/Bedlight-sch.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 142px;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SR0sn48LssI/AAAAAAAAAE8/vTLBxD9_a58/s200/Bedlight-sch.png" alt="" id="BLOGGER_PHOTO_ID_5268416202904679106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;タイマーと減光ギミックの実現のためやはりマイコンの力を借ります。（だからこのブログに載せられる～！）マイコンは部品箱にあったAT90S2323-10PC。8ピンDIPでI/Oが3本しかとれないやつ。それでもフラッシュは2KB積んでいて、GCCでコンパイルできるのはありがたい。その他回路の詳細は回路図を見ていただくことにしましょう。&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-2935719513040652478?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/2935719513040652478/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=2935719513040652478' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/2935719513040652478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/2935719513040652478'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/11/90s23231.html' title='90S2323でスリープタイマー付きベッドライト（1）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SR0qz01XJuI/AAAAAAAAAEk/5esDc-6DWOw/s72-c/bedlight1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-2341060672238617296</id><published>2008-10-31T10:59:00.007+09:00</published><updated>2008-11-14T17:45:50.429+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><title type='text'>混沌から秩序へ（ジャンパワイヤ）</title><content type='html'>秋月で購入したブレッドボードのジャンパワイヤは透明な整理箱に入って付属してきます。いろいろな種類が「そこそこ」分類されているわけなんですが、今まではあまり気にしないで必要な長さのワイヤを「当て勘で」ピックアップし、現物合わせをしながら使っていました。&lt;br /&gt;&lt;br /&gt;しかし、最近はこの現物合わせが面倒くさくなってきて、何とかならないかと軽く悩んでおりました。&lt;br /&gt;&lt;br /&gt;ふとワイヤの被覆の色と長さに対応関係があるような気がして全部皿の上にひっくり返して調べてみると…なんだ、長さが抵抗と同じカラーコードに対応しているじゃありませんか。つまりこういうことでした。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;｛被覆なし，赤，橙，黄，緑，青，紫，灰，白｝＝｛1，2，3，4，5，6，7，8，9｝&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;イコールの右側の単位はグリッド長で、1グリッド＝0.1インチ＝2.54mmです。ここから上が10グリッド単位のもので、（さっきのものと重複しますが、長さがまるで違うので見た目で判別がつきます。）&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;｛茶，赤，橙，黄， 緑｝＝｛10，20，30，40，50｝&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;なるほど。こりゃ覚えやすい。それじゃあ、分類して入れておけば探すのがもっと楽になるはず…しかし、14種類もありますな。付属のプラケースは仕切りがいくつも入っていない。&lt;br /&gt;&lt;br /&gt;さんざん考えてしまいました。100円ショップでピルケースのような仕切りのたくさんあるケースを買おうか、いやもったいないから何か仕切りを立てて使おうか…。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SQptlIWSQLI/AAAAAAAAAEc/0srNv19aHe0/s1600-h/JumperWires.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 174px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SQptlIWSQLI/AAAAAAAAAEc/0srNv19aHe0/s320/JumperWires.jpg" alt="" id="BLOGGER_PHOTO_ID_5263139599199387826" border="0" /&gt;&lt;/a&gt;悩みぬいた揚句たどり着いた答えがこれです。通常ICを挿して保存するためのプラスチックフォーム（硬いスポンジみたいなもの）をついたての隙間よりも少し大きめに切って差し込むだけ。このケースでは1グリッドから10グリッドまできれいに仕分けして入りました。めでたしめでたし。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-2341060672238617296?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/2341060672238617296/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=2341060672238617296' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/2341060672238617296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/2341060672238617296'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/blog-post_31.html' title='混沌から秩序へ（ジャンパワイヤ）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/SQptlIWSQLI/AAAAAAAAAEc/0srNv19aHe0/s72-c/JumperWires.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-2802542434157561975</id><published>2008-10-15T18:44:00.000+09:00</published><updated>2008-10-15T18:44:36.549+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（概要）</title><content type='html'>これから製作例を紹介する「TinyでPONG!」は、非常に安価な8ビットマイコンATTiny2313ひとつでこの黎明期のテレビゲームを「安価に」模倣してみようじゃないかというプロジェクトです。&lt;br /&gt;&lt;br /&gt;Tiny2313はプログラムメモリー(ROM)が2Kバイト、&lt;span style="font-weight: bold;"&gt;RAMが128バイト&lt;/span&gt;しかありません。RAMといっても当然VRAMではないので、そのまま映像出力ができるような仕組みは一切ありません。&lt;br /&gt;&lt;br /&gt;しかも画面表示解像度は水平192ドット×垂直236ラインですので、VRAMで実現しようとすると1ドットあたり1ビットとして5,664バイトが必要になってしまいます。やはりVRAM方式では無理ということになります。&lt;br /&gt;&lt;br /&gt;PONGの映像を出力するのと同時に水平・垂直の同期信号を作ります。テレビ側はこれらの信号に合わせて画面の上端と左端のタイミングをつかみます。この同期信号のタイミングをTiny2313内蔵のタイマ／カウンタで作り出します。&lt;br /&gt;&lt;br /&gt;プログラムでは、前述のボール左端カウンタ、右端カウンタ、上端カウンタ、下端カウンタ、左パドル上端カウンタ、下端カウンタ…が変数として使われて、ハードウェアカウンタをシミュレートしているような格好になっています。&lt;br /&gt;&lt;br /&gt;1「行」分の映像を出力するところは一番工夫したところで、非常に高速に、かつ、安定した速度で動かなければならないので、かなりトリッキーなことをやっています。AVRの汎用レジスタの数の多さを最大限利用しています。PONGの仕組みを模倣すると言っておきながら、この部分ではちょっとずるをしているのですが…VRAMを使わないことが一番の目的なのでまあ許してもらいましょうか。&lt;br /&gt;&lt;br /&gt;パドルは10KΩのボリュームで制御します。ボリュームの位置を検出するのに電圧を直読できるA/Dコンバータがほしいところでしたが、あいにくこのマイコンには内蔵されていません。そこで、簡易A/Dコンバータをソフトウェアで実装してあります。コンデンサを決まった電圧に充電しておいて、ボリュームの抵抗で放電させ、電圧が一定レベルまで下がったときまでの時間を測ります。抵抗が小さければ素早く放電され、抵抗が大きければゆっくり放電されます。詳しく計算すると分かるのですが、抵抗値とこの放電時間は比例します。つまり、ボリュームはBカーブ（＝直線）であればそのままBカーブとして使えるのです。&lt;br /&gt;&lt;br /&gt;サーブをするためのボタンは電源ボタンを兼ねています。電池を入れるとすぐには映像は出てきません。サーブのボタンを押すと初期画面が現れます。映像が出ているときはいつでもサーブのボタンを5秒以上押し続けることにより電源を切ることができます。&lt;br /&gt;&lt;br /&gt;そのほかにも音が出たり、ソフトで電源ランプ（LED）の輝度調節をしていたり、さまざまなことをやっています。&lt;br /&gt;&lt;br /&gt;プログラムのソースコードを公開する予定ですので、詳しくはそちらをのぞいてみてください。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-2802542434157561975?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/2802542434157561975/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=2802542434157561975' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/2802542434157561975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/2802542434157561975'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/tinypong_10.html' title='TinyでPONG！（概要）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-660646420313171587</id><published>2008-10-14T15:17:00.000+09:00</published><updated>2008-10-14T15:18:07.512+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>なぜPONGなのか(4)</title><content type='html'>ここまで来てやっと「なぜPONGなのか」がお話しできます。&lt;br /&gt;&lt;br /&gt;PONGは今や当たり前となっているコンピュータ＋VRAM＋ソフトウェアの方式とは構造をまったく異にしています。&lt;br /&gt;&lt;br /&gt;テレビがスキャンビームを左から右に、上から下に振って絵を描き出すその仕組みを直に利用しています。テレビ画面はもとから2次元ではなく、織物をほどいて時間軸方向に引き伸ばしたものを、逆の手順をたどって織り上げたものです。今まさにスキャンビームが通るその瞬間を捕まえて輝点を打つ、そのタイミングが画面上の座標に対応します。その瞬間を捕まえるのに多数のカウンタとコンパレータが活躍するのです。&lt;br /&gt;&lt;br /&gt;ゲームの進行もコンパレータでの一致検出とカウンタの計数方向の反転だけで実現されています。動物に例えると条件反射あるいは脊髄反射的といえましょう（図らずも同じ「反射」ですね…）。そこにはソフトウェアのソの字もありません。&lt;br /&gt;&lt;br /&gt;現代人にとっては、ゲームとしては単純すぎて、遊ぶにはすぐに飽きてしまいますが、コンピュータではなく「デジタル回路」と「テレビジョン技術」の学習としては実によくできた教材になるのではないでしょうか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-660646420313171587?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/660646420313171587/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=660646420313171587' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/660646420313171587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/660646420313171587'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/pong4.html' title='なぜPONGなのか(4)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-8995655904549380827</id><published>2008-10-13T11:15:00.000+09:00</published><updated>2008-10-13T11:16:11.532+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>なぜPONGなのか(3)</title><content type='html'>PONGの話に戻りましょう。&lt;br /&gt;&lt;br /&gt;実はPONGゲームはまだマイコンが普及してなかったころに作られたものです。その前の年にインテルが世界初のマイコンi4004(4bit)を発表したばかりのころ。マイコンを採用しようという概念は当然なかったでしょう。仮に採用したとしてもメモリーも高価で、たった数キロバイト程度でも使えません。&lt;br /&gt;&lt;br /&gt;「VRAM→画面の仕組み」の力を借りずして、どうしてテレビにゲームの画面を映し出すのでしょう？これには前述のOSDの話と関係があります。&lt;br /&gt;&lt;br /&gt;テレビはアナログの映像信号1本--時刻とともに上がったり下がったりする電圧が一組あるだけ--で面の情報を映し出します。そのためにスキャンビームが画面を走査（スキャン）するのです。最上部の左端から右端へ、右端に到達したら次の行へ。横書きノートに口述筆記をするのと同じでです。ノートと違うのは最下行に到達したら次のページにめくるのではなく、左上に戻ることです。&lt;br /&gt;&lt;br /&gt;幸いPONGは複雑な図柄は必要ありません。画面上の1つの「行」に注目すると、一番たくさんの種類の図柄を描く場合は、①左のパドル、②左のスコア（数字2桁）、③ボール、④センターライン、⑤右のスコア、⑥右のパドルの6種類だけです。&lt;br /&gt;&lt;br /&gt;テレビのスキャンビームが左端にあるタイミングは、信号を出す側にとって分かりきったこと。③ボールの位置にスキャンビームが到達したその瞬間、映像信号を叩き「白」を出します。ボールの横幅を過ぎたところで今度は「黒」を出します。&lt;br /&gt;&lt;br /&gt;OSDの話ではマイコンのプログラムループでこのタイミングをとっていました。しかし実はこれらはハードウェアだけでできるのです。&lt;br /&gt;&lt;br /&gt;ビームの水平位置を示すカウンタを、画面の左端でゼロリセットしてからカウントアップの状態にし、カウンタが出力する値をコンパレータ（比較器）で検出し、映像信号を「白」にセットします。コンパレータへのもう一方の入力値はこの場合はボールの左端の位置です。また別のコンパレータを使って、ボールの右端を検出したら「黒」をセットします。&lt;br /&gt;&lt;br /&gt;こうして6つの要素について次々と上記と同様のことを行って1行分を映像出力します。もちろんその行にボールがなかったり、パドルがなかったりする場合は「白」の出力はしません。そのためには「ビームが何行目にいるのか」を数えるカウンタ、「ボールが何行目にいるのか」を検出するコンパレータなどが必要です。&lt;br /&gt;&lt;br /&gt;それぞれの要素について左端、右端、上端、下端を保持しておくカウンタや一致検出のためのコンパレータなどのハードウェアが必要になります。ゲームの進行もこれらのカウンタ、コンパレータをうまく使って実現することができます。（たとえば右パドルでボールが左から右へと反射するのは、ボールの右端を覚えているカウンタが右パドルの左端を覚えているカウンタと一致したとコンパレータで検出した瞬間に、ボール用のカウンタの計数方向（上昇／下降）をひっくり返すことに他なりません。）&lt;br /&gt;&lt;br /&gt;全体としてなんだかものすごいハードウェアの量になりそうですが、それでも当時としてはコンピュータ＋メモリのほうがずっと複雑で物量も大きく、なによりも高価だった。カウンターとかコンパレータが山ほどあってもそれで済むのならまだ経済的だったのです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-8995655904549380827?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/8995655904549380827/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=8995655904549380827' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8995655904549380827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8995655904549380827'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/pong3.html' title='なぜPONGなのか(3)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-7620057841609385340</id><published>2008-10-12T15:04:00.000+09:00</published><updated>2008-10-12T18:11:29.912+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>なぜPONGなのか(2)</title><content type='html'>そしていつの間にか私もいい歳の大人になって、おやじになって、世の中はテレビゲームのみならず携帯ゲームが世の中を席捲している状況。ひとえにコンピュータ産業の発展のたまものです。&lt;br /&gt;&lt;br /&gt;これらはコンピュータを内蔵し、ソフトウェアで動くという点で世代にかかわらず私から見れば「同じもの」。つまり、画面上の座標と一対一に対応付けられたビデオメモリー（VRAM）に、ソフトウェアで指令されたコンピュータのコア（CPU）がせっせとイチゼロのデータを書き換え続けるということです。VRAMのある番地のデータが書き換われば対応する画面の座標の色が変わります。そういうVRAM→テレビ画面の仕組みがチップ内に組み込まれているのです。&lt;br /&gt;&lt;br /&gt;私が生まれて初めて触れたコンピュータは、すでにテレビ用のインターフェースを備え、白黒ではあったが文字表示と簡易グラフィック表示ができるものでした。当然画面への表示は前述のVRAM→画面の仕組み（CRTC = Cathode-Ray Tube Controller）が搭載されていました。テレビに何かを表示したい場合にはそのような仕組みにするのが当然であり、それしか方法はないものだと思い込んでいました。まだ何も知らない若造だったのです。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;◆&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;某電器メーカーのコンピュータ設計部門に就職したその年、先輩エンジニアたちと雑談をしていて、私が愚にもつかない質問をしました。&lt;br /&gt;&lt;br /&gt;「テレビのOSD*を出すためのマイコンってどのくらいVRAM積んでいるんですかね？」&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;（* On-Screen Display: チャンネル番号やボリュームレベルをテレビ映像に重ねて表示する機能）&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ちょうどテレビの設計部門から転属してきていた先輩エンジニアはすかさず答えます。&lt;br /&gt;&lt;br /&gt;「VRAMなんか持っているわけないじゃん。そんなメモリー積んでたら（値段が）高くなっちゃってしょうがないよ。」&lt;br /&gt;&lt;br /&gt;自分の常識を覆す答え。え？それじゃあどうやって文字を出すの？&lt;br /&gt;&lt;br /&gt;「スキャンビーム（走査電子ビーム）が、うまい位置を通るちょうどその時に映像信号をONするようにプログラムループを使ってタイミングをとるんだよ。テレビなんて何種類も文字出さないし、文字の解像度もすごく低いからからそんなんで十分。アセンブラでゴリゴリよく書いたもんだ。」&lt;br /&gt;&lt;br /&gt;目から鱗でした。なるほど、極小のリソースの中でどれだけ複雑なことができるか、これぞ技術だ、技だと思ったものです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-7620057841609385340?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/7620057841609385340/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=7620057841609385340' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/7620057841609385340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/7620057841609385340'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/pong2.html' title='なぜPONGなのか(2)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-87146539750760783</id><published>2008-10-10T21:05:00.008+09:00</published><updated>2008-10-12T14:11:38.147+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>なぜPONGなのか(1)</title><content type='html'>私が子供の時分にTVコマーシャルで、そしておもちゃ屋の店頭で見た「テレビテニス」はあまりにも鮮烈で脳裏に焼き付いています。なにしろそれまでテレビに映し出されるものはテレビ番組しかなかったわけで、その画面に何やら番組以外のものを映し出して遊ぶという概念さえ持ち得ませんでした。しかも（遊ぶからには当たり前ですが）コントローラ上のノブを回して自分の意のままにパドル（棒の映像）が動く。それはそれはびっくりこいてしまったのです。&lt;br /&gt;&lt;br /&gt;我が家は貧乏ではありませんでしたが、当時このようなものを持っている友人は皆無で、当然買ってもらえるような代物ではありませんでした。いや、あまりにも自分の立場とかけ離れた存在だったので、親に遠慮して欲しがらなかったのかもしれません。&lt;br /&gt;&lt;br /&gt;今ネットで調べてみると&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%AC%E3%83%93%E3%83%86%E3%83%8B%E3%82%B9"&gt;これ&lt;/a&gt;は1975年にエポック社から発売されたものと判明。定価19,500円とは、当時としてはまったく子供向きの価格ではなかったんですね。&lt;br /&gt;&lt;br /&gt;また、&lt;a href="http://www.famitsu.com/game/news/2004/07/17/103,1089990993,28683,0,0.html"&gt;こちら&lt;/a&gt;の情報によれば「得点を記録する機能がなく、本体に回転式の表示装置が付けられている」って…へーそーだったんだー。てことは、ボールを跳ね返すことしかできなかったんだね。当時は技術立国の直前。それでも家庭用ゲームとしては強烈に画期的だったはず。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SO9Gg8SMMWI/AAAAAAAAADg/d46bREP3IeM/s1600-h/WikiPong.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SO9Gg8SMMWI/AAAAAAAAADg/d46bREP3IeM/s200/WikiPong.png" alt="" id="BLOGGER_PHOTO_ID_5255496821916840290" border="0" /&gt;&lt;/a&gt;日本の「テレビテニス」のおおもとは米国アタリ社のアーケードゲーム "PONG" らしい。1972年の発表だったそうです。こちらの "&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%B3_%28%E3%82%B2%E3%83%BC%E3%83%A0%29"&gt;PONG&lt;/a&gt;" はネット上で情報が集めやすく、&lt;a href="http://jp.youtube.com/watch?v=LPkUvfL8T1I"&gt;プレイ中の動画&lt;/a&gt;も YouTube などから発掘できます。&lt;br /&gt;&lt;br /&gt;こっちにはちゃんと得点表示が画面に表示されています（自分としてはなぜかこっちの画面のほうが記憶に残っています）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-87146539750760783?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/87146539750760783/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=87146539750760783' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/87146539750760783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/87146539750760783'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/pong1.html' title='なぜPONGなのか(1)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pu3jRc33fFQ/SO9Gg8SMMWI/AAAAAAAAADg/d46bREP3IeM/s72-c/WikiPong.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-7211618676530529457</id><published>2008-10-09T14:31:00.003+09:00</published><updated>2008-10-10T10:05:22.185+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（動画）</title><content type='html'>&lt;div style="TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-bd6c9ddabee17208" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v16.nonxt8.googlevideo.com/videoplayback?id%3Dbd6c9ddabee17208%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330119803%26sparams%3Did,itag,ip,ipbits,expire%26signature%3DCF96C3F3FFF6EB58FAD8A4C90C55DC2D8E3B17C.199852E31B5CE6E4B141CD33D6206664283BFADB%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dbd6c9ddabee17208%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dcngomcu3SfllMvq4DoO-4FrZb_g&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v16.nonxt8.googlevideo.com/videoplayback?id%3Dbd6c9ddabee17208%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330119803%26sparams%3Did,itag,ip,ipbits,expire%26signature%3DCF96C3F3FFF6EB58FAD8A4C90C55DC2D8E3B17C.199852E31B5CE6E4B141CD33D6206664283BFADB%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dbd6c9ddabee17208%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dcngomcu3SfllMvq4DoO-4FrZb_g&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;Tiny2313でつくるPONGゲーム。ようやく動画ができました。WindowsMovieMakerはタダであるがゆえあちこち不満はあるものの、ど素人でもこの程度のビデオが作れてしまうのは驚愕、さすがMSと言えます。&lt;br /&gt;&lt;br /&gt;製作記事はまたいずれ後日に。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-7211618676530529457?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=bd6c9ddabee17208&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/7211618676530529457/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=7211618676530529457' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/7211618676530529457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/7211618676530529457'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/tinypong.html' title='TinyでPONG！（動画）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-184257519151433107</id><published>2008-10-07T19:09:00.004+09:00</published><updated>2008-11-14T17:44:29.492+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電源'/><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><title type='text'>負電圧の電源を作ろう</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SOs7UFgpPII/AAAAAAAAADQ/-87Xjd89FQ0/s1600-h/VoltageInverter.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SOs7UFgpPII/AAAAAAAAADQ/-87Xjd89FQ0/s200/VoltageInverter.JPG" alt="" id="BLOGGER_PHOTO_ID_5254358606520335490" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOs8kyAZsmI/AAAAAAAAADY/fxjMBDhCt3M/s1600-h/VoltageInverter.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOs8kyAZsmI/AAAAAAAAADY/fxjMBDhCt3M/s200/VoltageInverter.png" alt="" id="BLOGGER_PHOTO_ID_5254359992854229602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;秋月でロングセラーの液晶モジュールSC1602。データバスと3本の制御線だけつないでコマンド投げれば文字表示ができる大変お手軽で便利なデバイスです。しかし5V駆動なのが玉にキズ…。最近仕事ではほとんどが3V系のものばかりで、ブレッドボードでの実験などもどうしても3Vで動かないと困ってしまいます。&lt;br /&gt;&lt;br /&gt;で、データシートをくまなく読んでみると、ロジックは2.7V以上で動作することがわかりました。ただし、液晶コントラスト電圧（データシート上ではVo）が電源&lt;span style="font-weight: bold;"&gt;V&lt;span style="font-size:85%;"&gt;DD&lt;/span&gt;より下がること4V&lt;/span&gt;以上が必要。仮にV&lt;span style="font-size:85%;"&gt;DD&lt;/span&gt;＝3VだとするとVo＝V&lt;span style="font-size:85%;"&gt;DD&lt;/span&gt;－4V＝-1Vで負の電圧が必要になります。&lt;br /&gt;&lt;br /&gt;それでは正電圧→負電圧の変換器（電圧インバータ）を作ってモジュールに抱き合わせてしまおうと思い立ちました。そうすれば3V単一で動作する液晶モジュールになりますから。&lt;br /&gt;&lt;br /&gt;電圧インバータは、Vo端子がほとんど電流を食わないため、いわゆるチャージポンプ方式とします。74HCU04×2/6で発振回路を構成し、残りのゲートで駆動力を稼ぎます。その後にCとDiのネットワークを通すとあら不思議！-2.0V程度の負の電圧が得られます。インバータという割にきっちり-3V出ないのは、HCU04の出力電圧が若干電源電圧よりも低いのと、ダイオードの順方向降下電圧（V&lt;span style="font-size:85%;"&gt;F&lt;/span&gt;）のせいです。ショットキバリアダイオードなどV&lt;span style="font-size:85%;"&gt;F&lt;/span&gt;の小さいものを使えばもう少し電圧は稼げると思いますが、今回は-1V以上出ればOKなのであまり追及はしませんでした。&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;液晶モジュールSC1602のデータシートは&lt;a href="http://www.sunlikedisplay.com/data/chsracter/SC1602B.pdf"&gt;こちら&lt;/a&gt;から（PDF）&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;SC1602内で使われているコントローラMSM6562B（沖）の日本語版データシートは&lt;a href="http://www.okisemi.com/jp/dbps_data/_material_/semicon/display/datasheet_index/msm6562b.pdf"&gt;こちら&lt;/a&gt;から（PDF）&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-184257519151433107?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/184257519151433107/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=184257519151433107' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/184257519151433107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/184257519151433107'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/10/blog-post.html' title='負電圧の電源を作ろう'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/SOs7UFgpPII/AAAAAAAAADQ/-87Xjd89FQ0/s72-c/VoltageInverter.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-1105135189371149415</id><published>2008-09-30T20:58:00.004+09:00</published><updated>2008-10-01T08:34:59.908+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='PONG'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>TinyでPONG！（予告）</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOIViOp1dtI/AAAAAAAAADA/M3T_tf5j7-Y/s1600-h/BreadBoardPong.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOIViOp1dtI/AAAAAAAAADA/M3T_tf5j7-Y/s200/BreadBoardPong.JPG" alt="" id="BLOGGER_PHOTO_ID_5251783793260721874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;こんなものを準備中です。レトロすぎますか？あと2年とちょっとでアナログTV放送も終わるというのに…（涙）…。&lt;br /&gt;&lt;br /&gt;Tiny2313（秋月で100円！）を使っています。パドルもボールも滑らかに動きます。音も出ますよ。そのうち動画をアップしようと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-1105135189371149415?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/1105135189371149415/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=1105135189371149415' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/1105135189371149415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/1105135189371149415'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/tinypong.html' title='TinyでPONG！（予告）'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOIViOp1dtI/AAAAAAAAADA/M3T_tf5j7-Y/s72-c/BreadBoardPong.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-1255025296940371774</id><published>2008-09-29T09:53:00.004+09:00</published><updated>2008-09-29T10:27:50.586+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>AVR書込み器が安い！</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOAvB_c8JRI/AAAAAAAAABs/VZEubaCcqBQ/s1600-h/AVRASMmkIIJPG.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOAvB_c8JRI/AAAAAAAAABs/VZEubaCcqBQ/s200/AVRASMmkIIJPG.JPG" alt="" id="BLOGGER_PHOTO_ID_5251248876773188882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;毎度おなじみ秋月電子でアトメル純正のAVR用書込み器（ライターとかプログラマーとかとも言いますね）&lt;a href="http://akizukidenshi.com/catalog/items2.php?q=%22M-02582%22&amp;amp;s=date&amp;amp;p=1&amp;amp;r=1&amp;amp;page="&gt;AVRISPmkIIが税込4,000円で販売&lt;/a&gt;されています。これは安い。デバッガーの機能などはなくて、ISPコネクタ経由のシリアル書き込みだけしかできませんが、ほとんどの場合これで十分です。&lt;br /&gt;&lt;br /&gt;秋月はPICの販売に力を入れていて、AVRはずっと脇役のままだったので、このまま扱いがフェードアウトしてしまうのではないかとひやひやしていたのですが、ほっとしました。安価な純正プログラマーの投入でAVRユーザが増えてくれるとうれしいですね。&lt;br /&gt;&lt;br /&gt;ちなみに私はAVRDragonという基板むき出しのデバッガ兼プログラマーも持っているのですが、ISP書き込みに関してはAVRISPmkIIよりもスピードが遅いです。2倍以上違うような気がします。書き込みアルゴリズムが違うんでしょうか、単にチューニングを怠っているんでしょうか…。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-1255025296940371774?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/1255025296940371774/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=1255025296940371774' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/1255025296940371774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/1255025296940371774'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/avr.html' title='AVR書込み器が安い！'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOAvB_c8JRI/AAAAAAAAABs/VZEubaCcqBQ/s72-c/AVRASMmkIIJPG.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-8705680845964197696</id><published>2008-09-27T11:27:00.004+09:00</published><updated>2008-09-27T11:48:37.972+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Tiny26Lがディスコンに…</title><content type='html'>AVRの主な入手先である秋月電子。以前からTiny26Lを激安（150円だったかな？）で置いてあったが、いつの間にか品切れに…あらら。どきどきしながらアトメルのホームページで調べると、すでに生産完了品（＝ディスコン＝mature deviceってやつ）になっていました。なるほど。共立電子とかDigikeyとかには在庫はあるようだけど。&lt;br /&gt;&lt;br /&gt;アトメルによれば代替品としてTiny261を推奨しています。ピン配列含めてほぼ互換なのは助かりますね。フラッシュ容量の大きい461/861もラインナップしているのもいいですね。ただ、まだ店頭での入手性があまり良くないのがつらいです。先日マルツ電波のマルツメイク館でTiny461を入手できました。通販でも買えるみたいです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-8705680845964197696?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/8705680845964197696/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=8705680845964197696' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8705680845964197696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/8705680845964197696'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/tiny26l.html' title='Tiny26Lがディスコンに…'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-3852171513935982302</id><published>2008-09-26T19:16:00.001+09:00</published><updated>2008-11-14T17:45:24.427+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Tiny26Lで電圧計(4)</title><content type='html'>Sourceforgeにソースコードと回路図PDFを置いてみました。初めてなので、こんな方法でいいのかどうか不安ですが…。&lt;br /&gt;&lt;br /&gt;&lt;script src="http://sourceforge.jp/projects/hazie-vm26/releases/compact.js" type="text/javascript" charset="utf-8"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-3852171513935982302?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/3852171513935982302/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=3852171513935982302' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/3852171513935982302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/3852171513935982302'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/blog-post_26.html' title='Tiny26Lで電圧計(4)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-3389842023188918081</id><published>2008-09-26T17:05:00.004+09:00</published><updated>2008-11-14T17:45:24.428+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Tiny26Lで電圧計(3)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SNye3jpn6JI/AAAAAAAAABk/Z3_4y62ogm0/s1600-h/VM26-fuse.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_Pu3jRc33fFQ/SNye3jpn6JI/AAAAAAAAABk/Z3_4y62ogm0/s200/VM26-fuse.png" alt="" id="BLOGGER_PHOTO_ID_5250245942906972306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;電圧計のソースコードです。Cで書いてあります。下の「+expand source」というリンクをクリックすると表示されます。私はWinAVRを導入して、開発環境AVR Studioからビルドしています。&lt;br /&gt;&lt;br /&gt;Tiny26Lへのプログラムの書き込みはAVRISPmkIIを使っています。ヒューズ設定をデフォルトのまま「内蔵RC発振＝1MHz」として使えばOKです。特にいじる必要はありません。ただし、一度設定をいじったヒューズをデフォルトの状態に戻そうとした場合には注意が必要です。AVR Studio 4.13というバージョンではTiny26Lの構成ファイルにバグがあり、ヒューズの設定をプルダウンメニューから正しく選ぶことができないのです。その場合にはデータシートとにらめっこして、直接ヒューズの下位バイトに数値を入力してください。今回の場合はLow Byte=0xE1です。上のイメージはその時のウィンドウのスナップショットです。&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;電圧計 main.c&lt;br /&gt;&lt;/div&gt;&lt;pre name="code" class="c:collapse"&gt;&lt;br /&gt;#define F_CPU 1000000L        /* システムクロック＝1 MHz（内蔵RC発振） */&lt;br /&gt;#define COM_MAX 3        /* LEDのcommon端子の数 */&lt;br /&gt;#define CALIB_REAL_MV 5080L    /* リアル校正電圧[mV] */&lt;br /&gt;#define CALIB_ADC_MV 2570L    /* ADC校正電圧[mV]（リアル校正電圧の約半分で入ってくる） */&lt;br /&gt;#define LED_REFRESH_MS 15    /* LEDのリフレッシュレート[ms] */&lt;br /&gt;#define LUMINOUS_PERSENT 30    /* LED輝度[%] */&lt;br /&gt;#define ADC_REFRESH_MS 200    /* ADCの更新周期[ms] */&lt;br /&gt;#define ADC_REFRESH (ADC_REFRESH_MS / LED_REFRESH_MS)        /* ADCの更新周期[LEDリフレッシュ回数] */&lt;br /&gt;&lt;br /&gt;#define COM_SWITCH_MS (LED_REFRESH_MS / COM_MAX) /* COM端子1本当たりの時間[ms] */&lt;br /&gt;#define LED_ON_MS (COM_SWITCH_MS * LUMINOUS_PERSENT / 100) /* LEDがONしている時間[ms] */&lt;br /&gt;#define LED_OFF_MS (COM_SWITCH_MS - LED_ON_MS) /* LEDがOFFしている時間[ms] */&lt;br /&gt;&lt;br /&gt;#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;#include &amp;lt;avr/wdt.h&amp;gt;&lt;br /&gt;#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// Globals&lt;br /&gt;//&lt;br /&gt;uint16_t CurVolt;&lt;br /&gt;uint8_t SegRAM[3];&lt;br /&gt;uint8_t CurCom = 0;        /* Current COM Number 0, 1, 2, 0, 1, 2, ... */&lt;br /&gt;uint8_t SegFont[10] PROGMEM = {&lt;br /&gt;//_abcdefg&lt;br /&gt;0b10000001,    /* 0 */&lt;br /&gt;0b11001111,    /* 1 */&lt;br /&gt;0b10010010,    /* 2 */&lt;br /&gt;0b10000110,    /* 3 */&lt;br /&gt;0b11001100,    /* 4 */&lt;br /&gt;0b10100100,    /* 5 */&lt;br /&gt;0b10100000,    /* 6 */&lt;br /&gt;0b10001101,    /* 7 */&lt;br /&gt;0b10000000,    /* 8 */&lt;br /&gt;0b10000100,    /* 9 */&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// Prototypes&lt;br /&gt;//&lt;br /&gt;void wdt_off(void);&lt;br /&gt;void init_io(void);&lt;br /&gt;void adc_cont_start(void);&lt;br /&gt;void put_digit(void);&lt;br /&gt;void print_volt(void);&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// MAIN LOOP&lt;br /&gt;//&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;wdt_off();        /* ウォッチドッグタイマーをOFF */&lt;br /&gt;init_io();        /* I/Oの初期化 */&lt;br /&gt;adc_cont_start();    /* ADCを連続変換モードでスタート */&lt;br /&gt;&lt;br /&gt;uint8_t adcref = 0;    /* ADCのリフレッシュカウンタ */&lt;br /&gt;&lt;br /&gt;while(1) {&lt;br /&gt;if (adcref == 0 &amp;amp;&amp;amp; (ADCSR &amp;amp; _BV(ADIF))) {&lt;br /&gt;    ADCSR |= _BV(ADIF); /* ADCの読み込み */&lt;br /&gt;    CurVolt = ADCW;    /* 現在電圧の更新 */&lt;br /&gt;}&lt;br /&gt;print_volt();    /* 電圧の表示 */&lt;br /&gt;&lt;br /&gt;if (++CurCom &amp;gt;= COM_MAX) { /* 各カウンタの回転 */&lt;br /&gt;    CurCom = 0;&lt;br /&gt;    if (++adcref &amp;gt;= ADC_REFRESH)&lt;br /&gt;        adcref = 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;_delay_ms(LED_ON_MS);    /* 輝度調整：ONの時間 */&lt;br /&gt;PORTB |= 0b00111000;    /* 全消灯 */&lt;br /&gt;_delay_ms(LED_OFF_MS);    /* 輝度調整：OFFの時間 */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// Functions&lt;br /&gt;//&lt;br /&gt;void wdt_off(void)&lt;br /&gt;{&lt;br /&gt;cli();&lt;br /&gt;wdt_reset();&lt;br /&gt;MCUSR &amp;amp;= ~(1 &amp;lt;&amp;lt; WDRF);&lt;br /&gt;WDTCR |= (1 &amp;lt;&amp;lt; WDCE) | (1 &amp;lt;&amp;lt; WDE);&lt;br /&gt;WDTCR = 0x00;&lt;br /&gt;//sei();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void init_io(void)&lt;br /&gt;{&lt;br /&gt;PORTA = 0xff;&lt;br /&gt;DDRA = 0xff;&lt;br /&gt;&lt;br /&gt;PORTB = 0b10111111;&lt;br /&gt;DDRB =  0b00111000;&lt;br /&gt;&lt;br /&gt;ADMUX =    0x29;        /* REFS[1:0]/ADLAR/MUX[4:0] = 00101001 */&lt;br /&gt;        /* AVCCピン基準電圧、左揃え、シングルエンドCH9 */&lt;br /&gt;ADCSR = 0x87;        /* ADEN/ADSC/ADATE/ADIF/ADIE/ADPS[2:0] = 10000111 */&lt;br /&gt;        /* 完了割り込み禁止、クロック128分周 */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void adc_cont_start(void)&lt;br /&gt;{&lt;br /&gt;ADCSR |= _BV(ADSC) + _BV(ADFR);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void put_digit(void)&lt;br /&gt;{&lt;br /&gt;uint8_t pb, pa;&lt;br /&gt;&lt;br /&gt;pb = PORTB | 0b00111000;&lt;br /&gt;pb &amp;amp;= ~(0b00001000 &amp;lt;&amp;lt; CurCom);&lt;br /&gt;pa = SegRAM[CurCom];&lt;br /&gt;&lt;br /&gt;PORTB = pb;        /* COM端子のスイッチ */&lt;br /&gt;PORTA = pa;        /* フォントパターンの出力 */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void print_volt(void)&lt;br /&gt;{&lt;br /&gt;uint32_t r;&lt;br /&gt;uint16_t p;&lt;br /&gt;&lt;br /&gt;if (CurCom == 0) {&lt;br /&gt;r = CurVolt;&lt;br /&gt;//r = r * VCC_MV / 1000;&lt;br /&gt;r = r * (CALIB_REAL_MV * CALIB_REAL_MV / CALIB_ADC_MV) / 1000L;&lt;br /&gt;p = r &amp;gt;&amp;gt; 16;&lt;br /&gt;if (p &amp;gt; 9)&lt;br /&gt;    p = 9;&lt;br /&gt;SegRAM[0] = pgm_read_byte(&amp;amp;SegFont[p]) &amp;amp; 0b01111111; /* 最上位桁＋小数点 */&lt;br /&gt;&lt;br /&gt;r -= p * 65536L;&lt;br /&gt;r *= 10;&lt;br /&gt;p = r &amp;gt;&amp;gt; 16;&lt;br /&gt;SegRAM[1] = pgm_read_byte(&amp;amp;SegFont[p]);    /* 中位桁 */&lt;br /&gt;&lt;br /&gt;r -= p * 65536L;&lt;br /&gt;r *= 10;&lt;br /&gt;p = r &amp;gt;&amp;gt; 16;&lt;br /&gt;SegRAM[2] = pgm_read_byte(&amp;amp;SegFont[p]);    /* 最下位桁 */&lt;br /&gt;&lt;br /&gt;//    r -= p * 65536L;&lt;br /&gt;//    r *= 10;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;put_digit();        /* SegRAM[]の内容（フォントパターン）で表示 */&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-3389842023188918081?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/3389842023188918081/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=3389842023188918081' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/3389842023188918081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/3389842023188918081'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/tiny26l3_3682.html' title='Tiny26Lで電圧計(3)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pu3jRc33fFQ/SNye3jpn6JI/AAAAAAAAABk/Z3_4y62ogm0/s72-c/VM26-fuse.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-275828346968338157</id><published>2008-09-26T14:27:00.005+09:00</published><updated>2008-11-14T17:45:24.428+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Tiny26Lで電圧計(2)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOQu_5GAvSI/AAAAAAAAADI/KWK1IEH-5hg/s1600-h/VM26-sch.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOQu_5GAvSI/AAAAAAAAADI/KWK1IEH-5hg/s200/VM26-sch.png" alt="" id="BLOGGER_PHOTO_ID_5252374740613512482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;電圧計の回路図です。図中左下のオレンジ枠の部分はブレッドボード用の可変電圧電源であって、電圧計とは直接の関係はありません。ただ、この電源の出力の電圧を表示するという意図で載せてあります。&lt;br /&gt;&lt;br /&gt;電圧測定入力はちょうど半分の電圧になるようにR10とR14で分圧してあり、これをTiny26L内蔵のAD変換器に入力しています。こうすることでTiny26Lの電源電圧を超える電圧も読むことができるようになります（フルスイングしても電源電圧どまりになってしまうので）。ただ、この入力抵抗でそこそこ電力消費をしますので、もう少し大きな抵抗値のほうがよかったかもしれません。47kΩずつくらいがちょうどいいかも。&lt;br /&gt;&lt;br /&gt;LEDは3コモン×（7セグメント＋DP）のダイナミックドライブを構成しています。部品点数が増えるので本当はLEDのコモンも直接AVRでドライブしたかったんですが、十分な輝度を出すためにはチップの定格を超えてしまうので涙をのんでPNPトランジスタでドライブしています。&lt;br /&gt;&lt;br /&gt;さあ、次はソースコードの紹介です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-275828346968338157?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/275828346968338157/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=275828346968338157' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/275828346968338157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/275828346968338157'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/tiny26l2.html' title='Tiny26Lで電圧計(2)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SOQu_5GAvSI/AAAAAAAAADI/KWK1IEH-5hg/s72-c/VM26-sch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-6555666689297670095</id><published>2008-09-26T13:22:00.007+09:00</published><updated>2008-11-14T17:45:24.429+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><category scheme='http://www.blogger.com/atom/ns#' term='測定器'/><category scheme='http://www.blogger.com/atom/ns#' term='AVR'/><title type='text'>Tiny26Lで電圧計(1)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SNxp89uTRjI/AAAAAAAAABU/IZYkxuVl8sA/s1600-h/VM26.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_Pu3jRc33fFQ/SNxp89uTRjI/AAAAAAAAABU/IZYkxuVl8sA/s200/VM26.JPG" alt="" id="BLOGGER_PHOTO_ID_5250187761688987186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;第一弾は、簡易電圧計を。&lt;/span&gt;  &lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;実験用のブレッドボードにお手製の可変電圧電源を組み込んで使っているのですが、出力電圧を調整するのにいちいちテスターで測っていました。これが面倒くさくなり、専用の電圧計を作ってしまいました。&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2967"&gt;ATTiny26L&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;を使って0.00V～9.99Vで0.01V刻みでLED表示します。実際には可変電圧源の可変範囲1.24V～5.09Vでしか試していません。&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;電圧計そのものへの電源は、写真では切れていますがお隣の可変電圧電源の一次側（DC7.5～12V）から引いてきています。これを三端子レギュレータで5Vに落として使っています。&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;LEDのコモン側のドライバーは手元にあったチップトランジスター2SA1202を使っていますが、裏面に実装してあるので写真には写っていません。&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;回路図とソースコードは次回以降にて。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-6555666689297670095?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/6555666689297670095/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=6555666689297670095' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6555666689297670095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6555666689297670095'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/tiny26l1.html' title='Tiny26Lで電圧計(1)'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pu3jRc33fFQ/SNxp89uTRjI/AAAAAAAAABU/IZYkxuVl8sA/s72-c/VM26.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2654018561442012665.post-6263927127325908864</id><published>2008-09-26T11:37:00.009+09:00</published><updated>2008-09-26T14:06:07.743+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='電子工作'/><title type='text'>電子工作ブログを始めます！</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SNxOor9GjII/AAAAAAAAABE/mLDzqXVafwk/s1600-h/AVRs.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 230px; height: 141px;" src="http://3.bp.blogspot.com/_Pu3jRc33fFQ/SNxOor9GjII/AAAAAAAAABE/mLDzqXVafwk/s320/AVRs.JPG" alt="" id="BLOGGER_PHOTO_ID_5250157726507895938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ご来訪ありがとうございます。Hazie（へいじー）と申します。&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;このブログでは私が趣味に仕事に愛用しているAVRという&lt;a href="http://www.atmel.com/"&gt;アトメル社&lt;/a&gt;の8ビットマイコンを使った工作を中心に紹介していきたいと思います。回路図もソースも公開していきます。皆さんの電子工作ライフに少しでも役に立てばうれしい限りです。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;また、電子工作に限らず様々な工作ネタ、技術ネタ、科学教材ネタなども雑多につづっていこうと思います。&lt;/span&gt; &lt;br /&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;インターネットとの付き合いはものすごく長いのですが、いままでずっとROM野郎で、自ら発信するのは初めてです。ちょっと緊張しています。どうかよろしくお願いします。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2654018561442012665-6263927127325908864?l=make-it-hazy.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://make-it-hazy.blogspot.com/feeds/6263927127325908864/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2654018561442012665&amp;postID=6263927127325908864' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6263927127325908864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2654018561442012665/posts/default/6263927127325908864'/><link rel='alternate' type='text/html' href='http://make-it-hazy.blogspot.com/2008/09/blog-post.html' title='電子工作ブログを始めます！'/><author><name>Hazie（へいじー）</name><uri>http://www.blogger.com/profile/14400569395148095577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_Pu3jRc33fFQ/SZ5-_CwF8KI/AAAAAAAAAMs/RyZlP8HLc70/S220/hazie_75x75.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pu3jRc33fFQ/SNxOor9GjII/AAAAAAAAABE/mLDzqXVafwk/s72-c/AVRs.JPG' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
