|
setup diary |
AVRを使って電子工作をしていたら、AVRの書き込みができなくなってしまった。これまでPCのパラレルポートでdapaを使って書き込みを行っていたが、パラレルポートに変な電圧をあたえてしまったらしい。
新しい書き込み機を準備する必要があるのだが、パラレルポートのあるPCを探してくるか、USBで書き込みできるものを準備するかを迷ったが、今後はパラレルポートはどんどんすたれてくるので、USBにしたいと考えた。USB接続できるコンパクトで安い書き込み機としては、どんなものがあるかを調べていたら、おもしろいものを発見した。FTDI BitBang AVR-Writerというもので、FTDIのFT232RLの出力を制御して書き込むというものだ。手元にFT232RLはあるし、SSOP28を載せる基板も持っているので、これは作るしかないと思って、作り始めた。
まずは、FT232RLでUBSと接続できるように、USBのVccと4,20、GNDと7,18,21,25,26、USB+と15、USB-と16を接続し、17と18の間に104を入れた。そして、AVR側のmisoと5(RXD)、sckと1(TXD)、resetと2(DTR)、mosiと3(RTS)を接続し、VccとGNDも繋ぐ。ピンヘッダの上では、V,3,Gと5,1,2となる。接続はこれで完了である。
つぎに書き込み用のAVRDUDEであるが、ここを参考にしてパッチをあてた。そして、
sudo avrdude -p t261 -c ft232r -P ft0 -B 57600 -U flash:w:out.hex
などとしたら、書き込みがうまく言った。-B指定をしないとうまく動かなかったので、注意が必要だ。
avrdude.confには
programmer id = "ft232r"; desc = "FT232R Synchronous BitBang"; type = ft245r; miso = 1; # RxD sck = 0; # RTS mosi = 2; # TxD reset = 4; # DTR
と書いてあるのだが、sckとmosiが入れ替わっているようで、それを発見するのに苦労してしまった。そのときには、
avrdude: BitBang OK avrdude: pin assign miso 1 sck 0 mosi 2 reset 4 avrdude: drain OK ft245r: bitclk 38400 -> ft baud 19200 avrdude: ft245r_program_enable: failed avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check. avrdude done. Thank you.
というメッセージが出てしまう。
秋月で売っているFTDIのUSBシリアル変換ケーブル(5V)と3*2のピンソケット(たとえばUJS-1108 3PW)などを組み合わせれば、ハンダ付け無しで書き込み機になるのではと思う。この場合にはavrdude.confの書き換えが必要だろうが、ほとんど工作が必要無いのは大きいかも知れない。
これで、非常にコンパクトで安いAVR書き込み機ができた。出張中でもマイコンに書き込みができる。もう一つぐらい作っておこうかな。
先週ぐらいから作っていた定電力電源がようやく完成した。定電圧や定電流なら、それほど苦労せずに作ることができるが、定電力はそれほど簡単では無いように感じられる。最初はPWMで制御しようと考えたが、それほど速い制御は必要無いので、0.5秒ごとにON/OFFを繰り返すことにした。
問題はどのようにして定電力にするかであるが、最終的にはtiny261のADCを使って負荷にかかる電圧と、標準抵抗の電圧から電流を測定し、それから電力を計算して、一定時間に加えるべきエネルギーに達したらOFFにするということを繰り返すことにした。
原理的な設計はすぐに終わったのだが、実際に動くようにするには、やはりそれなりに苦労した。ざっとプログラムを書いて動かしてみたが、当然のように動かない。まず、液晶に文字を表示させるまでに、コントラストの調整、RW端子の接続、適切なウェイトの設定などで苦しんだ。以前にも液晶は使ったことがあったのだが、コントラストの調整は毎回忘れて苦しんでいる気がする。ウェイトに関しては、初期化の最後にすぐに表示する場合には必要だったようだが、これまでは表示するまでに別の処理をしていたため、必要なかったようだ。その後でも、いろいろなところでつまずいたが、最後に、ADCを停止しないと、裏で走ってしまうという点と、シフト演算子の結合順序が間違っていることに気がついて、動くようになった。
マイコンでの制御がうまう動くと、それなりにうれしいものである。