SVX日記
2004-08-02(Mon) 名古屋ぐるぐる
カミさんは連休でないので、今日帰る必要がある。新幹線は名古屋15時発なので、それまで名古屋港の水族館でも連れて行ってと思ったが、どうも休みらしい。仕方ないのでコンビニでガイドを立ち読みして見つけた「イオン熱田」内にある「ナムコ緑起町一丁目」というところに連れて行くことにした。
2004-08-03(Tue) 豊川の友人Y
今日は午後から豊川の友人Yと会う約束がある。が、午前はヒマなのでSVXにオヤジを乗せて豊田へ向かう。豊田はおいらが高専時代に通っていた豊田高専がある場所である。ひさびさなので勝手に学校内を車で回る(いいのか!?)。なつかしい校舎や、2年間住んでいた寮を見て回る。寮はそうとう古ぼけており、食堂は建て替えられていたが、昔の雰囲気はそのままであった。
世界的な車の街とはいえ、道路はショボい豊田であるから、渋滞が激しい。トヨタ車で溢れかえっている。車の街なのだから、トヨタが金を出してドカーンと片側10車線とかにするべきではないのか? エラそうに「カンバン方式」とかいって、業者イジメしてるんじゃないぞ。納入待ちのトレーラーを道に溢れ返らせといてなにがECOじゃ、おまえがEGOじゃ。プンプン。
一度、実家に戻り、東名で豊川へ。時間が余ったので、ちょっと面白い鉄塔を回収してみた。鉄塔撮影の趣味も再開したいが、ココんトコそうヒマでもないからなぁ。
2004-08-04(Wed) 安城の友人O
やはり時間が余ったので、ガキの頃に住んでいた三河安城駅近くを車で回る。ついでにSVXに乗って初めてのオイル交換をする。なんとなく、アイドルがバラついてきた感じがしたので、3,000kmには若干早いものの交換したのだが、あまり変化ナシ。気のせいか?
オイル交換後、友人Oの家へ。乗っけて、大須へ向かう。やはり昔の友人は遠慮がいらなくてよい。昼前頃に大須に着く。大須は名古屋のいわば秋葉原。適当にショップを回りながら、目当てのボントンへ。ボントンは名古屋のいわば秋月電子!? 昔から電子工作に興味があったものの、ジャンク屋の部品を品定めできるほどではなかったので、興味本位で見ていただけだったのだが、今回はわかる!! 意外といろんなものが置いてあったんだなぁ。これなら、名古屋に引っ越してもやっていけるかも。
秋葉であまり見ないのに、コチラで意外と見た物は、スイッチング電源とアナログメータ。特にボントンのアナログメータは多種多様でひととおりチェックしてしまった。秋葉にもあるけど、キレイで高いんだよね。ココには汚いけど数百円で買えるものばかり。とりあえず、目的はないけど、ピコピコ動かしてみたいので500円で2個ほど購入。うまくいったら、今度来た時に大量に買って松本零士ごっこしてみたいところだ。
昼になったので、軽くメシを食うべく、名古屋名物コメダコーヒーへ。向かう途中、妙にレトロなスバルのディーラー!?を発見。ちょっとセピアにしてみたけど、いかがだろうか? つーか、この店なにを売っているんだろう。よくわからん。コメダコーヒーでは友人Oがクドいソフトクリームデニッシュ(!?)を食っていたが、こういうのを見て驚くオレは名古屋人の気が抜けてきているのだろうか。
驚き!! パックマンのオリジナル筐体が現存しているとは!! 昔のテーブル筐体のディスプレイが小さかったことにも驚き、そのレバーの感触も今とは違うことにも驚いた。タイトーのスピードレースって昔よく見たけど、そのまんまの姿で置いてあるってのもスゴいし、プレイしてもハンドルがシッカリ動くし。
タイトーのダライアス筐体3連発もスゲえ。ダライアスは秋葉のトライアミューズメントタワーでやってたので、久々にダライアス2をプレイ。あっけなくウニの先あたりでカメにやられてしまったが、懐かしい。友人Oは久々にゼビウスしてたが、軽くシオナイトまで行ってたりして、意外と昔の腕って残ってるみたいだ。できれば、3画面筐体にはニンジャウォーリアーズが入っててほしかったとか、ループレバー筐体には怒号層圏でなく、初代IKARIがよかったとか思ったが、それは次回に来たときに期待しよう。
2004-08-05(Thu) 帰省から戻り
さて、いつまでも実家にいてもナンなので、そろそろ千葉に帰る。なにやら、ウチの母と母の妹が「東京さいぐだ」というので乗せて帰ることになった。スタイリッシュでも大人4人が乗れるというSVXと自慢した手前だし、とりあえず母を乗せて名古屋の祖父の家に母の妹を迎えにいく。
ところが、祖父の家の前の道が狭いので、ちょっとした道の窪みに車を縦列駐車しようとしたところ、微妙に「ミシ……」という音が……。ありゃー、別に縦列が不得意なわけではないのだが、後ろ見ながらにして右後ろのバンパーを軽くこすってしまった模様。SVXの後部ってグラマーに湾曲してるし、壁がのっぺりしたペイントで遠近感がツカめなかったとはいえ、ショック。まぁ、コンパウンドで取れそうな程度なのだが……。
なんとか気を取り直して、高速へ乗り、ドーンと都内へ。乗せてきた連中は、お台場、六本木ヒルズ辺りを見たいというので、新橋辺りのホテルへ向かった。……が、スゲェ渋滞。ナビのおかげで迷わなかったとはいえ、あの辺りの道は車線の配置まで覚えてないと思うような方向に向かえない。別に銀座なんぞ案内したくはなかったのだが、成り行きで銀座のど真ん中を通って、新橋のホテル前へ。トホホ。
2004-08-06(Fri) アナログメータ確認
小さいほうが200円、大きいほうが300円。双方ともデータ不詳。ただし、小さいほうには「アカ/クロ 6V」「キイ/クロ 3V」というメモ書きがあったので、その電圧を加えてみるとよい感じに針が振れた。付いている抵抗器は2.12kと4.73k。これは簡単に使えそうだ。
2004-08-09(Mon) 南国の事情
こういってはナンだが、南国に発展途上国が多い理由は明白である。いや別に言い訳するつもりはないが、現在ウチの居間のクーラーが壊れていて、なんにも手に付かんのである。ホント無理もないと実に実感する次第なのである。
あ、そういえば、やっとパックマンの3回目のデモを拝むことができた。いやー、まだ完全に飽きたわけではないが、このゲームの深さには感服する。モンスターの動きといい、迷路のデザインといい、積み上げられた奇跡を感じるな。現代まで生き続けるだけのことはある。それはそうと、3回目のデモの意味がよくわからんのだが、これって深読みしてよいのだろうか。いや、なに、その、まぁ、気のせいか。
それはそうと、ソレの第2弾はまだ注文してないのだが、実は先日見つけたこんなモノを一緒に買おうとしたところ品切れで、まだ注文することができないでいるのだ。つーか、日本ではまったく話題にもなっていないのがウサン臭いが、アッチでは品切れするぐらいなのだからやっぱりそれなりにスゴいアイテムなのだろう。1秒でスタンバイ、1〜5秒で触っても平気、ワイヤレスで、1,000円チョイ……そんじゃ今までのハンダゴテの立場はどうなるんだよ……って同情する間にも、早く入荷してくれー。
2004-08-10(Tue) ラジオ体操サーバ構築
かなり前からなのだが、朝起きると背中から胸にかけてズーンと痛い。起きてからしばらくソファでグダグダしなければならないほど痛いのである。実はかなりヤバい病気なのではないかと心配していたのだが、あるときフト気がついた。
いわゆる運動という意味では、幸いにして毎日の通勤路にかなりの歩行が含まれるため、さほど運動不足の状態とは思わない。しかし、それは足腰の話。昼は職業プログラマ、夜は趣味プログラマ+下手ソルダーという毎日を繰り返していると、気がつけば、上半身は動かざること山の如しという状態なのである。
そこで試しにラジオ体操っぽいコトをしてみたところ、自覚できるほど体全体が凝っていて、それだけでも次の朝はかなり症状が緩和したではないか。まぁ、ラジオ体操だけで改善してしまう生活というのもかなりヤバいのかもしれないが、やらないよりはマシであろう。少なくともこれからは毎朝ラジオ体操を心がけようと思う。
几帳面な人であれば、強い意思を持ち、毎朝6時半に起きてラジオを点け体操するであろう。比較的凡人であれば、一度朝6時半に起きてラジオをテープに録音するなりし、自分の生活時間に合わせて再生して体操するであろう。しかし、私の場合はちょっと違うのである。
まずは、体操の楽曲ソースの入手。私は自宅のLinuxサーバでビデオ録画&ラジオ録音システムを組んでいるのだが、毎日昼過ぎにNHK第二の英会話を録音しているラジオを、昨晩NHK第一にチューニング、予約録画録音スクリプトに朝6時半から10分間ラジオを録音する設定を追加しておいたのである。そして今朝、見事10分間のラジオ体操の番組が録音されたwavを入手、先日紹介した自作スクリプトcccdctを利用して、ラジオ体操第一と第ニを切り出し、各々mp3化したのだ。
次は毎朝体操の楽曲を再生する設定である。私がラジオ体操しているのを見たカミさんも体操するといい出した。が、カミさんは私より仕事に出る時間が早いので、私とは朝に体操したい時間が違うのだ。そこで、crontabを用いて各々の好みの時間に再生する設定を登録したのである。
ちなみに自宅のLinuxサーバにはスピーカがつながっていない。では、音はどこから出るかというと、接続されているFMモジュレータから電波として出るのである。このFMモジュレータ、秋月のLCDパネルキットに私が追加改造したリモート電源プラグ対応にしてある。早い話がPC側からのコントロールにより必要なときだけFMモジュレータの電源が入れられるようになっているのである。よって、これもcrontabに登録するのである。
若干上の写真の補足をする。左の写真は、市販のFMモジュレータの電池ボックス部にICクリップを入れ、緑のLEDを回路に直列に挿入しながら、外部に電源供給ケーブルをピンヘッダとして出すという改造を施したものである。このLEDによりUSBからの5Vの入力を3Vに降圧し、元の単4電池2本による3Vの入力と合わせている。右の写真は秋月の「シリアル制御液晶表示モジュールキット」を改造したもの(思えば私の本格的な電子工作人生はこのキットの理解と改造から始まった)。改造点はUSBからの電源供給を可能にしたことと、パネル位置を移動、簡単なケースへ基板を止めたこと、赤と青のLEDのON/OFF制御、2箇所のピンフレームからの5V電源のON/OFF制御を可能にしたことだ。
そしてFMモジュレータからの電波はどこへ行くかといえばラジカセである。毎朝決まった時間にラジカセの電源を入れれば、ラジオ体操の楽曲が流れるという寸法である。んがッ!! 実はここさえも自動化してしまうのであった。またもやLinuxサーバに接続されたPC接続型学習リモコンを利用する。早い話がPC側からの赤外線信号により必要なときだけラジカセの電源が入るのである。やっぱり、これもcrontabに登録するのである。
左の写真は、電話台に固定してあるPC接続型学習リモコンである。もちろんケーブルはLinuxサーバに接続されている。これにより、エアコン、テレビ、ケーブルチューナ等をLinuxサーバから制御することが可能となっている。右の写真が新たに今回から制御されることになったラジカセである。
と、いうわけで、既に全ての設定を終え明日の朝からのラジオ体操には万全の体制である。時間になれば、FMモジュレータ電源ON、ラジカセ電源ON、ラジオ体操の歌、ラジオ体操第一、ラジオ体操第二、ラジカセ電源OFF、FMモジュレータ電源OFF、以上すべて自動的に処理が行われる。処理スクリプトもまったくもってそのまんま。平日の朝に限りこのスクリプトがcrondによって、カミさんの分と私の分の2回起動される寸法である。
#!/usr/bin/ruby
system("/usr/local/bin/aki-lcd -0x1500; /usr/local/bin/aki-lcd -0x1170")
sleep 2
system("cd MasterZapper/ruby; ./mzap.rb /dev/ttyS1 radio_pow.sig")
sleep 2
system("/usr/bin/mpg123 sounds/radio_exe/song.mp3")
sleep 2
system("/usr/bin/mpg123 sounds/radio_exe/first.mp3")
sleep 2
system("/usr/bin/mpg123 sounds/radio_exe/second.mp3")
sleep 2
system("cd MasterZapper/ruby; ./mzap.rb /dev/ttyS1 radio_pow.sig")
sleep 2
system("/usr/local/bin/aki-lcd -0x1100")
2004-08-12(Thu) PWM制御下調べ
今日は夕方に食事に行って呑んでたりしてた。よって、作業も少しだけ。先日購入したアナログメータを利用するためのPWM制御方法について勉強してみた。PWM制御というのは、簡単にいうとスイッチのON/OFFを高速で繰り返すことによって、ONとOFFの中間の出力を取り出す方法のこと。チョッパ制御ともいうらしい。また、PCのスイッチング電源の「スイッチング」もスイッチのON/OFFのことを指していて、PWM制御している電源のことである(たぶん)。
PWM制御は単純にスイッチのON/OFFをするだけなので、PIC上のプログラムで直接ON/OFFを制御してもいい(実際、以前にPIC12F629を用いて作ったUSB扇風機用1/fゆらぎアドオン基板はそうした)のだが、アナログメータを動かす場合は他にもいろんな処理をしたいので、プログラムがPWM制御するのにかかりっきりになるのはよろしくない。そこで、PIC16F819またはPIC16F648Aあたりに最初から備わっているPWM機能を利用して実現するという寸法である。そのための方法を勉強するのである。
まずは、Webで検索してPICFANのページ内に記述を発見。ざざっと読んで、次はMicrochipTechnologyのPIC16F819のオフィシャル英文マニュアルを読む。このマニュアルだけだとちょっとキツイんだよな。もうすこし実際のコード例が多いと助かるのだが。
9.3.3 PWM制御の設定
CCPモジュールをPWM制御に設定する場合、以下のステップが推奨される。
1.PWM周期をPR2レジスタに書き込む
2.PWMのON割合をCCPR1LとCCP1CON<5:4>に書き込む
3.TRISBをクリアし、CCP1を出力に設定
4.TMR2プリスケーラを設定し、T2CONに書き込んでTimer2を有効にする
5.CCP1CONをPWMモードに設定する(CCP1モジュールをPWMモードに設定する)
Note: TRISBの2か3かは、コンフィギュレーションビットの12ビット目(CCPMX)による
2004-08-13(Fri) PICのPWM制御、翻訳続き
なんだか、翻訳し始めたら楽しくなってしまったので、昨日に引き続き、PICのPWM制御機能の翻訳なのである。英語読んで、日本語にして、理解して……と繰り返すうち、最初はわかんなかったことも、なんだかわかったきて、日本語を一部意訳に書き直したりして。こういう技術文書の場合、内容を理解しないと日本語に直してもダメであることを実感した次第である。
ふと思ったのだが、翻訳は文章を創作するのと違い、気楽な楽しさがあるかもしれない。私は以前、ちょっとモノマネでSFなんぞを書いてた頃があったのだが、創作は到達点が明らかでないという苦しさがある。物語の展開をどっちに持っていくか、正解はないけど決めなくちゃならないからである。それに引き換え、翻訳はひとつひとつ着実に埋めていけば、必ず正解に到達できる。例えるなら、絵を描くのが創作で、ぬり絵を仕上げるのが翻訳というところであろうか。
9.3 PWMモード
パルス幅変化(PWM)モードとは、CCP1ピンに分解能10ビットのPWM出力を行うものです。PORTBデータ・ラッチによりCCP1ピンを多重化してから、TRISBの
注:CCP1CONレジスタをクリアすると、CCP1のPWM出力ラッチはローレベルになってしまいます。これはPORTBのI/Oデータ・ラッチではありません。下図(左)は、CCPモジュールをPWMモードにした場合のブロックダイヤグラムです。CCPモジュールをPWMモードにする方法については、9.3.3節を参照のこと。
PWM出力は、下図(右)のように、PWM周期と有効期間(High出力期間)から構成されています。
PWM周波数はPWM周期の逆数(1/PWM周期)です。
9.3.1 PWM周期
PWM周期はPR2レジスタで指定します。PWM周期は次の式で求められます。
PWM周期 = [(PR2) + 1] x 4 x Tosc x (TMR2プリスケーラ設定値)
PWM周波数は(1/PWM周期)として定義されます。
TMR2とPR2と等しい場合、次のPWM周期に以下のことが発生します。
・TMR2のクリア
・CCP1ピンのセット(ただし、PWM有効期間が0%の場合はCCP1ピンはセットされない)
・PWM有効期間はCCPR1HへCCPR1Lからラッチされる
注:Timer2のポストスケーラ(節8.0参照)はPWM周波数には関与しません。
ポストスケーラはPWM出力とは異なる時の周波数サーボアップデートに用いられます。
9.3.2 PWM有効期間
PWM有効期間は、CCPR1Lレジスタの8ビットとCCP1CON<5:4>の2ビットで指定され、最大10ビット分解能まで利用できます。PWM有効期間は次の方程式で計算できます。
PWM有効期間 = (CCPR1L:CCP1CON<5:4>) x Tosc x (TMR2プリスケーラ設定値)
CCPR1LとCCP1CONの<5:4>で表されるPWM有効期間はいつでも変更できますが、TMR2とPR2が等しくなるまで変更はCCPR1Hへ反映されません(つまり、そのPWM有効期間内は変更されません)。PWMモードにおいて、CCPR1Hは読み出し専用レジスタであり、PWM制御の際に乱れを生じさせないため、CCPR1Hレジスタと内部の2ビットによりPWM有効期間を二重化して記憶しておくあるのです。そして、CCPR1Hレジスタと内部な2ビットがTMR2と一致すると、内部の2ビットのQクロックがTMR2プリスケーラの2ビットに連結され、CCP1ピンがクリアされます。
PWM制御の最大分解能は以下で式で与えられます。
PWM分解能(bits) = log(Fosc / Fpwm) / log(2)
注:PWM周期より、PWM有効期間長い場合、CCP1ピンはOFFになりません。
;1. PWM周期をPR2レジスタに書き込む
SET RP0, (STATUS) ; バンク1へ
LD A, 0FFh
LD (PR2), A ; PWM周期をFFに
SET RP0, (STATUS) ; バンク0へ
;2. PWM有効期間をCCPR1LとCCP1CON<5:4>に書き込む
LD A, 40
LD (CCPR1L), A ; PWM有効期間に40(25%)をセット
; RES 4, (CCP1CON)
; RES 5, (CCP1CON) ; どうせ後で0クリアしてしまう
;3. TRISBをクリアし、CCP1を出力に設定
SET RP0, (STATUS) ; バンク1へ
RES 2, (TRISB) ; 今回はPORTBの2番をPWMする
SET RP0, (STATUS) ; バンク0へ
;4. T2CONに書き込み、TMR2プリスケーラを設定、Timer2を有効化する
LD A, 00000100b
LD (T2CON), A ; TMR2 ON & PRESCALER x 1
;5. CCP1CONをPWMモードに設定する
LD A, 0Ch
LD (CCP1CON), A ; PWMモードに設定(ついでに分解能の下位2ビットを0固定)
;Note: TRISBの2か3かは、コンフィギュレーションビットの12ビット目(CCPMX)による
2004-08-15(Sun) アナログメータ基本動作確認
今日は、とりあえず、アナログメータの針が動くところまで。昨日書いたコードには、バンクを0に戻すつもりで、戻していないというバグがあったので、ちょっと悩んでしまった。気づいてチョイと直したところアッサリ動いたのだが、CCPR1Lに値を書き込むだけという簡単なコードでPWM制御ができることには、改めて驚いた。今後は自製でPWM制御ルーチンを書くなんてやってられませんな。
とりあえず、PCのシリアルポートに接続し、CPU使用率を表示させたりしてみたい……のだが、WindowsだとCPU使用率を得るだけでもひと苦労のようだ。なんとかググッて、Win2k上でCPU使用率を表示するGPL印のソースコードを見つけたところで、今日はおやすみである。ホントにGPL万歳である。
; ################################################################################
; #
; # メイン処理
; #
MAIN ; MAIN
; ;1. PWM周期をPR2レジスタに書き込む
bsf STATUS, RP0 ; SET RP0, (STATUS) ; バンク1へ
movlw 0FFh ; LD A, 0FFh
movwf PR2 ; LD (PR2), A ; PWM周期をFFに
bcf STATUS, RP0 ; RES RP0, (STATUS) ; バンク0へ
; ;2. PWM有効期間をCCPR1LとCCP1CON<5:4>に書き込む
movlw 0h ; LD A, 0h
movwf CCPR1L ; LD (CCPR1L), A ; PWM有効期間に0をセット
; ; RES 4, (CCP1CON)
; ; RES 5, (CCP1CON) ; どうせ5.で0クリアしてしまう
; ;3. TRISBをクリアし、CCP1を出力に設定
bsf STATUS, RP0 ; SET RP0, (STATUS) ; バンク1へ
bcf TRISB, 2 ; RES 2, (TRISB) ; 今回はPORTBの2番をPWMする
bcf STATUS, RP0 ; RES RP0, (STATUS) ; バンク0へ
; ;4. T2CONに書き込み、TMR2プリスケーラを設定、Timer2を有効化する
movlw 00000100b ; LD A, 00000100b
movwf T2CON ; LD (T2CON), A ; TMR2 ON & PRESCALER x 1
; ;5. CCP1CONをPWMモードに設定する
movlw 0Ch ; LD A, 0Ch
movwf CCP1CON ; LD (CCP1CON), A ; PWMモードに設定(分解能の下位2ビットを0固定)
; ;Note: TRISBの2か3かは、コンフィギュレーションビットの12ビット目(CCPMX)による
;
MAIN1 ; MAIN1
bsf PORTB, monitorLED ; SET monitorLED, (PORTB) ; モニタLED ON
movlw 010h ; LD A, 010h
addwf CCPR1L ; ADD (CCPR1L), A ; PWM有効期間を16(6%)加算
movlw 10 ; LD A, 10
call WAITnx01sm25us ; CALL WAITnx01sm25us ; 1秒待つ
;
bcf PORTB, monitorLED ; RES monitorLED, (PORTB) ; モニタLED OFF
movlw 010h ; LD A, 010h
addwf CCPR1L ; ADD (CCPR1L), A ; PWM有効期間を16(6%)加算
movlw 10 ; LD A, 10
call WAITnx01sm25us ; CALL WAITnx01sm25us ; 1秒待つ
;
goto MAIN1 ; JP MAIN1
;
2004-08-16(Mon) ハンダゴテほか到着!!
出勤前に届いてしまったので、思わずひととおり試してしまって、少し遅刻してしまった。今回の購入物の詳細は以下のとおり。今まで2回の買い物した時は送料は20ドル前後だったが、今回はガムがかさばったためか、ちょっと高めになってしまった。
Product | Total | |
---|---|---|
Cold Heat Soldering Tool - Soldering Tool | $19.99 | |
Cold Heat Soldering Tool - Conical Tip | $9.99 | |
Namco TV Classics - Ms. Pac Man | $24.99 | |
Jolt Gum - Spearmint Office Box | $16.99 | |
Sub Total: | $71.96 | |
Sales Tax: | $0.00 | |
Shipping & Handling: | $27.30 | |
TOTAL: | $99.26 |
ケースは安っぽいが、中の本体は想像より品位のある外装。大きさはほぼ予想通り。スイッチがスライド式なのは意外だった。というのも、押して1秒でハンダ付けできるとのことなので、ボタン押しながら使うものと思っていたのだ。電池は単3が4本。本体下部の2本のネジを外し、カバーを外してセットする。ネジはカバー側から抜けず、ネジ受け部は金属だ。比較的頻繁に電池を入れ替えなければならないだろうから、この辺がシッカリしているのはポイントが高い。ちなみに、上の右の写真の矢印の元がカバーのネジ、矢印の先が金属のネジ受けだ(下のニセカメラは重し代わりで深い意味はない)。電池室にはリボンが付いていて楽に取り出せるようになっているが、これはなくてもよかったかも。
ペン先に当たる部分に、添付のbevelタイプのコテ先をセットしてみた。スッと差し込むだけだが、キッチリとハマる。上下ひっくり返して差し込むこともできた。スイッチをONにすると、コテ先下部の白色LEDが点灯。コテ先の付近を照らすようになっている。実はこれもかなり便利でポイントが高い。このハンダゴテは電池駆動だからLEDを点灯するにも都合がよいだろうが、すばらしいアイデアだ。
早速、ハンダを当ててみる……が、溶けない。1秒ってのは過剰広告か!? と思いきや、コテ先のスリットの中に差し入れた瞬間、溶けた!! なるほど!! 瞬時に使える秘密はコレか。どうやら、スリットの左右に電気が流されており、それを短絡させる形にすると発熱しハンダを溶かすらしい。たまに火花がちょっと赤く光ったりもする。なるほどと感心しつつ、スイッチを切って数秒後、恐る恐るコテ先を触ってみると、ほんのり暖かい程度。こりゃスゴイ。しかもこのハンダゴテ、ハンダ置き台も、コテ先を拭うスポンジも必要ないときた。コテ先にハンダが付かないのだ。まだ、本格的に使ったわけではないが、ハンダ吸い取り線もちゃんと使えたし、ハンダゴテ革命ですぞ、これは!! 近いうちに実戦投入してみて、続きのレポートをしたいと思う。
ブリスタパッケージを剥ぐと、前の製品と同じくシッカリした感じの筐体である。今回は電池室は裏面でなく、背面。ネジを1本外して単3電池を4本セット。前の製品はいまだに電池が切れていないことだし、ネジ止めでも問題ないだろう。
テレビにつないでスイッチオン。前の製品と同じく2,3秒でゲームセレクト画面が出た。細かいゲームのインプレッションは後日に譲るとして、今回はリセットボタンに工夫がある。前の製品はリセットボタンを押すとハード的にリセットがかかる感じだったが、今回の製品はメニューが現れてメニューに戻るかどうかが選択できるようになっているのだ。見方を変えるとポーズができるということでもある。個人的にはポーズは必要悪だと思うのだが、前の製品では思わずリセットを押してしまうことが度々あったので、これは素晴らしい改善であることに違いない。
それから、ちょっと気にしていたポールポジションのハンドル操作である。最初にプレイした時、ジョイスティックを倒したが車が全く曲がらない。さては、ジョイスティックを回転させるのかと思い、ザンギエフな感じにスクリューパイルドライバーをかけたがやっぱり車は曲がらない。実は、ループレバー状にジョイスティックをヒネるのが正解であった(ループレバーと違い、無段階に曲がり、センターにリターンもする)。ちゃんとアナログ挙動しているようだし、こりゃ素晴らしいアイデアである。一通りどのゲームもいわゆる「節目」までプレイしてみたが、基本的にどのゲームも再現度は高そうだった。今後、各々のゲームごとに細かいレポートをしていくので期待しててほしい。
2004-08-17(Tue) Cold Heat Soldering Toolの取扱説明書の和訳
COLDHEATハンダごてを購入いただき、誠にありがとうございます。COLDHEAT(特許取得済)技術はほんの数秒でハンダ付けに必要な熱を発生し、しかもコードレスデザインですのでどこでも作業が行えます。
先端の割れた形状のコテ先(特許取得済)は、絶縁された双電極に接続され、製品内部の電気回路につながっています。コテ先の双端がハンダ付け箇所(配線、部品の足、ハンダ、プリント基板など)のような導通性の材料に同時に接触すると回路が形成され、高電圧により瞬時にコテ先は熱せられます。発生した熱はハンダ付け箇所を急速に熱し、ハンダ付けは瞬時に完了します。
1. 本製品の電池室のカバーの部分(底の灰色の部分)にある2本のネジを緩めてください。
2. 電池室のカバーをつかみ、本体から静かに取り外してください。
3. 電池の極性(+/-)表示に従い、電池を入れるか交換してください。
4. 電池室のカバーを元の位置に戻してください。
・古い電池と新しい電池を混ぜて利用しないで下さい。
・アルカリ電池、マンガン電池または充電池(ニッカド)を混ぜて利用しないで下さい。
・長期間用のハンダごてを利用しない場合、電池を取り出して下さい。
・電池の廃棄はすぐに適切に行って下さい。
初めてCOLDHEATのケースを開けると、コテ先はケースの左上に入っており、コテ本体の先端部分は半透明のキャップにより電気的な接触から保護されています。保護キャップを外し、コテ先をコテ本体の先端部分のガイドに沿って押し込み、挿入してください。
1. 本体上面のON/OFFスイッチを操作すると電源が入り、白色LEDが点灯します。コテ先はまだ冷えていますが、ハンダ付けの準備は完了しています。
2. コテ先を熱するには、コテ先の双端を通電性のハンダ付け箇所にしっかり接触するように静かに押し付け、糸ハンダを当ててください。コテ先が正しく接触すると、赤LEDが点灯、ほとんど瞬時にコテ先が発熱し、ハンダが流れ滑らかな接点を形成するに十分な熱が与えられます。ハンダ付けの間、コテ先に少しスパークが生じるかもしれません。
注意:強く押さないで下さい。不必要に強く押し付けても、能力は向上しないばかりか、コテ先を破損してしまいます。コテ先に十分な熱が発生しない場合、コテ先の双端が通電性の材料と接触していません。赤LEDが点灯するまで、接触が確実になるよう、コテ先の位置を変えて下さい。
3.接点が完成したら、コテ先をハンダ付け箇所から離してください。コテ先は1〜5秒以内に触れても安全な温度まで冷えますが、ハンダ付け作業に要した時間に依存します。
COLDHEATハンダごては作動状態を白色LEDと赤LEDで以下のように表示します。
白色LED | 赤色LED | 状態 |
---|---|---|
消灯 | 消灯 | 電源OFFで、電流は流れない状態。 |
点灯 | 消灯 | ハンダ付け準備完了だが、コテ先は冷えている状態。 |
点灯 | 点灯 | ハンダ付け中で、コテ先が熱せられている状態。 |
2004-08-18(Wed) 続Cold Heat Soldering Toolの取扱説明書の和訳
昨日に引き続き、取説の和訳である。例によって翻訳品質は一切保証しない。特に保障規約のあたりは法律的な問題を含んでいるので「ウソが書いてある」とまで思って、必要に応じてマニュアルの原文を確認するように。では、どーぞ。
以下に、COLDHEATによるハンダ付け技術を向上するための何点かのコツを挙げます。
・小さな接点の場合、コテ先は早く熱せられ、すぐ接点ができますので、大きな接点の場合以外、不用意に長い時間、コテ先を当てる必要はありません。
・コテ先の双端をハンダ付け箇所にうまく接触できない場合、本体を立てて下さい。赤色LEDは双端が正しくハンダ付け箇所に接触している場合に点灯します。数分の練習で、以後ずっとCOLDHEATを楽しく使えるようになることを保証します。手際のよい作業によってコテ先の寿命は延び、よい接点が作れることを忘れないで下さい。
・いくつかハンダ付けするうち、コテ先にスズメッキは不要であり、濡らす必要もないことに気づくはずです。双端で端子からハンダを除去することもできます。
・本製品は一般の電子工作や0.5mm〜1.0mm程度の配線、小さな装飾品の修理、集積度の低いプリント基板や部品などにおいて、趣味レベルから簡単なプロユースに耐えるよう作られていますが、高熱に弱い部品や集積度の高い部品のハンダ付けには適しません。もし使用の可否に疑義を生じた場合は、ハンダ付けしようとする部品のデータシートを確認するようにお勧めします。
・ピン間の狭い電子部品をハンダ付けする場合、異なるピン間をコテ先の双端で短絡しないように留意してください。内部の回路に電流が流れ、部品を破損する恐れがあります。
・コテ先の双端の間にハンダが溶けずに挟まってしまった場合、電源を切り、電気を通さない細い物で双端の間のハンダを取り除いてください。その他、導通性の物がコテ先の双端の間に挟まってしまった場合も、コテ先は熱せられた状態のままになりますので、確実に電源を切り、注意して取り除いてください。
・白色LEDが点灯した状態ではバッテリーを消耗しますので、使わない時は電源を切りましょう。
・この製品はバッテリーの交換なしに750接点以上のハンダ付けが可能です。
・0.8mm〜1.0mm程度の糸ハンダを利用するとよいでしょう。
・不用意に長い時間、コテ先をハンダ付け箇所に接触すると温度が上昇して損傷を与えることがあります。コテ先のハンダ付け箇所への接触は数秒以内にしてください。ハンダが溶けることで、煙が多量に出た場合、コテ先の温度が高すぎるサインです。
・多数のハンダ付けを行った後や、長時間コテ先をハンダ付け箇所に接触した場合、コテ先が触れることのできる温度に下がるまで、長めの時間がかかることがあります。
・コテ先が導通状態の場合(赤色LEDが点灯します)や温度が十分に下がるまでは、コテ先に手を触れないで下さい。コテ先にキャップをする前にコテ先が冷えていることを確認してください。
・電源を切り、コテ先にキャップをして、ケースに入れるのが正しい収納方法です。電源を入れたままにすると不用意に発熱を始めるかもしれません。
・コテ先の双端は破損しやすいので、注意して扱い、不必要に強く押し付けないで下さい。
・高温な場所に放置すると、電池や内部の電子回路を損傷することがあります。
・COLDHEATを分解すると、製品保証が無効になります。
・警告:この製品をはんだ付け等に使用する場合、カリフォルニア州が確認している発ガン性や先天性障害(奇形の発生など)を生じる化学物質を発生します(カリフォルニア州発行の健康と安全の手引き254249.5節以降参照)。
・特に鉛入りハンダを使う場合、ハンダ付けを行う場合に生じる煙は有害です。適切な換気を行うことに注意し、ハンダ付けに関する一般的な注意を参照してください。
・可燃物や爆発物の近くで使用しないで下さい。
この製品の製造上または材質上の欠陥は、購入から90日間保障されます。保障期間中に欠陥が生じた場合、製品または部品の交換が無償で行われます。この保障の範囲には、事故や誤った使用によって生じた損害は含まれません。
無制限の保証期間を義務付けている州の場合、上記の制限は当てはまりません。この保証規約は法的な権利として働きますが、州によってはさらに別の権利が与えられることがあります。製品に日付の記載されたレシートと返送料の7.95ドルを添え、着払いで以下の宛先に返品すれば修理または交換を行います。
この製品に対してさらに情報が必要な場合www.coldheat.comを参照ください。
双端状のコテ先(特許取得済)は、コテ本体の先端から引き抜くことで容易に外れ、取り替えることができます。コテ先には様々な形があり、各々状況に応じて作業効率を向上します。円すい状のコテ先(conical tip)は、装飾品や直径0.5mm〜0.8mm程度の配線、プリント基板の部品に、ノミ状のコテ先(chisel tip)は、一般電子工作、直径0.8mm〜0.1mm程度の配線、電子部品、小さい金属片に向きます。また、標準添付のものと同じ傾斜状のコテ先(bevel tips)を追加購入することもできます。傾斜状のコテ先は多目的に、小さいものから中型の部品に使用できます。
コテ先には様々な形があり、作業形態に応じて使い分けられますので、より使いやすい形状のものをwww.coldheat.comにてお探しください。
2004-08-19(Thu) とんでもないAcrobatで普及!?
今日は、次に作る予定のアナログメータの回路図を確認したり、Windows上でCPU使用率を得るコードをいじったり、次はPICのUSART機能でも翻訳のネタするかとPDF見たり、なにしろ雑作業に終始してしまった。
しかし、なんだねぇ。PICマイコンのPDFのマニュアルって、内容は悪くないんだが、見てて異様にイラつくのである。私は覚えが悪いもんで、PICのピン配置を頻繁に確認するんだが、サッと目的のページが開けた試しがない。PICは主に12F629、16F648A、16F819を使うことが多いんだが、当然縦断で比較、確認ができるわけもない。というか、考えるに悪いのはマニュアルよりAdobeAcrobatというアプリなんだな。
以前から不思議に思っていたのだが、なんでこんなデキの悪いビューアがデファクトスタンダードなんだろうか。Acrobatの普及とWebの普及はほぼ同時だったように記憶しているが(少なくとも私の感覚では)、同じ文書を表現するならHTMLのが圧倒的に便利ではないか。Acrobatには印刷すれば製本できるクオリティというのは確かに長所かもしれないが、紙の概念を何の考えもナシに画面に持ち込んでいるダケであり、その点では頭が悪いとしか言いようがない。HTMLの上位互換にするか、少なくとも簡単にHTMLに変換できるべきではないのか? だいたい、使ってるPCが233MHzってのを差し引いても、あの検索機能の遅さはなんなんだ? つーか、AdobeReaderにバージョンアップするのは構わんが、たかがビューアのクセに正体不明に重くなっているのはなんなんだ? 起動するだけで数十秒って、何の権利があって貴重な私の時間を消費するんだ。んなもん、改悪以外の何者でもないではないか。うがー、作ったヤツ尼寺へ行けぇーッ!!
AN0 | AN1 | AN2 | AN3 | AN4 |
---|---|---|---|---|
A | A | A | A | A |
A | A | A | VREF+ | A |
A | A | A | A | A |
A | A | A | VREF+ | A |
A | A | D | A | D |
A | A | D | VREF+ | D |
D | D | D | D | D |
A | A | VREF- | VREF+ | A |
A | A | A | A | A |
A | A | A | VREF+ | A |
A | A | VREF- | VREF+ | A |
A | A | VREF- | VREF+ | A |
A | A | VREF- | VREF+ | D |
A | D | D | D | D |
A | D | VREF- | VREF+ | D |
2004-08-20(Fri) 筆者多忙のため
日記はお休みである。今晩はカミさんと居酒屋に行って酔っ払ってしまったし、明日は早朝から友人と釣りに行く予定なので、早寝せんとイカんのだ。とはいえ、一応、WindowsでCPU使用率を知るプログラムは完成の目処がついているし、PIC16F648AのマニュアルのUSARTの章の翻訳も進んでいる。が、どっちも、まだ公開できるほどではないのである。
本機のコテ先は破損しやすいので、強く押し付けないでください。
本機の赤色LEDは、コテ先とハンダ付け箇所が接触し、熱を発しているかどうかを表します。
赤色LEDが点灯しない場合、コテ先の双端が通電性のハンダ付け箇所に接触するように、コテ先の位置を工夫してください。
コテ先を強く押し付けると、問題は解決しないばかりか、コテ先を破損してしまう恐れがあります。
本機は比較的軽いハンダ付け作業を行うよう意図されています。
0.8mm〜1.0mmの糸ハンダを利用することをお勧めします。
本機を利用する前に添付の操作マニュアルを読んでください。
2004-08-21(Sat) 失意の中、ルアーで釣りの巻
今日は早朝から友人Nと成田空港方面に釣りに向かう。友人には横須賀から車で来てもらい、ウチでSVXに乗り換え、成田に向かう予定である。せっかくなので、外しておいたLCDディスプレイをコンソールにセット、PCの電源をONにしカーナビを……って、なぬ!? 画面が落ち着かない!! たぶんディスプレイの故障であろう。垂直同期がズレているような画面のままだ。
SVXという車、ネットでもトラブルが多い車として評判なのだが、そのなかでもやっかいなエアコンの制御基板に関するトラブルが私の車にも出てしまったようなのである。オートエアコンの電源を入れると、自動的に設定温度が「ピッピッ」という音と共に上がってゆき、最高設定の32℃になってしまうという症状。修理を頼むと10万円コース確実というものである。はぁ。
比較的涼しい日だったし、早朝だったのでエアコンを切り、窓を開けそのまま成田に向かうことにしたが、もう心ここにあらず。久々に会った友人Nなのに、話すことは上の空……そこに熱風が「ゴゴゴゴー」……って、なにッ!! 熱風!?
えー、もう、どーにでもなれである。エアコンの電源を切って状態から、勝手に電源が入り、設定温度は32℃なのだ。マンガのような事態なのである。有効な対策は電源が入ったら即座にOFF。それの繰り返し。今日は「SVX買ったぜ!!」と自慢するはずだったのに、とんだポンコツ自慢。美人の彼女を自慢しようとしたら、その日に限って鼻毛がチョロっと出てたような最悪の事態といえよう。そのうち、エアコン自動ON機能は、外気温表示の百烈連打モードに変り、さらに失笑を誘う状態に。精神の安定を大きく崩しつつ、どーにかこーにか釣り場へ到着。とりあえず、切り替わらない気持ちを強引に切り替えて釣りの開始。トホホ。
さて、ここはルアー釣りでカエシのない釣り針を使うルールの釣り場。釣りなんて10年以上ぶりであるが、魚の気持ちになってルアーをひとつ選び、釣りを開始。この釣り場のなにが面白いって、水が透き通っていて魚が見える。こっちから見えるってコトは向こうからも見えてて警戒されているのかもしれんが、自分のルアーを魚が追っかけてくるのが見えるのは、かなり楽しい。途中で気づいたのか引き返す魚がいたり、あきらかに食いつけない小さな魚なのに必死で追いかけてきたり、ソッポ向いているところにルアーが当たって驚く魚がいたり、こりゃ面白いわ。
あっというまに5時間がすぎ、友人のYは2匹ゲット。おいらは……ゼロ。自分の選んだルアーで数度の引きがあったのは救いだ。まぁ、久々の釣りだし、周囲もガンガン釣れている雰囲気でもなかったし、そんなモンだろう。
2004-08-22(Sun) 日曜なのに、どよーん
今日は昼すぎに電気屋がアパート備え付けのエアコン修理にくる予定。で、来た。で、直らずに帰った。……とっことん、エアコンに関してはジャイアント凶の私である。なんとなく、今回の展開も予想できてしまうほどにツイてない。今年のおみくじには「待ち人、来ず。失せ物、出ず。空気、冷えず。」と書いてあったに違いない。電気屋の話によれば、基板を交換したのだが、問題の箇所は実は別の場所で、一瞬で交換した基板が焼損してしまったとのこと。いろいろ修理の担当のミスによる行き違いがあり、真夏にエアコンがサッパリ使えなかった点で私は怒り心頭なのだが、それを察してか、私が暴れ出す前に、この火曜日にはなんとかするという返事をしたので許す。そーでもしなければ、ここに「壊れると直るのに1.5ヶ月かかるエアコン」としてメーカー名と製品名をぶちまけてやるところだ。はぁはぁ。
それはそうと、昨日のLCDパネルにゲーム機をつないで見たところ、正常に映るではないか。もう一度、SVXに持っていって接続すると……ダメ。こっちもツイてないことこのうえない。つまりダメなのはPC本体だったということになる。ケーブルの可能性もあるが、限りなく低いだろう。夏の暑い日に露天の駐車場に置きっぱなしにしたのはよくないとはおもうが、こうも早く壊れるものだろうか? こっちもトホホである。
ダブルパンチを食らいつつ、先日購入したNamco TV Classics - Ms. Pac Manで遊ぶ。お気に入りは当初の予測と異なり、ゼビウス、マッピー、ギャラガの順。ボタンが左にあるパネルレイアウトと堅いボタン、持ちづらい筐体があいまって操作性はかなり最悪なのだが、そのせいもあっていい感じに上達が抑えられ、現在なんとかArea13まで来たところ。意外と短時間で終わる感じなのもよい。さて、Area16を超えられるのはいつになることやら。
2004-08-23(Mon) COLDHEATファーストインプレッション
今日は、昨日設計した基板の製作を開始。初めてのCOLDHEATの実戦投入でもある。秋月で購入した紙フェノール基板の上に次々に部品を乗せ、千石で購入したすずメッキ線でつないでいく。ハンダ付けはThinkGeekで購入したCOLDHEATハンダごてである。うぅむ、ワールドワイド。
で、COLDHEATのファーストインプレッションであるが……早い話あまりよろしくはなかった。しかし、ハンダごて革命ともいえる素晴らしいプロダクトだと思うし、基本的にまだ私の習熟が足りないと思うので、くれぐれも評価を決定して欲しくはないが、とりあえず初日のインプレッションとしてはあまりよいものではなかった。
ハンダ付けの基本ワザは「基板のハンダ付け箇所を暖め」「ハンダを流し込む」という2段コンボなのであるが、これはCOLDHEATでもキチンとこなせる。しかし「ハンダごてにハンダを乗せて」「ハンダ付け箇所に塗りつける」という、いわば邪道ワザはフツーのハンダごてにできても、このCOLDHEATでは不可能である。そもそも、コテ先にハンダがひっつかないのである。これは利点でもあるのだが。
ところが、上記の基本ワザも難しいことがあるのだ。というのも、ユニバーサル基板の輪状の銅箔を暖めているうちに焦げてしまい、ハンダが付かなくなってしまうことが何度かあったのだ。しかも、この焦げてしまう現象は、あまり暖め時間に依存していないような印象を受けた。つまり、一瞬で焦げてしまったことがあった気がするのだ。そして焦げると決してハンダが乗らない。
また、あまりハンダの溶けが悪いので不審に思い電池を確認したところ、すでに消耗している感じであった。マニュアルによれば700接点とあったが、ちょっと及ばない感じだ。新品の電池を使わなかったので、この辺りは単なる印象ではあるのだが。それに、コテ先がほんの少し欠けてしまった。やはり強く押してはイカンといくら説明されても、接触が悪いと若干は力が入ってしまう。慣れが必要とは思うが、やはりコテ先は思いのほか弱いので注意が必要である。
2004-08-25(Wed) PICのUSART機能の翻訳(送信の巻)
少々手抜きではあるが、今日はPIC16F648AのUSARTの項の送信側の翻訳を載せておく。なにぶん、まだ訳しただけで、実践してないので誤訳もあるかもしれんが、例によって翻訳品質は保障しない。体裁もいいかげんなので、受信側の翻訳が揃ったあたりで、いずれコッソリ直しておくつもりである。では、どーぞ。
12.0 汎用同期/非同期通信(USART)機能
汎用同期/非同期通信(USART)は、シリアルインタフェイスやSCIとも呼ばれており、端末装置やパソコンのような周辺機器との全二重非同期通信、もしくはA/DまたはD/A変換ICやシリアルEEPROMのような周辺機器との半二重同期通信に用いられます。
USARTは以下のモードを選択できます:
・非同期通信モード(全二重)
・マスタ同期通信モード(半二重)
・スレーブ同期通信モード(半二重)
RB2/TX/CKピン、RB1/RX/DTピンを汎用同期/非同期通信に用いる場合、SPENビット(RCSTA<7>)とTRISB<2:1>ビットを設定する必要があります。
図12-1に送信状態/制御レジスタ(TXSTA)、図12-2に受信状態/制御レジスタ(RCSTA)の詳細を示します。
図12-1 TXSTA: 送信状態/制御レジスタ(アドレス98h)
bit 7 | CSRC: クロック供給元選択ビット 非同期通信モード 設定不要 同期通信モード 1 = マスタモード(クロックはBRGにより内部で生成) 0 = スレーブモード(クロックは外部から供給) |
bit 6 | TX9: パリティ付き9ビット送信モード設定ビット 1 = パリティ付き9ビット送信モードに設定 0 = パリティなし8ビット送信モードに設定 |
bit 5 | TXEN: 送信許可ビット(下記注参照) 1 = 送信許可 0 = 送信禁止 |
bit 4 | SYNC: USARTモード選択ビット 1 = 同期通信モード 0 = 非同期通信モード |
bit 3 | 未実装: 常に'0'が読み出される |
bit 2 | BRGH: 高速ボーレートモード選択ビット 非同期通信モード 1 = 高速ボーレートモード 0 = 低速ボーレートモード 同期通信モード 使用しない |
bit 1 | TRMT: TSR(内部送信バッファ)状態ビット 0 = TSRは空 1 = TSRは使用中 |
bit 0 | TX9D: パリティビット(送信データの9ビット目を設定) |
図12-2 RCSTA: 受信状態/制御レジスタ(アドレス18h)
bit 7 | SPEN: シリアルポート設定ビット (TRISB<2:1>を設定する時は、RB1/RX/DTピンとRB2/TX/CKピンをシリアルポートとして設定する) 1 = シリアルポートは有効 0 = シリアルポートは無効 |
bit 6 | RX9: パリティ付き9ビット受信モード設定ビット 1 = パリティ付き9ビット受信モードに設定 0 = パリティなし8ビット受信モードに設定 |
bit 5 | SREN: 1バイト受信モード設定ビット 非同期通信モード: 設定不要 マスタ同期通信モード: 1 = 1バイト受信モードを有効 0 = 1バイト受信モードを無効 このビットは受信完了時にクリアされる。 スレーブ同期通信モード: 使用しない |
bit 4 | CREN: 連続受信モード設定モード 非同期通信モード: 1 = 連続受信を有効 0 = 連続受信を無効 同期通信モード: 1 = CRENがクリアされるまで連続受信を有効(SRENはCRENに上書きされる) 0 = 連続受信を無効 |
bit 3 | ADEN: アドレス検出設定ビット 非同期受信モード(RX9=1:パリティ付き9ビット受信モード): 1 = アドレス検出を有効、RSR<8>がセットされている場合、受信バッファの割り込みとロード が有効になる(訳注:?意味不明?) 0 = アドレス検出を無効、全てのデータは受信され、9番目のビットはパリティビットとして使用される 非同期受信モード(RX9=0:パリティなし8ビット受信モード): 使用しない 同期モード: 使用しない |
bit 2 | FERR: フレームエラービット 1 = フレームエラー発生(RCREGレジスタを読み、次のデータを正しく受信することで更新される) 0 = フレームエラー発生なし |
bit 1 | OERR: オーバーランエラービット 1 = オーバーランエラー発生(CRENビットをクリアすることによりクリアされる) 0 = オーバーランエラー発生なし |
bit 0 | RX9D: パリティビット(受信データの9ビット目) |
12.1 USARTボーレートジェネレーター(BRG)
BRGは8ビットのボーレートジェネレータで、非同期通信モードと同期通信モードの双方で利用されます。ボーレートの設定はSPBRGレジスタによって行いますが、非同期通信モードを用いる場合はBRGHビット(TXSTA<2>)の設定も影響します(同期通信モードでは影響しません)。表12-1に、USARTの各モード(ただし、クロックを内部で生成する場合)における、ボーレートの計算式を示します。
本式に、必要なボーレートとFOSCを与えることにより、SPBRGレジスタに設定すべき値(近似値)と、ボーレートの誤差が計算されます。
例12-1に、以下の状況における、ボーレートの誤差の計算例を示します:
FOSC = 16 MHz
Desired Baud Rate = 9600
BRGH = 0
SYNC = 0
RXピンの状態(High/Low)取得は、3回のRB1/RX/DTピンのサンプリング結果から多数決で行われます。BRGHビット(TXSTA<2>)がオフ(低ボーレートモード)の場合、サンプリングは16倍クロック(図12-1)の7,8,9番目の立ち下りタイミングで行われます。一方、BRGHビット(TXSTA<2>)がオン(高ボーレートモード)の場合、サンプリングは4倍クロック(図12-2,3を参照)の最初のクロックの立ち下り後、次の次の4倍クロックが立ち上げる前までの間に、3クロックタイミングで行われます。
12.2 USART非同期通信モード
このモードではstandard non-return-tozero(NRZ)フォーマット(スタートビット+8(9)データビット+ストップビット)によって通信が行われます。データビットは8ビットが一般的で、8ビットのボーレートジェネレータが生成するボーレート周波数に乗せ、LSb側から送受信されます。USARTの送信ポートと受信ポートは機能的に独立していますが、データフォーマットとボーレートは共通になっています。ボーレートジェネレータはBRGHビット(TXSTA<2>)の設定により、16倍または64倍クロックを生成します。パリティビットは自動的に照合されませんので、必要であればソフト側でチェックしなければなりません。なお、非同期通信モードはPICがスリープモードの間、停止します。
非同期通信モードに設定するには、SYNCビット(TXSTA<4>)をオフにします。
USART非同期通信モジュールは、以下の要素から成り立っています。
・ボーレートジェネレーター
・サンプリング回路
・送信ポート
・受信ポート
12.2.1 USART非同期通信送信ポート
USART送信ポートのブロックダイアグラムを図12-5に示します。
送信ポートの主役はシフト送信レジスタ(TSR)です。
ソフトウェア側で送信データを読み書き送信バッファ(TXREG)に設定しておくと、自動的にTXREGからTSRにデータが転送され、送信が開始されます。転送は直前の送信データのストップビットの送信直後(データが存在する場合)のタイミングに、1インストラクションサイクルで行われます。転送が完了するとTXREGレジスタは空になり、TXIFフラグ(PIR1<4>)がセットされます。事前にTXIEビット(PIE1<4>)を設定しておくと、この時点で割り込みを発生することもできます。なお、TXIFフラグは割り込み発生の有無に関わらず変化し、次のデータをTXREGレジスタに書き込むと自動的にクリアされます(ユーザが直接クリアすることはできません)。
TXIFフラグがTXREGレジスタの状態を示すのに対し、TRMTフラグ(TXSTA<1>)はTSRレジスタの状態を示します。TRMFフラグは読み出し専用で、セットしてある場合にTSRレジスタが空の状態であることを示しますが、フラグ変化により割り込みを発生することはできませんので、必要に応じてソフトウェア側で確認する必要があります。
注意1: TSRレジスタはメモリにマップされていないので、ユーザが直接操作することはできません。
2: TXIFフラグは、TXENを送信許可に設定している場合のみ有効です。
TXENビット(TXSTA<5>)をセットすることにより、データの送信が可能になりますが、正確にはTXREGレジスタにデータを書き込み、ボーレートジェネレータ(BRG)がクロックを発生する(図12-5)までは送信は行われません。逆に、先にTXREGレジスタに書き込み後、TXENビットをセットしてもよいでしょう。通常、送信開始時はTSRレジスタは空の状態なので、TXREGレジスタへの送信データを書き込んだ瞬間、送信データはTSRへ転送され、TXREGはすぐ空に戻ります。図12-7は連続送信が行われる様子です。なお、送信中にTXENビットをクリアすると、送信は中断され送信ポートはリセット、RB2/TX/CKピンはHigh状態に戻ります。
パリティ付き9ビット送信を行う場合、TX9ビット(TXSTA<6>)をセットし、パリティビットはTX9D(TXSTA<0>)に書き込んでおきますが、書き込みはTXREGレジスタに8ビットの送信データを書き込む前に済ませておく必要があります。これは、TXREGにデータを書き込んだ瞬間にTSRレジスタに転送(TSRが空の場合)される場合があるためで、この場合、不正なパリティビットがTSRレジスタに転送されてしまうからです。
非同期通信モードに設定する場合は、以下の順序で行います。
1. RB2/TX/CKピンとRB1/RX/DTピンを同期/非同期通信用の送受信ピンとして設定するため、TRISB<1>ビットをセット、TRISB<2>ビットをクリアします。
2. 望むボーレートが得られるようにSPBRGレジスタを設定します。高速ボーレートモードを利用する場合は、BRGHビットもセットします(12.1節 USARTボーレートジェネレータ(BRG)参照)。
3. SYNCビットをクリアし、SPENビットをセットすることで、非同期通信モードに設定します。
4. 割り込みを利用する場合は、TXIEビットをセットします。
5. パリティ付き9ビット送信を利用する場合、TX9ビットをセットします。
6. TXENビットをセットし(TXIFもセットされる)ことにより送信許可の状態にします。
7. パリティ付きの9ビット送信を利用する場合、パリティビットをTX9Dに書き込みます。
8. TXREGレジスタにデータを書き込むと送信が開始されます。
2004-08-26(Thu) シリアル通信……停止中
こーゆー日記で、毎日チョコチョコと作業報告なんぞを書いていると、いわゆる「工作作業日報」や「プログラミング実況中継」みたいな感じになってくる。まぁ、それが励みになることもあって、毎日の作業のゲインはかなりアップするのだが、なにがツラいって、作業的にほとんど収穫のない日の記述ほどツラいものはない。早い話が「ぜんぜん動いてくれません」という状態である。ホントに「ぜんぜん動いてくれない」と当然、書くネタに困り、ヘンに動かない理由を想像して書いてしまったりするわけで、それが見当はずれだった日には、とってもハズかしいことになるのである。
と、こんなことを書くからには、まさに現在その状態だといっているようなモンなのだが、事実ほぼその状態なのである。ちっともシリアル通信が動いてくれないのである。以前に同じような回路で動かした(まだ昨日のUSART機能は使ってない)のだが、今回は理由もわからずかなりハマり状態なのである。
2004-08-27(Fri) 環境構築!?
今日は昨日の「ちょっとばかり気づいた」ことをやってみた。それは「CTSピンのRTSピンへの接続である」(忘れていたことに気づいたのだ)。私はPICでシリアル通信を行う場合、電子工作を始める際に製作した秋月の「シリアル制御液晶表示モジュールキット」のシリアル通信回路を踏襲するのだが、この回路、PC側からのRTS/CTS信号を電源および信号電源としてとして用いるというすんごい工夫がしてあるのだ。
本来、RTS(Request to Send)は「自分が出力する、送ってくれ信号」だし、CTS(Clear to Send)は「相手から出力される、送っていいぜ信号」なのだが、これをつないでしまうことで「送り放題モードに固定」し、信号としての意味をなくしつつ、そのHigh出力を電源として流用するのである。モトネタは誰だか知らないが、これは目からウロコ、白子、黒子、猪苗代湖レベルのウルトラCといえるだろう。
昨日の状態は、PIC側からの線をCTSにしか接続してなかったので、PC側はRTSをONにし「送ってくれー」といっているのに関わらず、PIC側がCTSをONにせず「送るんじゃねーよ」のままなので、PC側からの送信がサッパリ行われないというカラクリだったのである。だからPICからPCへの一方通行だけはできていたたのね。理解。理解。というわけで、つないでみたところ、ちゃんと電圧が発生するようになった。PC側でRTSオフ時に-7.4V、RTSオンにすると+8.0V……規格では12Vなのにどう考えても低すぎるような気もするが、ノートPC(しかもジャンク)だし、こんなもんだろう。要は通信できればいいのである。
さて、安心したところで、ここ数日の疲れが出て眠くなったので、寝ぼけながらでもできるような作業をすることにした。まずは、愛用のテスターのヒューズ交換。といっても、今回は文字通りヒューズを交換するのでなく、ポリスイッチというヒューズの代わりになるパーツをヒューズに装着し、今後ヒューズが切れないようにしてみた。このポリスイッチというアイテムは電流が流れすぎると、内部の抵抗値が急激に上がり、冷えるまでは電気が通らなくなるという摩訶不思議な便利アイテムで、なんでもPCのUSBポートの内部には大抵挟まっているものらしい。
テスターの仕様書には、交換すべきヒューズとして200mA/250Vが指定されている。これは250Vまで耐えたれるヒューズで、定格は200mA、実際には400mA流れると溶断するというモノに交換しなさいという意味である。が、私が装着したポリスイッチはちょうど手元にあったコレで、耐圧60V、定格は250mA、実際には500mA流れるとトリップ(抵抗値赤丸急上昇)するというブツであった。耐圧が低すぎるような気もするが、普段12Vそこそこしか使わん私には問題ないだろう。ちゃんと電流が測れるようになった。よしよし。
寝る前にもうひとつ。テスト用の配線材の作成である。電子工作メインの私は、買ったばかりのテスターのテスターリードの先をチョン切ってICクリップに付け替えている。その先が傷んできたので、新しいものに付け替えるという作業である。ちなみに現在はテスター←→ICクリップが2本、ワニ口←→ICクリップが2本、ICクリップ←→ICクリップが2本という体制。ところが、テスター←→ICクリップの2本はちょっと先をペンチで直したら、もう少しイケそうな気配。それじゃというわけで、それ用に買っておいた2個のICクリップを、別途手元にあった2個のワニ口につないで2本増やすことにした。ついでに、ICクリップ←→ICクリップの2本は太いコードを使いすぎてとっても使いづらかったので、細いコードに付け替えた。
これで、テスター←→ICクリップが2本、ワニ口←→ICクリップが4本、ICクリップ←→ICクリップが2本という体制。ただ、いずれテスター←→ICクリップの先は交換しなくてはいけないだろうから、そのうち購入しておこう。なお、このテスターリードの先をICクリップに交換するという行為、作業性を著しく向上し、特に使いづらくなるわけでもないので、とってもお勧めである。
2004-08-28(Sat) 単調作業嫌い党
まずは訂正から。昨日の日記でシリアルポートの規格は12Vだと書いたが、ある本に5Vから15Vと書いてあることに気づいた。つまり、Highは+5V〜+15v、Lowは-5V〜-15Vを出力するいうことであり、ウチのメビウスは全然許容範囲であった。また、入力は電圧が違い、Highは+3V以上、Lowは-3V以下でよいらしい。ちなみに手元にあるRS232Cのレベル変換ICであるSipexSP3232は5.5V出力、ADM232は9V出力とこちらもバラついている。まぁ、いわゆるレガシーの代表選手なので規格もわりあいアバウツなのかも。以上、失礼した。
で、昨日の環境構築作業も終わったので、今日はアナログメータの開発を再開。基本的にあとはPICのソフトの問題だけなので、秋月のPICプログラマキットでPICにプログラムを書き込んでは動作確認の繰り返しである。……が、ここでひとつ問題が。上記の作業を正確に書くと、以下のとおりなのである。
1) cygwinのviでソース修正
2) makeでアセンブル(似せZ80->PIC->HEX)
3) 秋月のライタをPCのシリアルポートに接続
4) PICをライタにセット、書き込み
5) テスト基板をPCのシリアルポートに接続
6) PICをテスト基板にセット、動作確認
7) 動かず、首をかしげる
8) 1)に戻る
ここで一番ストレスの溜まるのは7)なのは当然なのだが、3)と5)もかなりのストレスの元である。そうなのだ、ウチのPCにはシリアルポートが1個しかないので、シリアルポートを使う装置の開発を行う場合、プログラムの修正を試すたびに、毎度差し替えなければならないのである。ゲゲーリン・ウンザリノコフ。
まぁ、上でも書いたが最近のPCからはレガシー追放の動きがあり、シリアルポートがUSBポートに取って変わられつつある。特にノートPCではシリアルポートが付いているものはほとんどなくなってしまった。USBシリアル変換ケーブルというアイテムも売っているのだが、やはりブラブラするのは使い勝手が悪いしダサい。シリアルポートは自作の友であるから、ここはひとつノートPCでも省かないで頂きたいところだ。ちなみに私がサーバとして使用しているPC(このSVX日記を運用しているPCだ)はCUB-Xというマザーに1GHzのPenIIIを積んだマシンだが、なんとシリアルポートが2個ついているという素晴らしいマザーだ。このマザー、適当に選んだ割には大当たりであった。まるで、バブル期に開発されたSVXのような、お金のかかっている設計のマザーである。IDEなんぞムダに4ポートもあるからHDDが8台もつなげるほどだ。トラブル発生時のためにあと3枚はストックしておきたいほどのお気に入りである。
2004-08-29(Sun) シリアルポート切り替え機+α「EX232CP」製作開始
まず、最低限必要と思われる機能は、スイッチによるシリアルポート切り替え機能である。PCの背面に作成予定の自作アイテム「EX232CP」をシリアルケーブルで接続、その右側に秋月のライタ、左側にテスト基板を接続、スイッチひとつで「プログラム書き込み」と「テスト基板動作確認」ができるようにするのである。
ただ、それだけでは面白くないので、電源供給機能もつけてしまおう。現在、私の愛用のPCであるメビウスノートは純正のACアダプタが壊れ、富士通のLOOXのアダプタをプラグだけ変換して、そのままつなげている(0.8Vほど足りないのだが動作に問題はない)。このアダプタは16V出力なので、これを秋月のライタにも供給してやり、コンセントの数を稼いでしまうのである。カタチ的には、アダプタのプラグを「EX232CP」に接続、そこから「メビウスノート」と「秋月のライタ」に電力を供給するのである。
最後に、テスト基板へのCTS経由の電力供給を、PCのシリアルポートからだけでなく、アダプタから直接供給できるようにもしてしまおう。PCのシリアルポートからの電力はあまりハデに使うことができない(規格によると500mAとあるが、実際はLEDを数個がギリギリである)ので、これによりテスト基板の電源も不要にしてしまうのである。これは、本来のCTSと直接供給との切り替えができるようにする必要があると思われるが、開発対象によって開発中に頻繁に切り替えるものではないので、ピンヘッダによる切り替えとしよう。なお、16Vを直接ぶっこむのはマズい(昨日書いたように仕様では上限が15V)ような気もするので、そのうち3端子レギュレータで減圧できるようにするため基板にスペースを空けておけばいいだろう。
ざっと、手持ちの部品を物色して、上記の写真の部品を集めた。回路設計はまだしてないので、電子部品はまだである。上左から、9PINのガワ、LOOXメビウス変換プラグ(利用中)、加工済みケース、ケースの残り、秋月のライタ用のアダプタプラグ、切り替えスイッチ、加工済みのユニバーサル基板、ネジ一式、9PINのメス、オス、ガワ付きのオス(再利用)、である。
ケースは100円ショップで4個100円のものである。秋月の基板を削らないと入らないのがアレだが、サイズがちょうどよく、半透明なのでLEDを外部に出す必要もなく、柔らかい材質で加工しやすく、なんといっても1個25円と安い。おまけに、開けやすさバツグン、しっかり保存、汚れを落としやすい角丸型で、電子レンジ加熱、冷凍保存OK(と書いてある)のニクいヤツである。
2004-08-30(Mon) シリアルポート切り替え機+α「EX232CP」ががーっと製作
例の「EX232CP」の設計は昨日完了したので、今日はががーっと製作するのである。その前に「EX232CP」という名称だが、特にカッコつけて名前を付けているワケではなく、呼び名がないと困るのと、開発中CVSで管理するのでプロジェクト名を付ける必要があるので付けただけである。CVSで管理するといっても、PICを使うわけではないのでファームのソースがあるわけでもなく、リポジトリに登録するのは、単に実体配線図の回路図のファイルだけなのだが。
ががーっと一気に製作するので、COLDHEATは使わず、使い慣れた安物ハンダゴテを使うことにした。途中、いつもの5Vと違って今回は16Vがメインなので、いつものように470Ωの抵抗をLEDの減圧に利用できず、手持ちの2.2kΩを利用することにしたとか、光らせるLEDの配色をどうしようか迷ったりとか(結局、CTSを緑、テスト基板からのTxDを赤、RxDを青とした)、切り替えスイッチの方向を逆に配線してアセったりとか(危うく配線し直すトコだった、グイッと180度ヒネれば解決である)、人差し指の甲をハンダゴテにジュッっとやったりしながらなんとか形にする。人差し指の甲が軽く水ぶくれになった以外、特に大きな問題は生じなかった。
まだ、シリアルポートのコネクタを付けていないので使えないが、簡単に配線チェックをした限りでは問題ないようだ。上部のジャックに16Vを入れて、軽くTxDやRxDに手を触れるとLEDも点灯することを確認できた。GNDに落とすと点灯するように作ってあるので当たり前なのだが、地球はデッかいアースであることを認識する一瞬である。
ちなみに今回、基板固定用に初めて皿ネジを利用してみた。ネジ頭がケースに埋没するタイプのネジで、見た目が多少よくなる。ただし、このネジを利用する場合、ネジ穴側をスリ鉢状に加工しなければならない点が面倒なのである。常々、専用の工具があれば欲しいと思っているトコロなのだが、今回は試しに手持ちの一番太い8mmの電動用ドリルをネジ穴にあてがって、手でウリウリと削ってみた。結果、ピッタリとはいかないが、半分以上ネジを穴を埋めることに成功した。今回タッパーの裏には若干出っ張っている部分があるので、これでネジがテーブルに直接当たることはなくなったが、やはり完全にネジを埋めてみたいものだ。今度、秋葉で専用工具の存在について聞いてみることにしよう。
2004-08-31(Tue) メビウス、クラッシュ!!
さて、昨日本体は完成済みなので、サクサクとコネクタをハンダ付けして仕上げる。……といいたいところだが、コネクタのハンダ付けって苦手なんだよね。しかもちょっと配線を間違えたりして、ハンダ付けし直したつもりが、気づくと再び同じようにハンダ付けしてたり。
どーにかこーにかテスターでの導通チェックも完了し、配線に間違いがないことを確認した後、イザ接続! というところで、またまたケチが付く。秋月のライタへのシリアルケーブル接続の際、コネクタのガワがジャマしてちゃんと刺さらない。えぇい、切断。ガワの一部を切断すると、接続部分がひどくガタついてしまうが、瞬間接着剤で無理矢理ひっつける。
そして、動作チェック。スイッチをライタ側に倒して、PICのプログラミングOK。スイッチを逆側に倒して、テスト基板の動作もOK。通信中には、ちゃんと緑のLEDが点灯し、CTSに電気が来ていることが確かめられる。しかし、赤と青のLEDは……点灯しっぱなし。あれ?
■ fk [ 突然すいません!2004年の書き込みに今頃 コメントですが、実は昨日COLDHEAT(997円)をコストコで入手し..]