プロジェクトの作成は順調に行き、コンパイルまで行った。prog_chrがないと叱られたのはご愛嬌でこれは数年前、ばんとさんが報告されていた。その通りにして無事コンパイルも成功した。このあとが大変だった。何と頼みのプログラマーAVRSPが動かないのである。このAVRSPは、Mega328が動かなかった時、BorlandのBCC5.5でコンパイルし直したものだ。DLPORTIO.DLLがないのでコンパイルし直せというエラーメッセージである。一度作り直す気力はない。オリジナルを持ち込んでみる。こんどは「giveio.sys」がないと怒られる。ふーむ、ウェブ情報では、さすがにWindow7ではgiveio.sysはサポートしていない。あきらめきれず、サイトをさまよっていると、-pvオプションで動いたという報告を見つけた。オリジナルのreadmeには、このオプションはUSBでは死ぬほど遅くなるということなので試したことはない。readmeを読み返していると、pvオプションは、単に、ポートIOをAPI経由か、ダイレクトかを区別するだけのオプションに思える。それなら、レガシーのCOM1を通すのに-pv1とすれば、良いのかもしれない。試してみる(幸い、Win7マシンにはCOMポートがついていた)。あたったー、これだー。今までと全く変わりない速さで、AVRSPが動いた。プログラマーは純正のDragonも持っているし、そろそろAVRISPmk2を買おうかと思っていたのだが、その必要がなくなった。AVRSPにこだわるのには理由がある。当研究所のAVRプログラムはAVRSPの機能を使ったUART、ISP-UART(と勝手に呼んでいる)を使ったシステムが多く、AVRSPが動かないのは、前のシステムを検証することが出来ないことになる。動かしておきたかった。Window7で失ったレガシー機器(8/7/2014)FPGAの開発環境や、ARMの開発環境Eclipseなどは、ちょうど良い機会なので、新しいバージョンを改めてインストールしなおすことにしている。これは使うときにやれば良い。ところが、もっと重大な問題があることに気が付いた。これまでにもご紹介した通り、所長は年期の入った飛行機マニアで、PCのフライトシミュレーターの操縦用に、本格的な、ペダルと操舵ハンドルを所持している(最近はめったに遊ばないが)。これらの機器のインターフェースはUSBではなく、昔のサウンドカードに必ずついていたMIDIやゲーム機器とつなぐgameport(DSUB15ピンのアナログインターフェイス)である。MSの少し古いフライトシミュレーター(FS2004これが一番充実している)は幸いWin7でも順調にインストールが出来たのだが、このgameportのサポートが、WindowsVISTA以来、切れていることに今さらのように気づいた。フライトシミュレーターの醍醐味は、キーボードでは味わえない。USBで動く同じような機能を持った機器が売り出されているので、これを買えば良いのだが、前とほとんど同じ機能のハードをもういちど買い直すのはいかにも無駄で、そんなことはしたくない。最初、gameportとUSBとの変換アダプターがあると思って、ウェブで検索したら、日本ではもう売っていないが、アメリカのアマゾンで売っているのを発見した。喜び勇んで、アメリカAmazonの会員登録をして、これを買おうとしたら輸出禁止製品にひっかかった。フライトシミュレーター関係の機器は、どうも311テロ以来うるさくなっているようだ。あの時のテロリストはMSのフライトシミュレーターでジェット旅客機の操縦に熟達し、実機を簡単に操縦したと言われている。Kawasakiという名前)がハードのドライバーを開発して、Creative(サウンドカードの開発元)のフォーラム上で公開したらしいが、すでにリンクが切れ、現物を手に入れることはできない。Creativeフォーラムのメンバー登録までして、このドライバーの行方を追っかけたのだが、どうしても見つけられなかった。このほかにもサイドワインダーというMSのジョイスティックのゲームポートインターフェースをUSBに変換するマイコン基板の自作ページというのがウェブ上にあり、AVRチップ(Atmega32U4らしい)を使う。これにも強い魅力を感じたが、こちらの手持ちディバイスCH-Productの製品がこれで動くという保証は全くない。これもあきらめるしかない。ここ暫くはフライトシミュレーターで遊ぶことが出来ない。ARM基板に入れるUARTコンバーターの移設でまた道草(8/16/2014)心電計プロジェクトの第4ステップ、表示系の基板は、結局、一番古いSTM32F103(CQ-STARMについていた石)を、AitendoのSTM生基板(気圧計につかったものをもう一つ買ってあった)につけたものにする。これに最近買った2.4インチのTFTディスプレイを載せる。部品箱から基板やCPUチップなどのパーツを取り出し、制作の準備に取り掛かる。久しぶりのQFP100ピンのCPUのハンダ付けは順調にすんだ。実体顕微鏡の威力を見せ付けられる。この生基板にはシリアルインターフェースのRS232CソケットがついていてUARTドライバーのADM3202チップのパタンがある。部品箱には表面実装のADM3202の予備がなかった。必要なインターフェースではないが空きのままにしておくのも何なので、買いなおそうと秋葉原に行ったら秋月がお盆で休みだった。千石でも売っていたが秋月の価格の2倍以上するので買わずに帰ってきた。なると意地になるのがいつもの癖である。SOPのADM3202なら以前RS232Cのブレークアウト基板を自作したときに使っている。これを強引にはずして、今度の基板に使うことにし、元のブレークアウト基板はストックのDIPのADM3202に付け替えた。相変わらずお馬鹿な工作である。ところが付け替えたブレークアウト基板が動かないのである。心電計のUARTでテストしたが動かない。UARTの接続はいつも送信か受信で大騒ぎするのだが(今度も間違えていた)、やっと動いたと思ったら、今度は初期メッセージだけが文字化けする。CP2102などのUSB経由では問題ないのに、このRS232C経由だと駄目なのである。おかしいのはオープニングメッセージだけで、あとは大丈夫である。ほっとけばよいものを(滅多に使わない)、動かないとなると、(しかも字化けというのが気に入らない)どうにも気になって先に進めない性質(たち)である。USI-UARTのバグを見つける(8/19/2014)ロジアナを持ち出して調べる。あれえ、送信の前に、TXラインに0.1μsほどのグリッチ(細いディップパルス)が出ている。USBのUARTは無視するが、RS232Cではだめなのか。テストに使っている、この心電計のUARTは例の、USI-UARTである。ほっておくわけにもいかない。プローブ点を増やして、このグリッチがどこで発生しているのか追求する。調べた結果、おかしくなっているところは何とUSI-UARTの部分ではなくメインプログラムのポートの初期化のところだった。PORTレジスターを設定したあと、DDRレジスターを初期化すると、一瞬、DDRレジスターの設定で、値が0になってしまうようだ。へー、こんなことってあるんだっけ。DDRの設定のあとPORTの初期設定をするようにしてグリッチはなくなった。これで字化けはなくなったはずとテストする。ところが最初は治ったのだが暫くするうちまた字化けが始まった。ふーむ、これではなかったのか。その結果、やっと原因をつきとめた。原因は別のところだった。ロジアナの波形を詳しく調べていて、初期のデータのボーレートパルスが規定より長いことに気付いた。USI-UARTのボーレートはしっかりしたタイマー割り込みを使っているので長さが変わることはないはずなのだが。一文字送信関数では送信バッファーにデータをセットするところは、タイマー割り込みで動くデータを取り出すルーチンとの衝突をさけるため、割り込みを禁止にしている。この期間が長すぎればタイマー割り込みは待たされてボーレートが長くなってしまう。ロジアナで、送信関数の割り込み禁止区間にポートを叩くテストステートメントを入れてチャートをとってみた。見事な波形が出てきた。初期のメッセージが大量にあるときは、ボーレートの1ビットの間に沢山の送信リクエストが集中し、決められたボーレートの20%以上の長さになっていることがわかった。原因がわかれば、対処はやさしい。割り込み禁止区間をなるべく短くなるように区間を分ける。今度の場合は2つに分割するだけで、見事にUARTは字化けしなくなった。これだから電子工作はやめられない(このUSI-UARTのソースは公開しているので、もう少しテストをして近いうちに改善版をリリースしたい)。帰省と久しぶりの仕事でプロジェクトが進まない(8/25/2014)電子工作がペースに乗りかけたところでまた邪魔が入った。何年ぶりかの仕事である。政府関係の大型汎用機システムの調査で、NDA(秘密保持契約)があるので、詳細をここで書くわけにはいかないがこれが滅法面白い。昔とった杵柄(きねづか)で心が躍る。数値をみては対数グラフにデータをプロットして、全体を確かめていく。仮説にもとづいて、思っていたようなデータが並ぶと、デバッグに成功したような快感を覚える。本業(雀の涙のような報酬らしいが)の方が細かい作業をしていても充実感がある。それが一段落して、月末には車で久しぶりに関西に帰省した。目的は、このところさぼっていたお墓参りである。ここ数年で娘たちが結婚し、その連れ合いも同行して4年ぶりの墓参りとなった。新幹線にしなかったのは、現地での足の便と、第二東名を走ってみたかったためである。第二東名は140km/hが設計速度ということで、これは実際に走ってみて実感した。ハコもの行政が問題になる以前の着工で、民主党政権時代には過剰投資が問題となったもののひとつだが、走っているだけならこんな快適なことはない。払った税金を取り戻しているような感じで余計気分が良い。関西の道路状況も何年か車で走っていなかったこともあって、ずいぶんと進んでいた。京都大阪の間の交通事情は何年か前は、高速は名神一本だけで常時渋滞だったのだが、京滋バイパスや、第二京阪バイパスなどの開通でとても楽になっている。墓参りは、気になっていた親戚(世話になった義兄)のところもすませて満足して帰ってきた。お盆をはずして日程を組んだのだが、帰りは事故が重なった意外な大渋滞に巻き込まれ(沼津の第二東名分岐点あたりから海老名まで連続60キロ近く)、8時間以上かかってしまった。