AVRマイコン ATTINY202は、UPDIという方式で書き込む。
USBシリアル変換基板で書き込むことができる。
Arduino環境ではなく、Microchip Studioでpymcuprogを使うためのメモ。
書き込みツール ハードウェア編
USBシリアル変換ICを使う。秋月のモジュール基板を使用した。
同じような変換ICならほとんど使えそう。
上記のモジュールは5Vなので、3.3Vの回路の場合は注意が必要と思う。
下記に回路図を示す。テスト用にLEDをPA2に接続した。
書き込みツール ソフトウェア編
まずPythonをインストールしておく。
プログラミングには、pymcuprogを使う。
コマンドラインかWindowsPowerShellを開いて下記を実行すると、pymcuprogがインストールされる。
py -m pip install pymcuprog
USBシリアル基板をPCに接続し、ポート番号を調べておく。
このPCの場合”COM5″だった。USBポートをかえると番号が変わるかもしれないので注意。
下記を実行して正しく動くか確認する。com5の部分はさっきのポート番号にしておく。
pymcuprog ping -t uart -u com5 -d attiny202
成功すれば
“Pinging device…
Ping response: 1E9123
Done.”などと出てくるはずだ
Microchip Studioの設定
メニューのツール -> 外部ツールを選択
タイトル: pymcuprog
コマンド: pymcuprog.exe
引数: write -t uart -u com5 -d attiny202 -f “$(TargetDir)$(TargetName).hex” –erase –verify
終了時にウインドウを閉じるのチェックは外していたほうが、エラーの時に助かる。
OKを押したら、ツールメニューに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にも教えてもらった
大変参考になりました。有難うございました。
ただ、
pymcuprogのパラメーターのファイル名指定の
“$(TargetDir)$(TargetName).hex”のダブルクオートは、不要でした。また、
–erase –verifyのハイフンは、2つ必要で、
–-erase -–verifyと指定する必要がありました。