ATTINY85からATTINY202への移行を検討しだして2週間くらいたちました。
まずは書き込み環境を整えることから開始しました。
ATTINY202は、便利な中華製パラレルプログラマ TL866-IIも、AVRISP2も使えません。
ICPという3線インターフェースから、UDPIという1線インターフェースに変わって
いるからです。
TINY85ではTL866-IIを使ってFUSE書き込みができたので、RESET(UDPI)端子を
GPIO化できたのですが、TL866-IIはこの新AVRシリーズに対応していないので、
それもできなくなりました。
(高電圧UPDIというものを使えばいいのですが、敷居も値段も高い)
閑話休題:UPDIはUSBシリアル基板があれば、書き込み器なら簡単に作れるという
情報がありましたので、まず書き込み器を作ります。
自分が参考にしたのはこれです。
UPDI to USB-Serial Programming Adapter
これなら、手持ちの中華製 USBシリアル基板を流用して簡単に作れそうです。
クロックを
【2025/03/07追記】
このプログラムがわかりにくので、あとで書き直しましょう! が宿題で残っていたので
やってみました。
/*
* ATTINY202_LED_BLINK_SMPL1.cpp
*
* Created: 2025/03/07 10:27:45
* Author : todoPapa
*/
#include <avr/io.h>
#include <util/delay.h>
//#define F_CPU 20000000UL // CPU Clock = 20MHz (delay.hで定義済み)
#define LED_PIN PIN2_bm // PA2にLED接続
int main(void) {
// クロック設定 20MHz
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL_CLKSEL_OSC20M_gc); // CLK 20MHz選択
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, 0x00); // 分周なし
// PA2を出力モードに設定
PORTA.DIR =LED_PIN; // IOMAPEDのVPORTAだと、OUTSET,OUTCLRが使えない
while (1) {
// PA2をHIGHに設定してLED点灯
PORTA_OUTSET = LED_PIN;
_delay_ms(1000);
// PA2をLOWに設定してLED消灯
PORTA_OUTSET = LED_PIN;
_delay_ms(1000);
}
だいぶ可読性が良くなったと思います。
このコンパイル後、F_CPUが重複しているとウォーニングが出たので、確認しました。
delay.hでF_CPUを1MHz定義していたので、これを20MHzに変更して、main.cppのF_CPUは
コメントアウトしました。
あとのプログラムの説明は、このブログの他の記事に詳しいので省略しますね。
VPORTAとPORTAの違いを説明します。
PORTAにアクセスするときは、レジスタ経由で書き込むので数クロックを必要としますが、
VPORTAはメモリマップドIOなので、1クロックでアクセスできるとのことです(ChatGPT談w)。
ただし、メモリアクセスと同じということで、アクセスの形式が少なくなっています。
ATMEL STUDIOの予測変換を見ればレジスタアクセスの選択肢がわかります。
PORTAだとトグルもできるんですね。
関連記事
ATTINY202/402のFUSEビットをAVRDUDESSを使って書く方法
おもちゃ修理用のSOUND PLAYER基板の小型版 V2を設計しました!
[Part2ピエゾアンプ]ATTINY用Sounds Player基板を作って動作確認しました!
[Part1] ATTINY用Sounds Player基板を作って動作確認しました!
[Part2 テスト終了です] ATTINY402で音声再生のテストをしました
[Part1] ATTINY402で音声再生のテストをしました
ATTINY402に電子オルゴールのHVPプログラム書き込みテストをしました
[Part2 完成しました!]HVP対応のUPDI プログラマーを作成中です
[Part1] HVP対応のUPDI プログラマーを作成中です
[Part4 IRリモコン完成!] ATTINY202への書き込みとプログラムをやっています!
[Part3] ATTINY202への書き込みとプログラムをやっています!
[Part2] ATTINY202への書き込みとプログラムをやっています!
[Part1] ATTINY202への書き込みとプログラムをやっています!
ATTINY85 CPUを使って小型の赤外リモコンを作りました!