PICを使う為にはPICにプログラムを書き込むプログラムライターが必要です。 安くて確実に書き込めるライターとして、秋月電子のPICプログラマキットは定評があり、 完成度も高いのでこれを購入し組み立てる事にしました。 このキットはプリント基板と実装部品それにライティングソフトが入っているが、 電源アダプターやパソコンと接続するケーブルは含まれていません。 電源とケーブルも専用の物が欲しかったので合わせて購入する事にしました。 パソコンとの接続はシリアルポートを使って行います。 IO-DATAのUSBシリアル変換機を使うとUSBポートからも接続出来るらしいが試したことがないので確かではない。 早速、組み立てサービスで付いてきたPIC16F84Aにサンプルプログラムを書き込んだりしてテストしていたら、 すぐにバージョンアップキット4が発売になった。 このキットは既存のファームウェアーが載ってるPICと交換する事で最新のファームウェアーにいつでも更新出来る便利なキットです。 ファームウェアーの更新はライティングソフトを秋月のHPからダウンロードする事で行え、最新のPICにも対応出来る様になります。 |
キットと言ってもソケットに差し込むピンを半田付けするだけで、基盤上の部品は全て実装済みです。 早速、組み立て既存のPICと交換、付属のCDに入っているソフトは使わずに秋月のHPから最新のソフトをダウンロードし、 ファームウェアーを最新の物に更新しました。 写真左が取り外した既存のPIC、もう使う事はないと思うが一応保管してある。 |
組み立てたライターを裸で保管すると壊す危険があるので収納ケースを用意する事にした。 ケースは100円ショップで見つけたタッパーを使い、仕切板を付けて下側に電源とシリアルケーブルが収納出来る様にした。 仕切り板の両端が出っ張るので、その部分に電源スイッチを付ける事にしました。 電源コネクタの極性切り替え用ジャンパー(JP1)からリード線を引き出し、スライドスイッチに接続しました。 |
PICアダプター 18ピン16FXX-SO 8ピン12CXX-SN.SM DIP変換用を作成 |
秋月のライターはゼロプレッシャーソケットが付いているが、
DIPパッケージ専用なので表面実装型パッケージのPICは直接ライティング出来ない。 小型軽量な表面実装型PICも使いたいので、ICソケットとエポキシ基盤を使ってアダプターを作った。 PICの押さえ板はアクリル板を使い2mmのポリねじで固定した。 PICパッケージの外形に合わせて窓抜きした板と窓無し板を重ね合わせて使い接触不良を防止する様にした。 エポキシ基盤はエッチングでパターンを作った。作り方は、荷造り用透明PPテープを基盤に貼りデザインナイフでカットして エッチングを行った。裏面はナットを半田付けするので、ねじ穴廻りを残す形でエッチングした。 完成したアダプターを使って16F84AのSOタイプにサンプルプログラムを書き込んでみた。 一発で問題なく書き込めた。 16F84Aは左側(U6)ソケットの下側合わせ、JP2の設定はオープン。 |
tokoさん開発の赤外線RC 3チャンネル受信機のプログラムを書き込んだ。 書き込みに使用したPICは、12C509A-04/SM タイプ。 PIC12C509Aの表面実装タイプはSM,SNの2種類があり、SMの方が幅広だがピンピッチはどちらもハーフサイズで同じ。 パッケージ巾の標準寸法は SM=5.28mm SN=3.9mmとなっている。 書き込みは右側(U7)ソケットの下側合わせ、JP2の設定は2-3となる。 最新のライターソフトは、書き込むPICを指定するとソケット設定を表示してくれるので分かりやすい。 この受信機は4MHzの内部クロックを使っているのでOSCCALの更正値をメモしておく事にした。 千石電商で購入。 |
||
内部RC オシレータ用の校正値を含む命令がプログラムメモリの最後に書かれてます。 校正値はリセットベクタにMOVLW XX の形で書き込みされます。 リセットが発生すると、その命令を実行するので、Wレジスタに校正値がロードされます。 従って、内部RC オシレータを校正する場合は、OSCCAL レジスタ(05h)に校正値を書き込めば良いわけです。 SPECIAL FUNCTION REGISTER 00h=INDF,01h=TMR0,02h=PCL,03h=STATUS,04h=FSR,05h=OSCCAL(bit7-bit2),06h=GPIO 従ってメモリー上の変数設定は07hから行う。 プログラム例 __CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC TEMP EQU 07H ;テンポラリー変数を07番地に設定 ORG 0 ;プログラムのスタート番地を設定 MOVWF OSCCAL ;内部クロックの更正値を書き込む |