Arduino IDEのATtiny13A用MicroCoreパッケージを久しぶりにチェックしたところ、
いい感じになっているので、最新版1.03を利用してみました。
パッケージ公開サイト
MicroCore - An optimized Arduino hardware package for ATtiny13
以前はmicros()等の精度が悪く、タイミングをとるプロトコル実装に使えず難儀したのですが、
更新履歴をみると改善されたみたいです。
早速
Arduino 1.8.5にインストールしてみました。
インストールは公開サイトの「
How to install」に従ってインストールしました。
ボードマネージャのURL追加の方法で行いました。
下記の1行を
環境設定の
追加のボードマネージャのURLに登録し、
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
ボーマネージャにて、最新版をインストールします。
インストール後の書込み確認とりあえず、
Lチカですね。
ATtiny13Aへのスケッチの書込みには、書き込み装置が必要です。
安価な書込み装置としては、次のものが利用されることが多いようです。
・USBasp
・USBtinyISP
・Arduino as ISP(Arduino Unoを使う方法)
今回は
USBtinyISPを利用しました。
USBaspも安くて良いのですが、Windows 10対応の署名付きのドライバーがないようで、
開発とサポートが止まっている感があります。
一方、USBtinyISPはAdafruit製もあり、ドライバー等もそこから入手出来ます。
Adafruit - USBtinyISP :AVR programmer & SPI interface
https://learn.adafruit.com/usbtinyisp/書込みのための結線は
USBtinyISPに
MicroCoreのHPの
Minimal setupを参考にしてしました。
Lチカ用の出力ピンは書込みに利用していないPB3を利用しました。
スケッチ
void setup() {
pinMode(PB3, OUTPUT);
}
void loop() {
digitalWrite(PB3, HIGH);
delay(500);
digitalWrite(PB3, LOW);
delay(500);
}
ピン指定は、ピン名称のPB0~PB5がそのまま利用出来るようです。
ボード指定と書き込み装置を設定し、スケッチをコンパイル&書き込み実施。
とりあえず、上記の設定では問題なくLチカ出来ました。
ヒューズビットの設定も同時に行われているようです。
128kHzでのLチカで問題発生
次にクロックを落としての利用。
低速書込みでは過去の経験から色々と問題が発生するのですが、やはり問題発生。
スケッチの書込みは出来るのですが、ヒューズビットの設定が出来ていないようです。
本来ならスケッチの書込みと同時に、ヒューズビットの設定もおこなわれるはずです。
公式サイトを見ると、書込み装置として「USBtinyISP(slow)」を設定しないといけないようです。
試して見ると、書込み時に下記のエラーが発生しました。
avrdude: Can't find programmer id "{upload.protocol}"
これのエラーは、"upload.protocol"が未定義ということです。
MicroCoreの設定ファイル
C:\Users\ユーザー\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\1.0.3\
を調べてみるとプロトコルの設定をprogrammers.txtでは"protocol"のidを使っているのに
platform.txtの定義では"upload.protocol"のidを参照しています。
idがミスマッチのようです。
このエラーの対応として、
platform.txt内の"upload.protocol"を"protocol"に変換
でidのエラーは解決できました。
しかし、新たなエラーが発生
このエラーはSCKのクロックタイミングがマズイようです。
USBtinyISPのSCKのクロックパルス速度ではATtiny13が応答出来ないようです。
対応としてprogrammers.txtの-B32をところを-B64 -Fに修正
usbtinyisp.name=USBtinyISP (slow)
usbtinyisp.protocol=usbtiny
usbtinyisp.program.tool=avrdude
#usbtinyisp.program.extra_params=-B32
usbtinyisp.program.extra_params=-B64 -F
ついでに、platform.txtの-B32設定の箇所を-B64に修正
下記はヒューズビットの書込みに関連する設定です。
tools.avrdude.erase.params.verbose=-v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" -v -p{build.mcu} -c{protocol} -B64 {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
tools.avrdude.bootloader.params.verbose=-v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} -B64 -Ulock:w:{bootloader.lock_bits}:m
(備考)
programmers.txt、platform.txtはサクラエディタで開くとUTF-7と誤判断され、
上書き保存すると、Arduino IDEで正しく読めなくなりました。
明示的にUTF-8指定して保存する必要があります。
修正後、Arduino IDEを再起動して動作確認すると、問題無く書き込めるようになりました。
まとめ
・Arduino 1.8.5でMicroCoreパッケージを使うと、ATtiny13Aのアプリ開発が出来る
・書き込み装置は、USBtinyISPがおススメ
・9.6MHzのクロックを利用する場合は、デフォルトのままで利用しても問題ない
・クロックを変更して利用する場合、現段階では定義ファイルの修正が必要っぽい
問題はあるようですが、Arduino 1.8.5でATtiny13Aのアプリが開発できるのは有難いですね。
開発者さんに感謝です。
最近のコメント