お勉強。
御本尊のATtiny402は上の配線がごちゃごちゃ繋がっているもの。こういう実験にはAFSS02が大いに役立つ。
ただ単にLEDが点滅するだけでなく、アナログポートでVRを受けて(analogRead())、それを点滅間隔に反映。ついでに、PWM出力のデューティ比(analogWrite())もその値で変えるというのを試してみた。
ATtiny402ボード
下がATtiny402ボード。
スイッチサイエンスで入手。ATtiny402の他に、パスコンとプログラム書き込み用に必要なパーツ(SBDと抵抗)が載っている。ピンヘッダは手持ち品(付属していない)。
サポートページ。
Arduino IDEで使う
Arduino IDEで使うには、ボードマネージャにmegaTinyCoreを入れる。
ピンアサイン。 https://github.com/SpenceKonde/megaTinyCore/blob/master/mega… から引用。
プログラマ
プログラムの書込みにはUPDIピンを使う。なんと、1本だけ。他には電源とGND。シリアルポートをUPDIアップロードツールとして使うSerialUPDIというものがある。
このページ結線方法が書かれている。いくつかのパターンがあり、基本はこれ。
シリアルのRxとTxをSBDでつなぎ、RxのラインをUPDIにつなぐ。シリアルポートのTxには1~2kΩの抵抗が入っていることを想定している。この場合は、470Ω程度(100~1kΩ)の抵抗を噛ませてUPDIにつなぐ。
シリアルポートのTxに抵抗が入っていない場合は、噛ませる抵抗を100~2.2kΩ程度にするとのこと。
スイッチサイエンスで入手したATtiny402ボードにはこのSBDと抵抗が搭載されている(なので、シリアル側との接続は、Tx、Rx、Vcc、GNDの四本)。ところが、載っている抵抗が4.7kΩと大きめ。この注意書きがあるのは、この抵抗が大きいせいか?
それはともかく、手持ちのUSB-シリアル変換ボードを使って4ピンタイプのインタフェースを作成。載っている変換チップはCH340G。
当初、書込みエラーになってしまい、頭を抱えた。結局のところ、TxとRxのラインにぶら下がっていたLED(と抵抗)が問題だったようで、それを外したら書き込めた。
もう一つ、3ピンタイプも作ってみた。
インタフェース基板上にSBDと抵抗を載せて、ATtiny402のUPDIピンに直結(抵抗は2.2kΩにしてみた)。これでも、当然ながら、ちゃんと書き込めた。それにしても、書込み用の線が一本だけで済むとは!
リセット
上のピンアサイン図を見て気になったのがリセットピンがないこと。
データシートを見ると、UPDIピンと兼用になっている。
SYSCFG0のRSTPINCFGで設定するらしい。このSYSCFG0はフューズらしい。リセット時は0x1、つまり、UPDIとして設定されているようだ。これ、プログラムの動作時に自分で設定して使うのかなぁ?フューズとあるのが少々気になる。下手に設定してUPDIとして動かなくなると困るし…。実機での動作確認は先送りとしておく。
コメント
AtTinyの情報ありがとうございます。安いMH-Tiny88ボードを見つけたので購入して使ってみました。JH4VAJ局のLBCK04、LEDチェッカのスケッチを動かしてみましたが結論としては多分うまく稼働したのではと思っております。詳細はPPにまとめてありますが、ご興味があれば送付いたします。(MH-Tiny88上で100%稼働しているかはわかりませんが)MH-Tiny88は200円前後で購入いたしました何しろ安い。
情報、ありがとうございます。ちょっと検索してみたところ、ATtiny88というチップがあって、それを載せたボードなんですね。チップ単体の入手性は残念ながらあまり良くないようですね。今はATtiny402と戦っているので、他には手が回らないです。