kosakalab では、Arduino UNO に jtag2updi を使って UPDI の書込装置としていますが、@kimio_kosaka さんからもらった情報
https://github.com/SpenceKonde/AVR-Guidance/blob/master/UPDI/jtag2updi.md
には、
1.UPDI に直列に入れる抵抗は 4.7kΩではなく470Ω。
2.jtag2updi より USB-Serial を使う方が良い。それも CH340G が良い。
とのこと。
Arduinoを使った jtag2updi では高速のUPDIには対応出来ないそうです。
UPDI にArduinoを使用せずにUSB-Serialでいけるならそっちの方が良いので、さっそくやってみます。
回路図はこれです。Arduino使うよりメッチャ簡単です。
UPDI の3ピンコネクタをつける場合はこの図のように470Ωをターゲット側に、3ピンの順は逆接しても壊れないように UPDI, GND, 5Vが良いそうです。
こんなに簡単に書込装置ができるならATtiny202はバカ売れ。
と思ったら秋月には在庫が無いようです。あらら。
これをブレッドボードに組んだのがこれです。
動画はこちら。
私が使ったUSB-SerialはFDTI社製のものでしたが、うまく動作しました。
Arduino IDE で書込装置として選ぶのはこれです。
他にもSerial-UPDIがありますがATtiny202は低速のUPDIのようです。
また、COMポートのレイテンシーを上げた方が良いそうです。
デフォルトでは16msになっていますが、これを1msにした方が良いとのこと。
と言ってもこれは高速UPDIには重要ですが低速では16msのままでも大丈夫です。
また、ブートローダの話がありましたが、ブートローダだけで512バイトあるので、高々2KバイトしかないATtiny202では無い方が良いです。
質問なのですが、RXDとTXD間のダイオードは何を使っているのでしょうか?
いきなりの質問で失礼します。
たぶん普通のダイオードでもいけると思いますので、お手持ちのダイオードで試してみてください。
1n60のショットキーバリアダイオードで試してみようと思います。いちいちunoにライターを書き込まなくてよいなら、簡単にプログラムをテストできそうです。usbシリアルも、安いものなら数百円で購入できますし、専用のライターを作れそうです。
本当に簡単にできますのでぜひやってみてください。
笑ってください。
シリアルUSBのTX端子のダイオードの向きが、TXの信号がチップに行かないように思いました。
RX端子は入力、TX端子は出力です。一方UPDI端子は入力になったり出力になったりします。
また、シリアル信号は信号がない時は"H"、信号のある時は"L"のパルスになります。
なので、TX端子の出力が"L"になるとダイオードを経由してUPDI端子を"L"にします。
一方、UPDI端子が出力のとき信号で"L"になると抵抗を経由してRX端子を"L"にします。
この時TX端子にダイオードが無いとTX端子の"H"の出力とUPDI端子の"L"がつながってしまいます。
これだと十分に"L"になりませんよね。