細いパルスは出ているが、UARTの波形の形を成していない。出力側の負荷抵抗や、入力LEDの制限抵抗を少しいじるが全く効果なし。このまえのウェブカメラの駆動部ではRaspiの間でフォトカプラーを使ったが、これは単なるスイッチ入力なので速度は関係ない。いえばフォトカプラーでUARTをつなぐのは始めてだ。どの程度のUART速度が良いのか。汎用カプラーでも、立下りは25μsなので、40Kbpsくらいまで行くはずなのだが何故通らないのだろう。急に、このあたりを調べたくなってきた。高周波パルスなら、自作したシグナルジェネレーターが20Mhzまでの矩形波が出せる。こいつでフォトカプラーを通してみれば一目瞭然だ。そのうち、シグナルジェネレーターの出力ではフォトカプラーを駆動できないことに気づいた。今までだったら、ここで諦めているところだが、電子工作歴も7年となると色々な手を思いつく。よせば良いのに、ついこれまでの経験を生かしたくなる。5VのDCにする)、ボルテージフォロワーで受ければ、LEDぐらいは動くはずだ。思い立つと、矢も楯もたまらなくなってしまう気質だ。2倍程度の反転ACアンプとボルテージフォロワーの組み合わせをブレッドボードにでっちあげる。意気揚々とテストに入った。うむ、LEDを点灯させても波形が出ている。ところが周波数を上げていくと波形が崩れてきた。矩形波が三角波になり最後は消えてしまう(DCになる)。何い、常用のオペアンプLM358ではそもそも10Khz以上を増幅できないのだ。ええー、オペアンプってこんなに遅いの?そうか、音声周波程度までしか動かしたことがなかったか。オペアンプなら手持ちは他にも沢山ある(計装アンプまである)。ヘッドアンプ用が多いので高周波に使えるかどうか。それに、両電源でないと性能を発揮しないオペアンプもあったはずだ。自信はなかったが、とりあえずは、レールtoレールのLM6428で試してみることにする。これは確か高周波にも強く、単電源でも動く。ブレッドボードなので交換はいとも簡単で差替えるだけである。おーし、LM6428ならMHzレベルも余裕でOKだ。これでMhzオーダーの対LEDパルスを出す装置が完成した。喜び勇んで、手持ちのフォトカプラーを片っ端から動かしてみた。PS2501、TLP521のような汎用カプラーは、9600bpsがやっとである。off時間で次のパルスと一緒になってしまい、元の波形とは似ても似つかない形になる。用意の高速フォトカプラーTLP552(¥200)ではどうだろうか。このフォトカプラーは、以前FETスイッチを作るためにサトー電気まで行ってフォトボル(TLP590B)を買いに行ったとき、何かの時にと買ってあったものである。DIP8ピンだが、一回路しか入っていない。データシートを見ながら通常のフォトカプラーと違う結線をする。何と、こいつはすごい。オペアンプもMHz近くなると矩形波がなまってくるが、これを見事にカバーして楽勝でパルスを伝達する。10Mbit/sの性能は伊達ではない。この急ごしらえのパルス発生装置では上限を測れなかった(オペアンプの方が降参する)。パスコン(0.1μF)を入れないと確実に発振する。別のフォトカプラーTLP512を調達(11/5/2014)しかし、このTLP552は1個¥200(千石では¥242)と汎用カプラーに比べれば、5倍近いコストである。それに10メガビットオーダーまで動くというのに、この程度のものに使うのにはちょっともったいない。しようかと迷っていたら、サトー電気のウェブサイトで、TLP512という高速カプラーが¥140で出ているのを発見した。こいつは1Mbitまで動くとあるので、38400bps程度のUARTの接続にはぴったりだ。値段も半分とは言わないが大分安い。脱線につぐ脱線だが、こうなるとどうにも止まらなくなる性質で、手に入れたくなった。次の日、車で環七を南下して久しぶりにサトー電気の川崎店まで足を延ばす。ガソリン代を考えたら通販の方が安いと思うが、ま、ドライブのつもりなら腹も立たないと自己正当化する。10個手に入れた(このあたりは生産停止が多いので買い置き)。高速で正負論理を切り替えたりするときに、トランジスターでは遅すぎ、インバーターICを1回路だけ使うのも大げさな時に便利である。それに、今度の高速カプラーは論理反転してしまうので、必要になるかもしれない。これはSOT23-5の小さなチップだが、変換基板があるので怖くない。帰って、早速、TLP512のテストをした。うん、38400bps程度では全く問題ない。115200bpsあたりになると少々怪しくなるが、ほぼ、問題なくパルスを通した。DIP6ピンなので、TLP552より小さくできる。これでUARTを絶縁するフォトカプラーの準備が出来た。モニター用のISP-UARTが動かない!Tiny861のバグか?(11/8/2014)フォトカプラーの実験はそろそろ切り上げて本来の工程に戻ろう。ブレッドボードにささったままだったセンサー部のディジタルフィルターのTiny861の実装である。アナログアンプの基板には既にスペースは確保してある。つけるパーツは殆どない。ISPピンを立てて、それぞれの入出力(アナログ入力、UART出力)をつなぐだけである。フォトカプラーのスペースも空けておく、今後の改造(Xbeeを追加したい)にそなえて、Xbeeチップの場所も考えながらレイアウトする。これも特記することもなく順調に終了した。このあとの地獄が待っているとも知らず、鼻歌混じりでソフトの開発に移る。インターフェース部の通信インターフェースの開発である。これまでは、モニター用のUARTと、I2Cだったが、今度は、UART2つになる。Tiny861はハードのUARTを持っていない。2つのソフトUARTを用意しないといけない。当然のように、モニターには、ISPケーブルだけで動くISP-UARTをテスト用に入れ、これまでコンソールに使っていたバッファー付きUSI-UARTをデータ転送用に移すことにする。AVRSPのプログラマー経由で動くISP-UARTの組み込みである。AVRを始めて以来、何十回も繰り返した手順だ。ソースコードの最初の開発日付は、7年も前の2007年から始まっている。ChaNさんオリジナルのUARTモニターにピンチェンジ割り込みの受信ルーチンが追加されたものだ。バージョンも、ChaNさんのアセンブラーが残っているソースから、最近のCのライブラリで統一したバージョンまで沢山ある。最新のバージョンを選んでライブラリを取り換え、テストする。これがウンともスンとも動かないのだ。おかしい、何も変わったことはしていない。オシロで送受信波形を調べる。なにー、PB1(ISPではMISO)から何も波形が出ていない。PB0はPCコンソールからの入力なので波形が見えるの当然で、ピンチェンジの割り込みは入っているようだ。ISP-UARTは、リセットピンがenableのときに動く特殊なUARTで、PB1はプログラムをロードするときは派手に動いているのでハード的には問題ない。UARTとしてPB1を使おうとすると最初に一回パルスがでるだけで動かない。UART関数の送信ピンをPB1ではなく、PB2やPB3にすると問題なく送信波形が出力される。以前、リセットピンとグランドの結線を間違えて同じような現象で悩んだことがあったことを思い出し、何度も配線チェックをするが、間違っていない。プログラムのバージョンを取り換えたり、最初のChaNさんのソースまで戻ったが、動かない。念のためにCPUチップを取り換えたが、もちろん同じ状況である。調べるところがなくなった。ISP-UARTが動かなくても大勢には影響しない。ただでさえ遅れているのにこれ以上遅らせるわけにはいかない。普通のGPIOのUARTに切り替える。何という事もなく動いた。モニター用のUARTピンを追加しなければならなくなったが、それだけのことだ。このUARTは本番時には使わない、やれやれ。Tiny861のバグは、まあ考えられないだろう。どこかで勘違いをしている可能性が大きいが、とりあえずは、このあたりでブログの記事を上げることにする。