2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

8bitマイコンを使おう~ATTINY1616を使う~

Posted at

8bitマイコンであるATTINY1616を使ってみます。

8bitマイコンの良さを知るには?

なぜ今更8bitマイコンなのか?という疑問に
トランジスタ技術2021年4月号がAVRマイコン特集をお勧めします。
8bitマイコンは身近な例ですとUSBシリアルであるCP21XXなど意外と身近に使われていたりします。
8bitマイコンが使われる理由は

  • 値段
  • サイズ
  • ピン数
    が大きな理由です。
    そして、私はクリスタルが必要でないというのも大きな選定理由になります。
    なお、大規模なプログラムや高性能な性能が必要なモノには向きません。

使用用途

例えばI2Cのデータロガーなどには、センサとマイコンだけで済みます。
そんな時に、価格が安く、小さい8bitマイコンがお勧めです。
さらに、先のUSBシリアルも大量に使うのであればファームウェアを書けばUSBシリアルチップより安くなる上に独自のソフトウェアを追加出来ます。
(ArduinoUnoなどが)

ATTINY1616とは?

ATTINY1616はフラッシュやRAMの容量などの違いによりATtiny416/816/1616/3216に分かれる20ピンの8bitマイコンであり
GPIOやADC、PWMなど一通り以上の機能を有しています。
そして、クリスタルが必要ありません(32bitマイコンでも必要なわけではありません)

Specifications ATtiny416 ATtiny816 ATtiny1616 ATtiny3216
Flash (program memory) 4096 bytes 8192 bytes 16384 bytes 32768 bytes
RAM 256 bytes 512 bytes 2048 bytes 2048 bytes
EEPROM 128 bytes 128 bytes 256 bytes 256 bytes
Bootloader Optiboot (optional, not recommended) Optiboot (optional) Optiboot (optional) Optiboot (optional)
GPIO Pins 18 (17 usable) 18 (17 usable) 18 (17 usable) 18 (17 usable)
ADC Channels 12 (11 usable) 12 (11 usable) 12 (11 usable) 12 (11 usable)
DAC Yes Yes Yes Yes
PWM Channels 8 8 8 8
Timer type B 1 1 2 2
Timer Type D Yes Yes Yes Yes
Interfaces UART, SPI, I2C UART, SPI, I2C UART, SPI, I2C UART, SPI, I2C
Clock options Internal 20/16/10/8/5/4/1 MHz Internal 20/16/10/8/5/4/1 MHz Internal 20/16/10/8/5/4/1 MHz Internal 20/16/10/8/5/4/1 MHz
__https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/ATtiny_x16.md__より引用

ATTINY1616のQFN版であるATTINY1616-MNRは3㎜角のQFNになります。
32bitマイコンと比較してもサイズは小さく、そして単価は0.75ドルからと安いです。
(ただし、2021年4月現在は半導体枯渇に伴い8月以降の入荷)
image.png
32bitマイコンで有名なSTM32の最安値であるSTM32F100C4T6Bは2.84ドルからと4倍位の差があります。
image.png

ATTINY1616を触ってみよう

いきなり、ATTINY1616のQFNを実装して使う事は難しいでしょう。
今回は、SOP20のATTINY1616-Sを使ってみましょう。
こちらは0.91ドルからです。
__*個人的にSTM32L010F4P6はArduinoではありませんがお勧めです(@95円)
 https://akizukidenshi.com/catalog/g/gI-15689/ __

SOPを実装する

SOP20のATTINY1616-Sを実装してみましょう。
秋月電子のピッチ変換(DIP化)基板__SSOP20ピン(0.65mm)・SOP20ピン(1.27mm)DIP変換基板__を使用します。
https://akizukidenshi.com/catalog/g/gP-10497/
これにはんだ付けします。
DSC_0200 (2).JPG

開発環境

Atmelの開発環境でも良いですし、Arduinoでも可能です。
今回は、Arduinoを使います。
ArduinoにAttiny1616のボード設定を追加します。
Attinyのボード設定はGithubの
https://github.com/SpenceKonde/megaTinyCore/
を使用します。

ボード設定

ファイル⇒環境設定
image.png
⇒__追加のボードマネージャーのURL
http://drazzy.com/package_drazzy.com_index.json__
を追加します。
image.png
__ツール⇒ボード⇒ボードマネージャー__から
megaTinyCore
をインストールします。
image.png
image.png
インストール後
__ツール⇒ボード⇒ATinny3216/1616/1606/816/806/416/406__を選択
Chipを__ATinny1616__を選択します。
image.png
書き込み装置は__jtag2updi__を選択します。
image.png
以上でプログラムを製作後、デバックすれば使用可能となります。

UPDI書き込み装置jtag2updiの製作

今回ArduinoNanoをjtag2updiにします。
プログラムを
https://github.com/SpenceKonde/jtag2updi
からダウンロードして、ArduinoNanoに書き込みます。
jtag2updiで使用するUPDI端子はジャンパワイヤの間に4.7KΩの抵抗を入れます。
ジャンパワイヤをカットして抵抗をはんだ付けし、熱収縮チューブ等でショートしないようにしPD6のピンに接続します。
これでUPDIによる書き込み装置の出来上がりです。
DSC_0210 (2).JPG

ブートローダの書き込み

Arduinoのブートローダを書き込みます
Attiny1616は下表のようにArduinoNanoと接続します。

Arduino NANO Attiny1616
5V 5V
GND GND
D6 PA0(UPDI)
ツール⇒ブートローダを書き込む
image.png

Lチカ

環境確認もあるのでLチカをしてみます。
今回は、LEDのピンとしてPIN_PA7が指定されていますので__PA7__のピンにLEDと抵抗を接続しLチカを行います。
ピン番号等はATtiny1616 / ARDUINOのこちらを参照します
https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/variants/txy6/pins_arduino.h
スケッチ例の__Blink__を使用します。

デバック&書き込み

普通のマイコンボードと同じようにマイコンボードに書き込みます
マイコンボードに書き込む
これでLEDが点滅しているはずです。
image.png
DSC_0212 (2).JPG

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?