Microchip StudioでATTINY202 備忘録

AVRマイコン ATTINY202は、UPDIという方式で書き込む。

USBシリアル変換基板で書き込むことができる。

Arduino環境ではなく、Microchip Studioでpymcuprogを使うためのメモ。

書き込みツール ハードウェア編

USBシリアル変換ICを使う。秋月のモジュール基板を使用した。

CH340E USBシリアル変換モジュール Type-C

同じような変換ICならほとんど使えそう。
上記のモジュールは5Vなので、3.3Vの回路の場合は注意が必要と思う。

下記に回路図を示す。テスト用にLEDをPA2に接続した。

ATTINY202のVDD(1pin)-GND(8pin)間には5Vの電源と0.1uFのコンデンサを接続。
ATTINY202のPA0(6pin)には抵抗470Ωを介してCH340EのRXDへ接続。
CH340EのRXDからTXDにショットキーバリアダイオードを、RXD側がアノードとなるよう接続。
ATTINY202のPA2(5pin)には、抵抗10kΩを介してLEDのアノードを接続。LEDのカソードはGNDに接続している。
テスト用回路図と、USBシリアル変換モジュールへの接続図
DIP変換基板に載せたATTINY202をブレッドボードに載せ、USBシリアル基板からの接続は、電線を使っている
実際に接続した写真。とても簡単

書き込みツール ソフトウェア編

まずPythonをインストールしておく。

プログラミングには、pymcuprogを使う。

コマンドラインかWindowsPowerShellを開いて下記を実行すると、pymcuprogがインストールされる。

py -m pip install pymcuprog
"py -m pip install pymcuprog"を実行したWindows PowerShellのスクリーンショット
スクショ

USBシリアル基板をPCに接続し、ポート番号を調べておく。

デバイスマネージャーのポートを見よ。CH340の文字がある
デバイスマネージャーでわかる

このPCの場合”COM5″だった。USBポートをかえると番号が変わるかもしれないので注意。

下記を実行して正しく動くか確認する。com5の部分はさっきのポート番号にしておく。

pymcuprog ping -t uart -u com5 -d attiny202

成功すれば
“Pinging device…
Ping response: 1E9123
Done.”などと出てくるはずだ

Microchip Studioの設定

メニューのツール -> 外部ツールを選択

Tool -> 外部ツール

タイトル: pymcuprog

コマンド: pymcuprog.exe

引数: write -t uart -u com5 -d attiny202 -f “$(TargetDir)$(TargetName).hex” –erase –verify

終了時にウインドウを閉じるのチェックは外していたほうが、エラーの時に助かる。

タイトル・コマンド・引数を入力した「外部ツール」の設定画面

OKを押したら、ツールメニューにpymcuprogが追加される。書き込む時はこれを押す。

ツールのメニューにpymcuprogが追加された

Lチカコード

下記のコードでLEDが0.5秒ごとに点滅したら成功。

#define F_CPU 20000000UL / 6

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	PORTA.DIRSET = 0b0100;	// PA2を出力に設定
    while (1) 
    {
		PORTA.OUTSET = 0b0100;
		_delay_ms(500);
		PORTA.OUTCLR = 0b0100;
		_delay_ms(500);
    }
}

周波数
F_CPU・・・ATTINY202の既定クロックは20MHzで、既定の分周比は1/6
なぜ1/6なんだろうか??

今までのAVRからレジスタが変わっている

DIRSET・・・入出力設定。特定のビットを1にする。
DIRCLR・・・同上。特定のビットを0にする。
OUTSET・・・出力設定。特定のビットを1にする。
OUTCLR・・・同上。特定のビットを0にする。
便利なレジスタが追加された。

参考文献

AVR-DA | Y-Lab. Blog https://blog.y-lab.org/?cat=13

pymcuprog · PyPI https://pypi.org/project/pymcuprog/

ChatGPTにも教えてもらった