フォト
2024年9月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
無料ブログはココログ

« Arduinoのブートローダーの有無による起動時間の違いについて | トップページ | ATtiny13AでHC-SR04を使った距離計測 »

2018年4月14日 (土)

Arduino 1.8.5環境でATtiny13Aを利用する

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

URL

ボーマネージャにて、最新版をインストールします。

01


インストール後の書込み確認

とりあえず、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/


書込みのための結線はUSBtinyISPMicroCoreのHPのMinimal setupを参考にしてしました。
Lチカ用の出力ピンは書込みに利用していないPB3を利用しました。

Dscn7818

スケッチ

void setup() {
  pinMode(PB3, OUTPUT);
}

void loop() {
  digitalWrite(PB3, HIGH);
  delay(500);
  digitalWrite(PB3, LOW);
  delay(500);
}
 

ピン指定は、ピン名称のPB0PB5がそのまま利用出来るようです。

04_2

ボード指定と書き込み装置を設定し、スケッチをコンパイル&書き込み実施。
とりあえず、上記の設定では問題なくLチカ出来ました。
ヒューズビットの設定も同時に行われているようです。


128kHzでのLチカで問題発生

次にクロックを落としての利用。
低速書込みでは過去の経験から色々と問題が発生するのですが、やはり問題発生。

スケッチの書込みは出来るのですが、ヒューズビットの設定が出来ていないようです。
本来ならスケッチの書込みと同時に、ヒューズビットの設定もおこなわれるはずです。

公式サイトを見ると、書込み装置として「USBtinyISP(slow)」を設定しないといけないようです。

試して見ると、書込み時に下記のエラーが発生しました。
  avrdude: Can't find programmer id "{upload.protocol}"

05

これのエラーは、"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のエラーは解決できました。


しかし、新たなエラーが発生

06

このエラーは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を再起動して動作確認すると、問題無く書き込めるようになりました。

07



まとめ

・Arduino 1.8.5でMicroCoreパッケージを使うと、ATtiny13Aのアプリ開発が出来る
・書き込み装置は、USBtinyISPがおススメ
・9.6MHzのクロックを利用する場合は、デフォルトのままで利用しても問題ない
・クロックを変更して利用する場合、現段階では定義ファイルの修正が必要っぽい

問題はあるようですが、Arduino 1.8.5でATtiny13Aのアプリが開発できるのは有難いですね。
開発者さんに感謝です。


« Arduinoのブートローダーの有無による起動時間の違いについて | トップページ | ATtiny13AでHC-SR04を使った距離計測 »

arduino」カテゴリの記事

AVR」カテゴリの記事

ATtiny13A」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Arduino 1.8.5環境でATtiny13Aを利用する:

« Arduinoのブートローダーの有無による起動時間の違いについて | トップページ | ATtiny13AでHC-SR04を使った距離計測 »