ATtiny1604は14pinの小さなAVRマイコン で,Arduino IDE でなかなかきびきびと動いてくれています。

少し前に特価で買った32×16ドットマトリクスLEDモジュール をこのATtiny1604で動かしていました。
32x16ドットLEDでAttiny1604のポートコントロールやスクロールを試してみた

データの合成とLEDのダイナミック表示部を分離できたら楽そうなのでタイマー割り込みのマルチタスクを試してみました。



UPDIの書き込みを組んだブレッドボードにLEDをつけただけの装置です(^^;;;。




実際の動作です。
赤色LEDをloop()で,緑色を割り込みルーチンISR()で点滅させています。





今回のプログラムは先人のプログラム例をそのまま頂き,使用タイマー・カウンターと出力Pinを変更したぐらいで動かしています。

参考にさせていただいたWebページです。
Arduino Nano Everyのタイマー割り込み機能について(Qiita)





ATtiny1604にはタイマー・カウンター はTCA0とTCB0の二つしかありません。

TCA0 - 16-bit Timer/Counter Type A
TCB0 - 16-Bit Timer/Counter Type B

TCAはコアな所に使われているようです。TCBはユーティリティーなタイマー・カウンターとしてユーザーが良く使うようです。

なおTCBの使用は"tone"や"servo"とコンフリクトするらしいのは書かれていましたが,シリアル通信系との関係はどうなのか,は調べておかないといけませんね。

上記の元プログラムはArduino Nano EveryでATmega4809というかなり大きなMPUのためのもので,TCB2を使っていて余裕がありますけど。


ま,タイマー割り込みができたので,この割り込みサービスルーチン(ISR)の中にダイナミック表示部分を書き込めば動くことはできるはず,,,です(^^;;;;。

今回の目的ではそんなに正確な割り込みタイミングが必要なわけではなく,60Hzぐらいで表示できれば良いのでしょうから気楽にやっていきましょう。

1台200円で手に入れたLEDパネルですから,できるだけ費用もコンパクトにモジュール化したいですね(^^)。