HVP対応のUPDI プログラマーを作成中です Part2 (完成しました!) | トドお父さん通信

トドお父さん通信

高BMI中年北部九州サーフィンと家庭菜園と子育てグルメ

みなさん、こんにちは

トドお父さんです。

 

昨日は、HVP対応の回路を設計した所まででしたね。

 

こちらが最終の回路図になります。検図とデバッグで3点ほど

部品が追加になりました。追加部は赤字で示しています。

 

 

これから、お楽しみ(お苦しみw)の手作り試作基板の作成です。

事前に秋月のユニバーサル基板 Cタイプ(72×47mm)をプラカッターで

47x30mmくらいに切断します。

 この写真は前のプロジェクトです

 

小さくて大丈夫かな? と思いましたが、今回はチップ部品を多用するので

たぶん大丈夫でしょう!?

 

まずは12V電源 SX1308のDC-DC電源回路から組んでいきます。

SOT23-6の変換基板に載せてます。

  

 

足は細ピンでないと入りませんね。 ブレッドボードに乗せて半田付けすると

足が曲がりませんよ。また、細かいチップ部品を半田付けする時は半田は細い

ものを使います。0.6~0.8mmくらいがいいですね。

    

フラックスと半田吸い取り線も必須ですね。

 

さてDC-DC電源部が組みあがりました。 単体で動作を確認します。

   

 

上が出力電圧 12V、下がFB端子(約0.6Vでフィードバックがかかる)です。
電源ON時の立ち上がりですが、いい特性ですね。
実は、手配線で電源ピンの接続が間違っていて、ICを1個壊したことは内緒ですw
 
電源ができたら、次はFTDIのTX-RXをダイオードでつないで1本のUPDI
信号を作ります。 ここは前回と同じですね。(抵抗1本にしました)
 
POR(パワーオンリセット)回路は下記になります。
pMOS FETを使ってFTDIからの3.3/5V Vddをスイッチングします。
通常はR3でバイアスがかかっているのでONっぱなですが、SW1を押すとVgsが0Vに
なってターゲットへのVdd(TG_vdd)をOFFします。
スイッチを離すと、またターゲットへ電源を供給します。以上でパワーオンリセット動作ですね。
 
このときC4がないと、急激にラッシュ電流が流れますので、C4とR3の時定数で
立ち上がりをコントロールします。いわゆるロードSWになっています。
興味があるかたは、ON SEMIの技術資料 AND9093を参照してくださいね。
 
 
つぎは12VのHVPをパルスで出力する回路です。
 
PORで3.3V/5Vが立ち上がったら、R5とC1の時定数でQ2 AO3400 nMOS FETが
ONされます。時定数 τはτ=CxR=0.01u x 100k ≒ 1mS になります。
 
時定数の電圧は、3.3V/5Vの63%ですから、1mS後にそれぞれ2.0V/3.15Vになります。
AO3400のVgs =1.5VくらいでONするので、Q2がONするのは1mS より短くなります。
Q2がONするとR10で12Vかかっていたドレインの電圧が0Vになります。
 
この12V→0Vで C3 0.01uFのDrain側の電極が0VになりR4 2.2k側の電極も一時0Vになります。
コンデンサなので、これもτ=CxR=0.01u x (2.2k+10k) =120uSの時定数で Q4 AO3401 pMOS
FETのゲートがONします。10kと2.2kはQ4のVgsが±12Vなので-12x10/(10+2.2)=-10V
でマージンを持たせるためです。
 
C8もC4同様にON時のスルーレートをコントロールしてラッシュ電流を抑えています。
組み立てが完了したのが下の写真です。チップ部品の実装で難儀しましたが、なんとか完成しました!
赤いボタンがPOR、黄色のボタンがHVPです。
 
  
 
オシロで動作を確認しました。⇔ 0.4mS/divです
    
上から 1.TG_Vdd PORの立ち上がり
2. Q2のゲート電圧
3. Q4のゲート電圧
4. UPDI信号線の12V HV電圧
POR立ち上がりから200uSでHVPが出力されています。HV出力中もVddに変動はありません。
 
予定よりタイミングがはやいですが、きちんとPOR後にHVPが出力されています。
HVPも100uS予定が400uSくらい出力されてますが、無問題です。
気になれば、CRの定数を変えれば、タイミングは変更できます。
 
R2を10k → 4.7kに変更。 HVパルス幅が≒200uSになります 
大泉さんのブログにあるように、R1も1k → 4.7kにした方がVccに流れる電流が減っていいですね。
TXラインに入っているショットキーD2もRXラインのD3があるので不要です。これも削除しますね。
 
修正後の回路図です。大泉さんの回路にどんどん近づきますね。さすがベテランドクターさんです。
 
さて使い方ですが、つつじが丘おもちゃ病院 大泉さんのブログにある通りです。
1.HVPを使う:POR_SWとHVP_SWを同時に押してください。
        それから、POR_SWを先に離して、HVP_SWも離す。 UPDIピンに12Vパルスがかかって、PA0がUPDIとして使用できるようになります。
2.PORのみ:POR_SWのみを押します。ターゲットへの3.3/5V VddがOFF/ONしてパワーONリセットされます。
3.通常UPDI書込み:POR_SWもHVP_SWも押さずに、AVRdudeでserialUPDIで書き込みます。
 
実際にAVRdudeでFUSEの書き込みを確認します。
TINY202のFUSEの構成は下記。UPDIピンをGPIOにするにはFUSE 0x05 SYSCFG0のRSTPINCFG[1:0] を制御します。
 
SYSCFG0のdefaultはRSTPINCFG[1:0]が0x1で0xC4、GPIOはRSTPINCFG[1:0]が0x0で0xC0になります。
AVRdudeでFUSE書き込み、すべてdefaultの場合は、
avrdude -Cavrdude.conf -c serialupdi -p t202 -P COM5 -U fuse0:w:0x00:m -U fuse1:w:0x00:m -U fuse2:w:0x02:m -U fuse5:w:0xC4:m -U fuse6:w:0x07:m -U fuse7:w:0x00:m -U fuse8:w:0x00:m
(com5は環境で変更します)
ここから必要なFUSEのみ変更します。
自分の場合は、OSCCFG(FUSE2)も20MHz→ 16MHzに変更するので、UPDIをGPIOにするには
avrdude -Cavrdude.conf -c serialupdi -p t202 -P COM5 -U fuse2:w:0x01:m -U fuse5:w:0xC0:m
になります。
実際にコマンドラインでAVRdudeを使ってFUSE書き込みやってみましょう。
 
最初にFUSE5に0xC0を書き込んでいます。 それからパワーONリセットすると、ターゲットが認識しなくなりました。FUSE5に0xC4を書き込んでUPDIに戻そうとしますが、エラーです。
次にPOR_SWとHVP_SWを使ってUPDIピンにHVPを印加します。
また、同様にFUSE5に0xC4を書き込みます。今度はデバイスを認識して、元通りUPDIに戻りました。
 
ここまで、丸一日 +α の作業が必要でしたが、動いてよかったです。
これから、おもちゃ病院のプロジェクト 新しいATTINY 0/1/2シリーズが自由に使えますね。
 
それでは、おやすみなさい。