ATtiny1614でLチカ

Arduino Pro Mini(互換機)を書き込み装置 として、Arduino IDEからATtiny1614へプログラムを書き込む。

ちっちゃいものシリーズ第二弾。ハリネズミやらリスザルやら、かわいいですよね。大きくても、カピバラもかわいいけれど。さて今回は、14ピンながらフラッシュメモリ容量が16 KBもあるATtiny1614をLチカさせる。

ATtiny1614を使うだけであれば、文字どおり、chromiaさんの「ATtiny1614を使ってみた」が非常に参考になる。ただし、開発環境がAtmel Studioなので、初学者には少しハードルが高かった。前稿にも書いたように、USBドライバーが置き換わってしまう問題もあった。

恐らく2019年6月ごろ、ATTinyCoreの作者さんが“megaTinyCore”をリリースし、Arduino IDE上での開発が大変楽になっている。SPIライブラリーやWire(I2C)ライブラリーも同梱されている。それでは前稿同様、と思いきや、ATtiny1614はプログラミング方式にUPDIを使用しているとのこと。まず書き込み装置の作製を行う。

Arduino Pro MiniへUPDIプログラマーを書き込む

ATtiny1614は、I2Cデバイス接続時のロジックレベル変換を省くため、3.3 V運用を予定している。そこで、書き込み装置に使用するArduino Pro Miniも、Amazonで購入した3.3 V(8 MHz)駆動の互換機を使用した。これをスイッチサイエンスの「FTDI USBシリアル変換アダプター Rev.2」でPCと接続する。両社のGNDが一致するように注意。使用した互換機と接続する場合、ひっくり返す必要があった。

書き込むUPDIプログラマーは、上記“megaTinyCore”サイトから辿れるものもあるが、オリジナルの “jtag2updi” を使用する。ソースをダウンロードしたら、Arduino IDEでsourceフォルダ内のjtag2updi.inoファイルを開く。inoファイル自体にコードは記載されていないが、以下のとおりに設定して「マイコンボードに書き込む」と、コンパイル、書き込みが終了する。

  • ボード: “Arduino Pro or Pro Mini”
  • プロセッサ: “ATmega328P (3.3V, 8 MHz)”

ATTiny1614にスケッチを書き込む

書き込み装置も作製できたので、ATtiny1614と接続して書き込みに備える。USBシリアル変換アダプターを一旦PCから外し、電源の供給されていない状態で以下のとおり配線する。ATtiny1614は、マルツのDIP変換基板に載せ、1番ピンと14番ピンを0.1 µFのバイパスコンデンサで繋いでいる。

  • Arduino Pro MiniのRSTとGNDを10 µFの電解コンデンサで繋ぐ
  • Arduino Pro Miniの6(D6)とATtiny1614の10番ピンを4.7 KΩの抵抗で繋ぐ
  • ATtiny1614の11番ピンとGNDをLチカ用LEDで繋ぐ
  • Arduino Pro MiniのGNDとATtiny1614の14番ピンを繋ぐ
  • Arduino Pro MiniのVccとATtiny1614の1番ピンを繋ぐ

ブートローダー起動による上書きを防ぐため、10 µFの電解コンデンサでオートリセットがかからないようにすることをお忘れなく。

次に、Arduino IDEにATtiny用のボード定義を取り込む。[ファイル]→[環境設定]で「追加のボードマネージャのURL」にhttp://drazzy.com/package_drazzy.com_index.jsonを追記する。その後、[ツール]→[ボード]→[ボードマネージャ]と進み、“megaTinyCore”をインストールする。執筆時点のバージョンは1.1.8であった。

ATtiny1614の動作速度(Clock Speed)を下げると、下記のエラーで書き込みに失敗する場合がある。ボード定義に記載されたシリアルポートの通信速度を下げておくとよいだろう。

avrdude: jtagmkII_set_devdescr(): timeout/error communicating with programmer (status -1)
avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description
avrdude: jtagmkII_reset(): timeout/error communicating with programmer (status -1)
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

インストールディレクトリ(Windows機の場合は、C:\Users\<ユーザー名>\AppData\Local\Arduino15\packages)下に作成されたパッケージディレクトリ(megaTinyCore\hardware\megaavr\<バージョン番号>)直下のavrdude.confの末尾にあるbaudrateを変更する。8 MHzで書き込む場合、デフォルトの115,200では書き込めず、57,600に下げると成功した。1 MHzまで書き込めることを確認している。

--- avrdude.conf.orig   2020-03-21 09:03:05 +0000
+++ avrdude.conf        2020-03-21 18:55:40 +0000
@@ -16166,5 +16166,5 @@
   desc  = "JTAGv2 to UPDI bridge";
   type  = "jtagmkii_pdi";
   connection_type = serial;
-  baudrate = 115200;
+  baudrate = 57600;
 ; 

書き込んだLチカスケッチと書き込み条件は以下のとおりである。書き込みに[スケッチ]→[書込装置を使って書き込む]を使用することをお忘れなきよう。

/* const int LED_PIN = 13; */
const int LED_PIN = 8;

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

void loop() {
    digitalWrite(LED_PIN, HIGH);
    delay(100);
    digitalWrite(LED_PIN, LOW);
    delay(100);
    digitalWrite(LED_PIN, HIGH);
    delay(100);
    digitalWrite(LED_PIN, LOW);
    delay(700);
}
  • ボード: “ATtiny1614/1604/814/804/414/404/214/204”
  • Chip: “ATtiny1614”
  • BOD voltage: “1.8V”
  • BOD Mode (active): “Disabled”
  • BOD Mode (sleep): “Disabled”
  • Save EEPROM: “EEPROM retained”
  • Clock Speed: “8 MHz”
  • DAC Voltage Reference: “Disabled (saves flash)”
  • tiny NeoPixel Port: “PORTA (pins 0~3,8~11)”
  • millis()/micors(): “Disabled (saves flash)”
  • Voltage for UART baud calc): “Closer to 3v”
  • UART pins: “TX:5, RX:4”
  • UART pins: “SDA:6, SCL:7”
  • 書込装置: “jtag2updi (megaTinyCore)”

お疲れさまでした。無事Lチカに成功しましたか。最後に、“megaTinyCore”のピンアサインがやや特殊なので、以下引用する。

// ATtiny1614 / ARDUINO
//                          _____
//                  VDD   1|*    |14  GND
// (nSS)  (AIN4) PA4  0~  2|     |13  10~ PA3 (AIN3)(SCK)(EXTCLK)
//        (AIN5) PA5  1~  3|     |12  9   PA2 (AIN2)(MISO)
// (DAC)  (AIN6) PA6  2   4|     |11  8   PA1 (AIN1)(MOSI)
//        (AIN7) PA7  3   5|     |10  11  PA0 (nRESET/UPDI)
// (RXD) (TOSC1) PB3  4   6|     |9   7~  PB0 (AIN11)(SCL)
// (TXD) (TOSC2) PB2  5~  7|_____|8   6~  PB1 (AIN10)(SDA)
<インストールディレクトリ>/<パッケージディレクトリ>/variants/txy4/pins_arduino.h

コメント

タイトルとURLをコピーしました