avr-gccはArduino IDEを入れれば入っているというお話
これまで導通チェックには、テスターの導通チェックモードを使ってたんだけど、ダイオードチェックも兼ねてるためか回路内(IC内)を経由しての導通でもピーっと鳴ってしまうタイプだったんですね。
抵抗値も表示されるのでメーターに目線を向ければ、回路内経由なのかちゃんと配線されているのかは判るんだけど、実装済み両面基板の配線チェックとかには使い勝手が悪い。
そこで ChaNさんの導通チェッカーを作ることにしました。
ただ、これはATTiny13を使って作られていて、ちょっとはまってしまいました。
ATTiny13Aを入手してブレッドボードに仮組みしたまでは良かったんだけど、ファームウェアのコンパイルと書き込みに悩むこと1時間。
最近AVR系はArduinoとしてしか使ってなかったため、すっかり手順を忘れているし、環境も作っていません。ググってみると「な~んだ」というような事が分かったのでメモっておきますね。
注意して欲しいのはこのメモは、よくある「素のAVRをArduino IDEで開発するメモ」ではなくて「素のAVRを素のまま開発するメモ」だということ。
なので、コマンドラインでavr-gccを使ってソースコードをコンパイルしてavrdudeを使って書き込む手順の紹介になります。
まず重要な事は、AtmelのAVR(ATほにゃらら系のMCU)の開発環境はArduino IDEをインストールすれば一緒にインストールされているということ。
(仕組みを考えればある意味当たり前だけど(笑))
書き込みに使うハードウェアはArduino ISPを、Arduino IDEは1.6系をインストールしました(インストールしてあった)。
肝心の環境設定手順だけど、すでにArduino IDEがインストールされているなら以下の二つをPATHに追加するだけ(笑)
C:Program Files (x86)\Arduino\hardware\avr\bin
(64bit Windowsで標準インストールの場合)
— 追記
Arduino IDE 1.6.7を改めてインストールしたところPATHが少し変わってました
C:Program Files (x86)\Arduino\hardware\tools\avr\bin
C:Program Files (x86)\Arduino\hardware\tools\avr\etc
のようにtoolsが挟まるようになっています
—
これでコマンドラインからavr-gccもavrdudeも使えるようになるし、avrdude用のMCU設定ファイル(avrdude.conf)も自動で読み込んでくれるようになる。
また、avr-gccの標準ライブラリのインクルードパスも設定される。
今回はターゲットがATTiny13で、ソースコードがcc.cなのでコンパイルしてhexファイルを生成するには、以下の順にコマンドを打てばOK
avr-gcc -g -Os -mmcu=attiny13 -c cc.c
avr-gcc -g -mmcu=attiny13 -o cc.elf cc.o
avr-objcopy -j .text -j .data -O ihex cc.elf cc.hex
Arduino ISPを書き込み済みのArduinoとの接続は次の図の通り。
avrdudeに以下のオプションを与えると接続確認ができます。
avdude -p t13 -c avrisp -P(COMポート) -b 19200
フラッシュメモリへの書き込みは以下のコマンド
avrdude -p t13 -c avrisp -P(COMポート) -b 19200 -U flash:w:cc.hex
今回作ったChaNさんの導通チェッカーの場合、クロックを128 Khzにしないとうまく動作しないのでfuse bitを書き換える必要がある。
(過去に知恵袋でうまく動かないと質問していた人がいたけど、おそらくこれが原因だと思う)
書き込むべき値は、このサイトで簡単に調べられる。
http://www.engbedded.com/fusecalc
書き換えは以下のコマンド。
ただし、この時点でターゲットの速度が遅すぎてArduino ISPの標準速度である119200bpsでは通信できなくなります。
壊したのかと焦りましたが、Arduino ISPのスケッチを次のものに変えて2400bpsで繋げば問題なく読み書きできました。
https://github.com/lmpipaon/ArduinoISP_slow_SCK
最後に導通チェッカーを作るときにはまったのが、回路図のBZ。
説明でも「ブザー」と書かれていたのですっかり圧電ブザーのことかと思って買ってきたのだが、実際には圧電スピーカーでした。(ちゃんとソース見れば事前にわかったのですが・・・)
圧電ブザーをつなげると常時鳴り続けるとか、導通したら止まるとか変な動きになってハマる(ハマった)ので注意です(汗)