トップ «前の日記(2003年11月14日) 最新 次の日記(2003年11月19日)» 編集
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2003年11月16日 晴れ

PIC12F675

ネット上の文献や先輩諸兄の情報を元にPIC12F675のライターを作った。JDMライターと呼ばれるCOMポートに接続するライターが電源要らずで良いらしい。オリジナルのJDMライターに先輩諸兄が創意工夫を追加している。
http://cgi.biwa.ne.jp/~jr3roc/pic/ JR3ROCさん
http://osaka.cool.ne.jp/feng3/pgm6/pgm5_3.html FENG3さん
今回はF675を内部RCクロック発振モードで使う予定だが、オリジナルのJDMライターでは内部クロックモードにコンフィグレーションして書き込むと、次回書き込み器にPICをセットしたときにプログラムが走り出してしまい、2回目以降書き込みができないという不具合(制限仕様)があるらしい。詳しいことはFENG3さんが調べていただいて詳しく記載されているのだが簡単に言うとオリジナルのJDMライターではVddの制御をしていないので(常時通電)書き込み器にPICをつないだ瞬間に電源が供給されてプログラムが走り出してしまうという問題だ。対策としてはVpp/MCLR#信号の立ち上がり(Vpp供給)を待ってからVddを供給すればいいらしい。FENG3さんの解法ではフォトカプラを使ってVddの供給をコントロールし、フォトカプラの遅延時間を利用するアイディアが記載されていた。ただ、これだとフォトカプラ内のLED点灯電流がもったいないので(ただですら232C信号から電源をもらっているので)おいらはトランジスタ(2SA1015)とRC積分回路でVddの立ち上がりを遅延させた(点線囲い部分を追加)。JDMライターは232Cから電源をもらうためにかなり工夫されている。ネット上で公開されている回路図を自分的に理解するために一通り書き直してみた。まずPCのGNDレベルを仮想的に5Vとみたて、信号線の負電圧をコンデンサでチャージポンプしてGNDレベルを得ている。またTXの+/-の動きをチャージポンプして5.1Vツェナー,8.2Vツェナーを経由してVpp用の13Vを得ている。GNDとVppの間をテスターであたると最初は約5Vであるが、PCからシリアルポートに何かデータを出力するとVppが徐々に上昇していくのが観察できる。
一応この回路で書き込みも消去もベリファイも動いているのでよしとする。一点気になるのはQ2(2SC1815)のベースに制限抵抗が入っていないのだけど、これっていいのかな?オリジナルの回路がそうなってたので深追いしないことにするが、少し気になる。これは1Kくらいを入れたほうが良さそうに思う。あと赤色LEDの制限抵抗10Kは間違いではなく正しい。ここんとこVppが約13Vあるのと、このVpp電源のインピーダンスがかなり高いので暗めに設定した。↓この回路はすでにデジタル回路の様相をしていないけど、トランジスタは飽和領域で使っているのでデジタル回路だ(笑)しっかりした回路定数があるわけじゃないのでコンデンサの値も抵抗値も別に適当で良い。(1.5Kがなければ1Kでいいし)

PDF回路図
ご意見ありましたらお願いします。 <2003-11-21 R3の付近回路図小修正しました>

表と裏。あまり凝って小さくせずきわめて普通に作った(修正が楽なように)
将来的には18pinのPICにも対応できるように場所だけ作っておいた。
	list	p=12F675
	include "P12F675.INC"
;==============================
;PROGRAM
;==============================
	org 0
	goto START
;INTERRUPT
	org 0x004
	nop
START
	clrf	GPIO
	bsf		STATUS,5
	movlw	B'00111110
	movwf	TRISIO
	bcf		STATUS,5
LOOP
	bsf		GPIO,0	; GP0 <= 1
	bsf		GPIO,0
	bsf		GPIO,0
	bcf		GPIO,0	; GP0 <= 0
	goto	LOOP
END
っつー簡単なプログラムで矩形波を出してみると周期6usのきれいな矩形波が観測された。こんな小さなICでけなげにがんばってるんだなぁ。すごい。

追加

追加