Arduino 1.8.5環境でATtiny13Aを利用する
Arduino IDEのATtiny13A用MicroCoreパッケージを久しぶりにチェックしたところ、
いい感じになっているので、最新版1.03を利用してみました。
パッケージ公開サイト
以前はmicros()等の精度が悪く、タイミングをとるプロトコル実装に使えず難儀したのですが、
更新履歴をみると改善されたみたいです。
早速Arduino 1.8.5にインストールしてみました。
インストールは公開サイトの「How to install」に従ってインストールしました。
下記の1行を環境設定の追加のボードマネージャのURLに登録し、
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
ボーマネージャにて、最新版をインストールします。
インストール後の書込み確認
とりあえず、Lチカですね。
ATtiny13Aへのスケッチの書込みには、書き込み装置が必要です。
安価な書込み装置としては、次のものが利用されることが多いようです。
・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のアプリが開発できるのは有難いですね。
開発者さんに感謝です。
« Arduinoのブートローダーの有無による起動時間の違いについて | トップページ | ATtiny13AでHC-SR04を使った距離計測 »
「arduino」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino UNO R4 WiFiに関するメモ(2024.03.21)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Arduino用ライブラリの自作用のメモ(2024.03.18)
- 豊四季Tiny Basic for micro:bit のマニュアルを更新しました(2020.11.21)
「AVR」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用SJIS漢字フォントライブラリ SDカード版を作成しました(2018.10.30)
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
「ATtiny13A」カテゴリの記事
- ATtiny13AでI2C接続キャラクタLCDを利用する(4)(2018.04.16)
- ATtiny13Aで赤外線リモコン受信センサーを使う(2)(2018.04.15)
- ATtiny13AでHC-SR04を使った距離計測(2018.04.14)
- Arduino 1.8.5環境でATtiny13Aを利用する(2018.04.14)
- Arduino IDEを使ったATtiny13用スケッチの開発について(2016.08.30)
« Arduinoのブートローダーの有無による起動時間の違いについて | トップページ | ATtiny13AでHC-SR04を使った距離計測 »
コメント